Mailing List Archive

[PATCH 2/5] x86/build: limit #include-ing by asm-offsets.c
This file has a long dependencies list and asm-offsets.h, generated from
it, has a long list of dependents. IOW if any of the former changes, all
of the latter will be rebuilt, even if there's no actual change to the
generated file. Therefore avoid including headers we don't actually need
(generally or configuration dependent).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -5,11 +5,13 @@
*/
#define COMPILE_OFFSETS

+#ifdef CONFIG_PERF_COUNTERS
#include <xen/perfc.h>
+#endif
#include <xen/sched.h>
-#include <xen/bitops.h>
+#ifdef CONFIG_PV
#include <compat/xen.h>
-#include <asm/fixmap.h>
+#endif
#include <asm/hardirq.h>
#include <xen/multiboot.h>
#include <xen/multiboot2.h>
@@ -101,7 +103,6 @@ void __dummy__(void)
#ifdef CONFIG_PV
OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.pv.is_32bit);
BLANK();
-#endif

OFFSET(VCPUINFO_upcall_pending, struct vcpu_info, evtchn_upcall_pending);
OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
@@ -110,6 +111,7 @@ void __dummy__(void)
OFFSET(COMPAT_VCPUINFO_upcall_pending, struct compat_vcpu_info, evtchn_upcall_pending);
OFFSET(COMPAT_VCPUINFO_upcall_mask, struct compat_vcpu_info, evtchn_upcall_mask);
BLANK();
+#endif

OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
Re: [PATCH 2/5] x86/build: limit #include-ing by asm-offsets.c [ In reply to ]
On Wed, Nov 25, 2020 at 09:49:21AM +0100, Jan Beulich wrote:
> This file has a long dependencies list and asm-offsets.h, generated from
> it, has a long list of dependents. IOW if any of the former changes, all
> of the latter will be rebuilt, even if there's no actual change to the
> generated file. Therefore avoid including headers we don't actually need
> (generally or configuration dependent).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/xen/arch/x86/x86_64/asm-offsets.c
> +++ b/xen/arch/x86/x86_64/asm-offsets.c
> @@ -5,11 +5,13 @@
> */
> #define COMPILE_OFFSETS
>
> +#ifdef CONFIG_PERF_COUNTERS
> #include <xen/perfc.h>
> +#endif
> #include <xen/sched.h>
> -#include <xen/bitops.h>
> +#ifdef CONFIG_PV
> #include <compat/xen.h>
> -#include <asm/fixmap.h>
> +#endif
> #include <asm/hardirq.h>
> #include <xen/multiboot.h>
> #include <xen/multiboot2.h>
> @@ -101,7 +103,6 @@ void __dummy__(void)
> #ifdef CONFIG_PV
> OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.pv.is_32bit);
> BLANK();
> -#endif
>
> OFFSET(VCPUINFO_upcall_pending, struct vcpu_info, evtchn_upcall_pending);
> OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
> @@ -110,6 +111,7 @@ void __dummy__(void)
> OFFSET(COMPAT_VCPUINFO_upcall_pending, struct compat_vcpu_info, evtchn_upcall_pending);
> OFFSET(COMPAT_VCPUINFO_upcall_mask, struct compat_vcpu_info, evtchn_upcall_mask);
> BLANK();
> +#endif

Since you are playing with this, the TRAPINFO/TRAPBOUNCE also seem
like ones to gate with CONFIG_PV. And the VCPU_svm/vmx could be gated
on CONFIG_HVM AFAICT?

Thanks, Roger.
Re: [PATCH 2/5] x86/build: limit #include-ing by asm-offsets.c [ In reply to ]
On 28.12.2020 13:54, Roger Pau Monné wrote:
> On Wed, Nov 25, 2020 at 09:49:21AM +0100, Jan Beulich wrote:
>> This file has a long dependencies list and asm-offsets.h, generated from
>> it, has a long list of dependents. IOW if any of the former changes, all
>> of the latter will be rebuilt, even if there's no actual change to the
>> generated file. Therefore avoid including headers we don't actually need
>> (generally or configuration dependent).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/arch/x86/x86_64/asm-offsets.c
>> +++ b/xen/arch/x86/x86_64/asm-offsets.c
>> @@ -5,11 +5,13 @@
>> */
>> #define COMPILE_OFFSETS
>>
>> +#ifdef CONFIG_PERF_COUNTERS
>> #include <xen/perfc.h>
>> +#endif
>> #include <xen/sched.h>
>> -#include <xen/bitops.h>
>> +#ifdef CONFIG_PV
>> #include <compat/xen.h>
>> -#include <asm/fixmap.h>
>> +#endif
>> #include <asm/hardirq.h>
>> #include <xen/multiboot.h>
>> #include <xen/multiboot2.h>
>> @@ -101,7 +103,6 @@ void __dummy__(void)
>> #ifdef CONFIG_PV
>> OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.pv.is_32bit);
>> BLANK();
>> -#endif
>>
>> OFFSET(VCPUINFO_upcall_pending, struct vcpu_info, evtchn_upcall_pending);
>> OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
>> @@ -110,6 +111,7 @@ void __dummy__(void)
>> OFFSET(COMPAT_VCPUINFO_upcall_pending, struct compat_vcpu_info, evtchn_upcall_pending);
>> OFFSET(COMPAT_VCPUINFO_upcall_mask, struct compat_vcpu_info, evtchn_upcall_mask);
>> BLANK();
>> +#endif
>
> Since you are playing with this, the TRAPINFO/TRAPBOUNCE also seem
> like ones to gate with CONFIG_PV. And the VCPU_svm/vmx could be gated
> on CONFIG_HVM AFAICT?

Maybe. I didn't want to make too big a first step.

Jan