In a number of cases I've noticed the x86 emulator, which is quite slow to build especially with not very new gcc, to re-build when having changed headers which I wouldn't have expected to be included there in the first place. Hence I've gone through the dependencies of that object file and tried to get rid of at least some of the very odd dependencies there. (Some are being addressed also be the separately sent mem-access and vm-event patches with a similar subject.) 1: HVM: reduce domain.h include dependencies 2: HVM: reduce vcpu.h include dependencies 3: HVM: reduce vpt.h include dependencies 4: HVM: reduce vpic.h include dependencies 5: HVM: reduce vioapic.h include dependencies 6: HVM: reduce vlapic.h include dependencies 7: HVM: reduce io.h include dependencies 8: HVM: reduce hvm.h include dependencies 9: reduce mce.h include dependencies v2: Address build issues in particular with XSM=y. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself. Put the ones needed into whichever other files actually need them. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- v2: Also make things build with XSM=y. --- a/xen/arch/x86/cpu/mcheck/vmce.c +++ b/xen/arch/x86/cpu/mcheck/vmce.c @@ -28,6 +28,7 @@ #include <xen/mm.h> #include <asm/hvm/save.h> #include <asm/processor.h> +#include <public/hvm/params.h> #include <public/sysctl.h> #include <asm/system.h> #include <asm/msr.h> --- a/xen/arch/x86/hvm/dm.c +++ b/xen/arch/x86/hvm/dm.c @@ -27,6 +27,8 @@ #include <xsm/xsm.h> +#include <public/hvm/hvm_op.h> + struct dmop_args { domid_t domid; unsigned int nr_bufs; --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -38,6 +38,7 @@ #include <public/arch-x86/hvm/start_info.h> #include <public/hvm/hvm_info_table.h> #include <public/hvm/hvm_vcpu.h> +#include <public/hvm/params.h> /* * Have the TSS cover the ISA port range, which makes it --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -26,6 +26,7 @@ #include <xen/event.h> #include <xen/trace.h> #include <xen/nospec.h> +#include <public/hvm/params.h> #define domain_vhpet(x) (&(x)->arch.hvm.pl_time->vhpet) #define vcpu_vhpet(x) (domain_vhpet((x)->domain)) --- a/xen/arch/x86/hvm/hypercall.c +++ b/xen/arch/x86/hvm/hypercall.c @@ -24,6 +24,9 @@ #include <asm/hvm/support.h> +#include <public/hvm/hvm_op.h> +#include <public/hvm/params.h> + static long hvm_memory_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { const struct vcpu *curr = current; --- a/xen/arch/x86/hvm/ioreq.c +++ b/xen/arch/x86/hvm/ioreq.c @@ -34,6 +34,7 @@ #include <asm/hvm/vmx/vmx.h> #include <public/hvm/ioreq.h> +#include <public/hvm/params.h> static void set_ioreq_server(struct domain *d, unsigned int id, struct hvm_ioreq_server *s) --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -26,6 +26,7 @@ #include <asm/hvm/domain.h> #include <asm/hvm/support.h> #include <asm/msi.h> +#include <public/hvm/params.h> bool hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq) { --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -28,6 +28,7 @@ #include <asm/hvm/support.h> #include <asm/current.h> #include <xen/trace.h> +#include <public/hvm/params.h> #define USEC_PER_SEC 1000000UL #define NS_PER_USEC 1000UL --- a/xen/arch/x86/hvm/viridian/private.h +++ b/xen/arch/x86/hvm/viridian/private.h @@ -4,6 +4,7 @@ #define X86_HVM_VIRIDIAN_PRIVATE_H #include <asm/hvm/save.h> +#include <public/hvm/params.h> int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx, uint64_t val); int viridian_synic_rdmsr(const struct vcpu *v, uint32_t idx, uint64_t *val); --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -22,6 +22,7 @@ #include <asm/event.h> #include <asm/apic.h> #include <asm/mc146818rtc.h> +#include <public/hvm/params.h> #define mode_is(d, name) \ ((d)->arch.hvm.params[HVM_PARAM_TIMER_MODE] == HVMPTM_##name) --- a/xen/arch/x86/msr.c +++ b/xen/arch/x86/msr.c @@ -28,6 +28,8 @@ #include <asm/msr.h> #include <asm/setup.h> +#include <public/hvm/params.h> + DEFINE_PER_CPU(uint32_t, tsc_aux); struct msr_policy __read_mostly raw_msr_policy, --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -76,6 +76,7 @@ #include <asm/hpet.h> #include <asm/vpmu.h> #include <public/arch-x86/cpuid.h> +#include <public/hvm/params.h> #include <asm/cpuid.h> #include <xsm/xsm.h> #include <asm/pv/traps.h> --- a/xen/common/vm_event.c +++ b/xen/common/vm_event.c @@ -29,6 +29,7 @@ #include <asm/monitor.h> #include <asm/vm_event.h> #include <xsm/xsm.h> +#include <public/hvm/params.h> /* for public/io/ring.h macros */ #define xen_mb() smp_mb() --- a/xen/include/asm-x86/hvm/domain.h +++ b/xen/include/asm-x86/hvm/domain.h @@ -20,20 +20,14 @@ #ifndef __ASM_X86_HVM_DOMAIN_H__ #define __ASM_X86_HVM_DOMAIN_H__ -#include <xen/iommu.h> -#include <asm/hvm/irq.h> -#include <asm/hvm/vpt.h> -#include <asm/hvm/vlapic.h> -#include <asm/hvm/vioapic.h> +#include <xen/list.h> +#include <xen/mm.h> +#include <xen/radix-tree.h> + #include <asm/hvm/io.h> -#include <asm/hvm/viridian.h> #include <asm/hvm/vmx/vmcs.h> #include <asm/hvm/svm/vmcb.h> -#include <asm/mem_sharing.h> -#include <public/grant_table.h> -#include <public/hvm/params.h> -#include <public/hvm/save.h> -#include <public/hvm/hvm_op.h> + #include <public/hvm/dm_op.h> struct hvm_ioreq_page { --- a/xen/include/asm-x86/hvm/nestedhvm.h +++ b/xen/include/asm-x86/hvm/nestedhvm.h @@ -22,6 +22,7 @@ #include <xen/types.h> /* for uintNN_t */ #include <xen/sched.h> /* for struct vcpu, struct domain */ #include <asm/hvm/vcpu.h> /* for vcpu_nestedhvm */ +#include <public/hvm/params.h> enum nestedhvm_vmexits { NESTEDHVM_VMEXIT_ERROR = 0, /* inject VMEXIT w/ invalid VMCB */ --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -17,6 +17,7 @@ #include <xen/sched.h> #include <xsm/xsm.h> +#include <public/hvm/params.h> /* Cannot use BUILD_BUG_ON here because the expressions we check are not * considered constant at compile time. Instead, rely on constant propagation to --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -28,7 +28,7 @@ #include <public/physdev.h> #include <public/platform.h> #include <public/version.h> - +#include <public/hvm/params.h> #include <public/xsm/flask_op.h> #include <avc.h> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
On 10/03/2020 15:48, Jan Beulich wrote: > Drop #include-s not needed by the header itself. Put the ones needed > into whichever other files actually need them. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > --- > v2: Also make things build with XSM=y. Looking better, but still got problems. xen_pv_console.c: In function ‘pv_console_init’: xen_pv_console.c:51:37: error: ‘HVM_PARAM_CONSOLE_PFN’ undeclared (first use in this function) r = xen_hypercall_hvm_get_param(HVM_PARAM_CONSOLE_PFN, &raw_pfn); ^~~~~~~~~~~~~~~~~~~~~ and shim.c: In function ‘pv_shim_fixup_e820’: shim.c:148:20: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in this function) MARK_PARAM_RAM(HVM_PARAM_STORE_PFN); ^ ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
On 11.03.2020 14:09, Andrew Cooper wrote: > On 10/03/2020 15:48, Jan Beulich wrote: >> Drop #include-s not needed by the header itself. Put the ones needed >> into whichever other files actually need them. >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> --- >> v2: Also make things build with XSM=y. > > Looking better, but still got problems. > > xen_pv_console.c: In function ‘pv_console_init’: > xen_pv_console.c:51:37: error: ‘HVM_PARAM_CONSOLE_PFN’ undeclared (first > use in this function) > r = xen_hypercall_hvm_get_param(HVM_PARAM_CONSOLE_PFN, &raw_pfn); > ^~~~~~~~~~~~~~~~~~~~~ > > and > > shim.c: In function ‘pv_shim_fixup_e820’: > shim.c:148:20: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in > this function) > MARK_PARAM_RAM(HVM_PARAM_STORE_PFN); Oh, so that's an XSM+shim config aiui; Among the sets of what I regularly test I have only an XSM one and a shim one. The funs of allowing too wide a variety of different configs ... In cases like this series here I really don't see how one is supposed to cover _all_ possible configs; randconfig builds won't help with this unless one would let them run until they've covered all possible ones. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
On 11/03/2020 15:22, Jan Beulich wrote: > On 11.03.2020 14:09, Andrew Cooper wrote: >> On 10/03/2020 15:48, Jan Beulich wrote: >>> Drop #include-s not needed by the header itself. Put the ones needed >>> into whichever other files actually need them. >>> >>> Signed-off-by: Jan Beulich <jbeulich@suse.com> >>> --- >>> v2: Also make things build with XSM=y. >> Looking better, but still got problems. >> >> xen_pv_console.c: In function ‘pv_console_init’: >> xen_pv_console.c:51:37: error: ‘HVM_PARAM_CONSOLE_PFN’ undeclared (first >> use in this function) >> r = xen_hypercall_hvm_get_param(HVM_PARAM_CONSOLE_PFN, &raw_pfn); >> ^~~~~~~~~~~~~~~~~~~~~ >> >> and >> >> shim.c: In function ‘pv_shim_fixup_e820’: >> shim.c:148:20: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in >> this function) >> MARK_PARAM_RAM(HVM_PARAM_STORE_PFN); > Oh, so that's an XSM+shim config aiui; Among the sets of what > I regularly test I have only an XSM one and a shim one. The funs > of allowing too wide a variety of different configs ... In cases > like this series here I really don't see how one is supposed to > cover _all_ possible configs; randconfig builds won't help with > this unless one would let them run until they've covered all > possible ones. This happens to be my default config. I wouldn't expect to be perfect even under weird combinations, but these aren't weird, and this is the kind of change that `make allyesconfig` is intended for. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
On 11.03.2020 14:09, Andrew Cooper wrote: > On 10/03/2020 15:48, Jan Beulich wrote: >> Drop #include-s not needed by the header itself. Put the ones needed >> into whichever other files actually need them. >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> --- >> v2: Also make things build with XSM=y. > > Looking better, but still got problems. > > xen_pv_console.c: In function ‘pv_console_init’: > xen_pv_console.c:51:37: error: ‘HVM_PARAM_CONSOLE_PFN’ undeclared (first > use in this function) > r = xen_hypercall_hvm_get_param(HVM_PARAM_CONSOLE_PFN, &raw_pfn); > ^~~~~~~~~~~~~~~~~~~~~ > > and > > shim.c: In function ‘pv_shim_fixup_e820’: > shim.c:148:20: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in > this function) > MARK_PARAM_RAM(HVM_PARAM_STORE_PFN); In a later reply (which I've lost due to mailbox problems) you've been suggesting allyesconfig. I'd been considering to use it indeed, but then forgot. Together with choices though I'm unconvinced this would provide broad enough coverage. I'd also similarly wonder whether allnoconfig might not be more telling, as it might result in fewer things getting included here and there. I'll make sure both build fine before sending v3, but I'm having trouble seeing how I would invoke these - neither the top level Makefile nor xen/Makefile look to permit its use right now. Have you found a way to successfully use these without first patching the tree? Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
> -----Original Message----- > From: Jan Beulich <jbeulich@suse.com> > Sent: 10 March 2020 15:48 > To: xen-devel@lists.xenproject.org > Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Wei Liu <wl@xen.org>; Roger Pau Monné > <roger.pau@citrix.com>; Paul Durrant <paul@xen.org>; Daniel de Graaf <dgdegra@tycho.nsa.gov>; Tamas K > Lengyel <tamas@tklengyel.com>; Petre Pircalabu <ppircalabu@bitdefender.com>; Alexandru Isaila > <aisaila@bitdefender.com> > Subject: [PATCH v2 1/9] x86/HVM: reduce domain.h include dependencies > > Drop #include-s not needed by the header itself. Put the ones needed > into whichever other files actually need them. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Paul Durrant <paul@xen.org> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself. Put the ones needed into whichever other files actually need them. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- v2: Re-base over changes to previous patch. --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -7,6 +7,7 @@ #include <asm/hvm/hvm.h> #include <asm/hvm/nestedhvm.h> #include <asm/hvm/svm/svm.h> +#include <asm/hvm/viridian.h> #include <asm/hvm/vmx/vmcs.h> #include <asm/paging.h> #include <asm/processor.h> --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -65,6 +65,7 @@ #include <asm/hvm/nestedhvm.h> #include <asm/hvm/monitor.h> #include <asm/hvm/ioreq.h> +#include <asm/hvm/viridian.h> #include <asm/hvm/vm_event.h> #include <asm/altp2m.h> #include <asm/mtrr.h> --- a/xen/arch/x86/hvm/hypercall.c +++ b/xen/arch/x86/hvm/hypercall.c @@ -23,6 +23,7 @@ #include <xen/nospec.h> #include <asm/hvm/support.h> +#include <asm/hvm/viridian.h> #include <public/hvm/hvm_op.h> #include <public/hvm/params.h> --- a/xen/arch/x86/hvm/viridian/private.h +++ b/xen/arch/x86/hvm/viridian/private.h @@ -4,6 +4,7 @@ #define X86_HVM_VIRIDIAN_PRIVATE_H #include <asm/hvm/save.h> +#include <asm/hvm/viridian.h> #include <public/hvm/params.h> int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx, uint64_t val); --- a/xen/arch/x86/msr.c +++ b/xen/arch/x86/msr.c @@ -25,6 +25,7 @@ #include <xen/sched.h> #include <asm/debugreg.h> +#include <asm/hvm/viridian.h> #include <asm/msr.h> #include <asm/setup.h> --- a/xen/include/asm-x86/hvm/vcpu.h +++ b/xen/include/asm-x86/hvm/vcpu.h @@ -20,9 +20,7 @@ #define __ASM_X86_HVM_VCPU_H__ #include <xen/tasklet.h> -#include <asm/hvm/io.h> #include <asm/hvm/vlapic.h> -#include <asm/hvm/viridian.h> #include <asm/hvm/vmx/vmcs.h> #include <asm/hvm/vmx/vvmx.h> #include <asm/hvm/svm/vmcb.h> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
> -----Original Message----- > From: Jan Beulich <jbeulich@suse.com> > Sent: 10 March 2020 15:49 > To: xen-devel@lists.xenproject.org > Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Wei Liu <wl@xen.org>; Roger Pau Monné > <roger.pau@citrix.com>; Paul Durrant <paul@xen.org> > Subject: [PATCH v2 2/9] x86/HVM: reduce vcpu.h include dependencies > > Drop #include-s not needed by the header itself. Put the ones needed > into whichever other files actually need them. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Paul Durrant <paul@xen.org> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/hvm/vpt.h +++ b/xen/include/asm-x86/hvm/vpt.h @@ -19,16 +19,9 @@ #ifndef __ASM_X86_HVM_VPT_H__ #define __ASM_X86_HVM_VPT_H__ -#include <xen/init.h> -#include <xen/lib.h> -#include <xen/time.h> -#include <xen/errno.h> -#include <xen/time.h> #include <xen/timer.h> #include <xen/list.h> -#include <asm/hvm/vpic.h> -#include <asm/hvm/irq.h> -#include <public/hvm/save.h> +#include <asm/hvm/hvm.h> /* * Abstract layer of periodic time, one short time. @@ -145,6 +138,7 @@ struct pl_time { /* platform time */ void pt_save_timer(struct vcpu *v); void pt_restore_timer(struct vcpu *v); int pt_update_irq(struct vcpu *v); +struct hvm_intack; void pt_intr_post(struct vcpu *v, struct hvm_intack intack); void pt_migrate(struct vcpu *v); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop an #include not needed by the header itself. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/hvm/vpic.h +++ b/xen/include/asm-x86/hvm/vpic.h @@ -27,7 +27,8 @@ #ifndef __ASM_X86_HVM_VPIC_H__ #define __ASM_X86_HVM_VPIC_H__ -#include <public/hvm/save.h> +struct domain; +struct vcpu; void vpic_irq_positive_edge(struct domain *d, int irq); void vpic_irq_negative_edge(struct domain *d, int irq); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop an #include not needed by the header itself. While verifying the header (now) builds standalone, I noticed an omission in a public header which gets taken care of here as well. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/hvm/vioapic.h +++ b/xen/include/asm-x86/hvm/vioapic.h @@ -25,7 +25,6 @@ #define __ASM_X86_HVM_VIOAPIC_H__ #include <xen/types.h> -#include <xen/smp.h> #include <public/hvm/save.h> #define VIOAPIC_VERSION_ID 0x11 /* IOAPIC version */ --- a/xen/include/public/arch-x86/hvm/save.h +++ b/xen/include/public/arch-x86/hvm/save.h @@ -26,6 +26,8 @@ #ifndef __XEN_PUBLIC_HVM_SAVE_X86_H__ #define __XEN_PUBLIC_HVM_SAVE_X86_H__ +#include "../../xen.h" + /* * Save/restore header: general info about the save file. */ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/hvm/vlapic.h +++ b/xen/include/asm-x86/hvm/vlapic.h @@ -21,8 +21,6 @@ #define __ASM_X86_HVM_VLAPIC_H__ #include <xen/tasklet.h> -#include <asm/msr.h> -#include <public/hvm/ioreq.h> #include <asm/hvm/vpt.h> #define vcpu_vlapic(x) (&(x)->arch.hvm.vlapic) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself as well as one include of the header which isn't needed. Put the one needed into the file actually requiring it. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/hvm/io.h +++ b/xen/include/asm-x86/hvm/io.h @@ -19,12 +19,8 @@ #ifndef __ASM_X86_HVM_IO_H__ #define __ASM_X86_HVM_IO_H__ -#include <xen/mm.h> #include <xen/pci.h> -#include <asm/hvm/vpic.h> -#include <asm/hvm/vioapic.h> #include <public/hvm/ioreq.h> -#include <public/event_channel.h> #define NR_IO_HANDLERS 32 --- a/xen/include/asm-x86/hvm/vcpu.h +++ b/xen/include/asm-x86/hvm/vcpu.h @@ -26,6 +26,7 @@ #include <asm/hvm/svm/vmcb.h> #include <asm/hvm/svm/nestedsvm.h> #include <asm/mtrr.h> +#include <public/hvm/ioreq.h> enum hvm_io_completion { HVMIO_no_completion, --- a/xen/include/asm-x86/hvm/vmx/vmcs.h +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h @@ -18,8 +18,6 @@ #ifndef __ASM_X86_HVM_VMX_VMCS_H__ #define __ASM_X86_HVM_VMX_VMCS_H__ -#include <asm/hvm/io.h> - extern void vmcs_dump_vcpu(struct vcpu *v); extern void setup_vmcs_dump(void); extern int vmx_cpu_up_prepare(unsigned int cpu); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
> From: Jan Beulich <jbeulich@suse.com> > Sent: Tuesday, March 10, 2020 11:51 PM > > Drop #include-s not needed by the header itself as well as one include > of the header which isn't needed. Put the one needed into the file > actually requiring it. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop #include-s not needed by the header itself, and add smaller scope ones instead. Put the ones needed into whichever other files actually need them. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- v2: Also make things build with PV_SHIM_EXCLUSIVE=y. --- a/xen/include/asm-x86/hvm/emulate.h +++ b/xen/include/asm-x86/hvm/emulate.h @@ -13,6 +13,7 @@ #define __ASM_X86_HVM_EMULATE_H__ #include <xen/err.h> +#include <xen/mm.h> #include <asm/hvm/hvm.h> #include <asm/x86_emulate.h> --- a/xen/include/asm-x86/hvm/hvm.h +++ b/xen/include/asm-x86/hvm/hvm.h @@ -20,12 +20,11 @@ #ifndef __ASM_X86_HVM_HVM_H__ #define __ASM_X86_HVM_HVM_H__ +#include <asm/alternative.h> +#include <asm/asm_defns.h> #include <asm/current.h> #include <asm/x86_emulate.h> #include <asm/hvm/asid.h> -#include <public/domctl.h> -#include <public/hvm/save.h> -#include <xen/mm.h> #ifdef CONFIG_HVM_FEP /* Permit use of the Forced Emulation Prefix in HVM guests */ @@ -326,6 +325,7 @@ int hvm_debug_op(struct vcpu *v, int32_t void hvm_toggle_singlestep(struct vcpu *v); void hvm_fast_singlestep(struct vcpu *v, uint16_t p2midx); +struct npfec; int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla, struct npfec npfec); --- a/xen/include/asm-x86/hvm/vmx/vmcs.h +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h @@ -18,6 +18,8 @@ #ifndef __ASM_X86_HVM_VMX_VMCS_H__ #define __ASM_X86_HVM_VMX_VMCS_H__ +#include <xen/mm.h> + extern void vmcs_dump_vcpu(struct vcpu *v); extern void setup_vmcs_dump(void); extern int vmx_cpu_up_prepare(unsigned int cpu); --- a/xen/include/asm-x86/hvm/vpt.h +++ b/xen/include/asm-x86/hvm/vpt.h @@ -21,6 +21,7 @@ #include <xen/timer.h> #include <xen/list.h> +#include <xen/rwlock.h> #include <asm/hvm/hvm.h> /* _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
> From: Jan Beulich <jbeulich@suse.com> > Sent: Tuesday, March 10, 2020 11:52 PM > > Drop #include-s not needed by the header itself, and add smaller scope > ones instead. Put the ones needed into whichever other files actually > need them. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
> -----Original Message----- > From: Jan Beulich <jbeulich@suse.com> > Sent: 10 March 2020 15:52 > To: xen-devel@lists.xenproject.org > Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Wei Liu <wl@xen.org>; Roger Pau Monné > <roger.pau@citrix.com>; Paul Durrant <paul@xen.org>; Kevin Tian <kevin.tian@intel.com>; Jun Nakajima > <jun.nakajima@intel.com> > Subject: [PATCH v2 8/9] x86/HVM: reduce hvm.h include dependencies > > Drop #include-s not needed by the header itself, and add smaller scope > ones instead. Put the ones needed into whichever other files actually > need them. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Paul Durrant <paul@xen.org> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Drop the public header #include as not needed by the header itself. Add one that was missing, and move all inside the inclusion guard. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/include/asm-x86/mce.h +++ b/xen/include/asm-x86/mce.h @@ -1,8 +1,9 @@ -#include <xen/types.h> -#include <public/arch-x86/xen-mca.h> #ifndef _XEN_X86_MCE_H #define _XEN_X86_MCE_H +#include <xen/spinlock.h> +#include <xen/types.h> + /* * Emulate 2 banks for guest * Bank0: reserved for 'bank0 quirk' occur at some very old processors: @@ -32,6 +33,9 @@ struct vmce { struct vmce_bank bank[GUEST_MC_BANK_NUM]; }; +struct domain; +struct vcpu; + /* Guest vMCE MSRs virtualization */ extern void vmce_init_vcpu(struct vcpu *); extern int vmce_restore_vcpu(struct vcpu *, const struct hvm_vmce_vcpu *); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
© 2016 - 2024 Red Hat, Inc.