[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH] libacpi: Fix cross building x86 on arm


  • To: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 23 Aug 2022 17:45:14 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fFIesEOhJDnpoT0eqmVKnof/p1/Ej6WXm7rLsNC7Bh8=; b=eKWxzW2pmLtGtzZvufgzXkUMuwzT6uxOTOHe7xeJvrn/RYrnUdpv8O90x01RuSDh/CQZffoJGtzZnBDAZcTUSvGEfwyMr2El2YJ5NyrRkXYVk42qgIZZk1qlbb0eVpxwWEUg34IoEWIfeWbZCVDtuAL8nI61bqgdl/HewaHVGgcXaHcS+mwb6FJgco7o1iWY/oelZtHO93cutnd9aYMlEaDR9WgisZvBXmMVznFaHZ4P4LSDwPJ5efoJq5yCi2jVc30suwFZIVisZaOZ5pP5f6Ds9DssNujqvxMimSi3TBfjGpgeIpf4zIH8mYqCF3eSNC9QfJYL2ENYq0jF3WUA1Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GJbox1OU/GUAmEly7F68UVVCOpqyF1q20fcfzFB2O7TyWJRbiHLVSLsbw8Qw1OnLXzsAhzLea1dT1bQdGLhg+8aOEqY5My/7my13ssu7QSx4TEdCAa0KJLyrakI0lmp6n3aZClhQTWdmcxKKTKDzI+2NPqjppdoAMuVObqQPEj8QQs3/ofh47iknksQpQ7bIe3ZEUhrpP0+eqwWHdCJYVfBKW45ie/y9ySUcp8pXq1d58OV0a+0kzFX09iUNNmEcBsnFyuef2H3LsOPjhUa6+UktOOmoRJIeRrIpsWVLqK5oLK62LyT977brLjysC1OAs2J2dEphPLjQug5+ycYeCw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, "julien@xxxxxxx" <julien@xxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 23 Aug 2022 15:45:32 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 23.08.2022 17:09, Bertrand Marquis wrote:
>> On 23 Aug 2022, at 15:41, Bertrand Marquis <Bertrand.Marquis@xxxxxxx> wrote:
>>> On 23 Aug 2022, at 15:31, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>> On 23.08.2022 15:34, Bertrand Marquis wrote:
>>>>> On 23 Aug 2022, at 13:33, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>>> On 23.08.2022 12:24, Bertrand Marquis wrote:
>>>>>> --- a/tools/libacpi/mk_dsdt.c
>>>>>> +++ b/tools/libacpi/mk_dsdt.c
>>>>>> @@ -18,6 +18,16 @@
>>>>>> #include <stdlib.h>
>>>>>> #include <stdbool.h>
>>>>>> #if defined(CONFIG_X86)
>>>>>> +/*
>>>>>> + * When building on non x86 host, arch-x86/xen.h will include xen.h 
>>>>>> which will
>>>>>> + * try to include the arch xen.h (for example if built on arm, 
>>>>>> x86/xen.h will
>>>>>> + * include xen.h which will include arch-arm.h).
>>>>>> + * To prevent this effect, define x86 to have the proper sub arch 
>>>>>> included when
>>>>>> + * the compiler does not define it.
>>>>>> + */
>>>>>> +#if !(defined(__i386__) || defined(__x86_64__))
>>>>>> +#define __x86_64__
>>>>>> +#endif
>>>>>
>>>>> Besides being confusing this depends on the order of checks in xen.h.
>>>>>
>>>>>> #include <xen/arch-x86/xen.h>
>>>>>> #include <xen/hvm/hvm_info_table.h>
>>>>>> #elif defined(CONFIG_ARM_64)
>>>>>
>>>>> At the very least you will want to #undef the auxiliary define as soon
>>>>> as practically possible.
>>>>
>>>> Ack
>>>>
>>>>>
>>>>> But I think a different solution will want finding. Did you check what
>>>>> the #include is needed for, really? I've glanced through the file
>>>>> without being able to spot anything ... After all this is a build tool,
>>>>> which generally can't correctly use many of the things declared in the
>>>>> header.
>>>>
>>>> As stated in the comment after the commit message, this is not a good
>>>> solution but an hack.
>>>>
>>>> Now I do not completely agree here, the tool is not really the problem
>>>> but the headers are.
>>>
>>> Well - the issue is the tool depending on these headers.
>>
>> Yes but the tool itself cannot solve the issue, we need to have the values
>> in properly accessible headers.
>>
>>>
>>>> There is not such an issue on arm.
>>>
>>> Then why does the tool include xen/arch-arm.h for Arm64?
>>
>> Because this header defines the values required and as no such thing as 
>> include xen.h.
>> The point is on arm, the arch-arm.h header does not depend on per cpu 
>> defines.
>>
>>>
>>>> The tool needs at least:
>>>> HVM_MAX_VCPUS
>>>> XEN_ACPI_CPU_MAP
>>>> XEN_ACPI_CPU_MAP_LEN
>>>> XEN_ACPI_GPE0_CPUHP_BIT
>>>>
>>>> Which are defined in arch-x86/xen.h and hvm_info_table.h.
>>>>
>>>> I am not quite sure how to get those without the current include
>>>
>>> 1) Move those #define-s to a standalone header, which the ones
>>> currently defining them would simply include. The tool would then
>>> include _only_ this one header.
>>
>> Shouldn’t we try to unify a little bit what is done on arm and x86 here ?
>> Not only for this tool but in general in the public headers

Where possible I'm all for it.

>> I will try to reduce the problem a bit more to find what we would need to
>> pull out in a standalone header.
> 
> Only the 3 XEN_ACPI_ are needed

Yet XEN_ACPI_CPU_MAP_LEN drives from HVM_MAX_VCPUS.

> and those are in fact only used by mk_dsdt.c.

Well - that's the only thing we talk about here. Building target code
is fine to use the headers. Building code to run on the build system
is where the headers should not be used.

> How about moving those to a xen-acpi.h header and include that one in xen.h ?

In principle okay, if there wasn't the need for HVM_MAX_VCPUS. With a
suitable comment it may be okay to live there. I'd be curious what
others think.

> Other solution as those are only used in mk_dsdt, I could just define them 
> there …

Please let's try hard to avoid doing so.

>>> 2) Seddery on the headers, producing a local one to be used by the
>>> tool.
>>
>> You mean autogenerating something ? This would just move the problem.

Why?

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.