Hi Jan,

> On 23 Aug 2022, at 13:33, Jan Beulich <jbeul...@suse.com> 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. There is not such an issue on arm.

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

> 
>> diff --git a/xen/include/public/arch-x86/xen.h 
>> b/xen/include/public/arch-x86/xen.h
>> index 58a1e87ee971..ea33a56eb6a0 100644
>> --- a/xen/include/public/arch-x86/xen.h
>> +++ b/xen/include/public/arch-x86/xen.h
>> @@ -24,6 +24,7 @@
>>  * Copyright (c) 2004-2006, K A Fraser
>>  */
>> 
>> +/* TODO: when cross building, this will include the wrong arch header */
>> #include "../xen.h"
> 
> I'm firmly against adding such a comment in a public header, the more
> that it's misleading: Cross-building of Xen, for example, works quite
> fine. The issue is limited to HOSTCC != CC (or yet more precisely the
> target architecture of each), afaict.

Point was the todo was more to show where the issue is coming from.
I am really ok to remove this.

Cheers
Bertrand

> 
> Jan


Reply via email to