|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v8 7/9] xen/arm: create shared memory nodes in guest device tree
Hi Luca,
On 09/09/2022 14:35, Luca Fancellu wrote:
>
>> On 9 Sep 2022, at 10:40, Bertrand Marquis <Bertrand.Marquis@xxxxxxx> wrote:
>>
>> Hi Julien,
>>
>>> On 9 Sep 2022, at 10:27, Julien Grall <julien@xxxxxxx> wrote:
>>>
>>> Hi,
>>>
>>> On 09/09/2022 08:45, Bertrand Marquis wrote:
>>>>>
>>>>> It should be:
>>>>>
>>>>> /*
>>>>> * TODO:
>>>>> *
>>>>>
>>>>> I think this is good to go. The two minor style issues could be fixed on
>>>>> commit. I haven't committed to give Julien & Bertrand another chance to
>>>>> have a look.
>>>> I think that it is ok to fix those on commit and I am ok with the rest so:
>>>> Reviewed-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
>>>
>>> This series doesn't build without !CONFIG_STATIC_SHM:
>>>
>>> UPD include/xen/compile.h
>>> Xen 4.17-unstable
>>> make[1]: Nothing to be done for `include'.
>>> make[1]: `arch/arm/include/asm/asm-offsets.h' is up to date.
>>> CC common/version.o
>>> LD common/built_in.o
>>> CC arch/arm/domain_build.o
>>> arch/arm/domain_build.c: In function ‘make_shm_memory_node’:
>>> arch/arm/domain_build.c:1445:1: error: no return statement in function
>>> returning non-void [-Werror=return-type]
>>> }
>>> ^
>>> cc1: all warnings being treated as errors
>>> make[2]: *** [arch/arm/domain_build.o] Error 1
>>> make[1]: *** [arch/arm] Error 2
>>> make: *** [xen] Error 2
>>>
>>> This is because...
>>>
>>>>>> + * - xen,offset: (borrower VMs only)
>>>>>> + * 64 bit integer offset within the owner virtual machine's
>>>>>> shared
>>>>>> + * memory region used for the mapping in the borrower VM
>>>>>> + */
>>>>>> + res = fdt_property_u64(fdt, "xen,offset", 0);
>>>>>> + if ( res )
>>>>>> + return res;
>>>>>> +
>>>>>> + res = fdt_end_node(fdt);
>>>>>> + if ( res )
>>>>>> + return res;
>>>>>> + }
>>>>>> +
>>>>>> + return res;
>>>>>> +}
>>>>>> +#else
>>>>>> +static int __init make_shm_memory_node(const struct domain *d,
>>>>>> + void *fdt,
>>>>>> + int addrcells, int sizecells,
>>>>>> + const struct meminfo *mem)
>>>>>> +{
>>>>>> + ASSERT_UNREACHABLE();
>>>
>>> ... there is a missing 'return -ENOTSUPP' here. While this is simple enough
>>> to fix, this indicates to me that this version was not tested with
>>> !CONFIG_STATIC_SHM.
>>>
>>> As this is the default option, I will not commit until I get confirmation
>>> that some smoke was done.
>>
>> This is a case our internal CI should have gone through.
>> Let me check and come back to you.
>>
>
> Hi Julien,
>
> Thanks for catching it, in this case I can confirm that the problem was that
> we are building with CONFIG_DEBUG enabled, I don’t know why GCC doesn’t
> complain when
> you have __builtin_unreachable() in that function without any return value,
> it doesn’t even throw a warning. Could it be considered a bug in GCC?
This is not a bug. The documentation states what is the purpose of it even in
case of functions returning type.
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
To sump up __builtin_unreachable generates code itself to return.
>
> Building Xen without CONFIG_DEBUG instead shows up the error you found.
>
> In this case this change will fix the problem, do you agree on it?
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 8c77c764bcf2..c5d66f18bd49 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1439,6 +1439,8 @@ static int __init make_shm_memory_node(const struct
> domain *d,
> const struct meminfo *mem)
> {
> ASSERT_UNREACHABLE();
> +
> + return -EOPNOTSUPP;
> }
> #endif
>
> Is it something that can be addressed on commit?
>
> Cheers,
> Luca
>
>
>> Regards
>> Bertrand
>>
>>>
>>> Cheers,
>>>
>>> --
>>> Julien Grall
>
~Michal
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |