wait.c is only used by vm_event.c. Make CONFIG_VM_EVENT select CONFIG_WAIT, and use CONFIG_WAIT to control building it.
Provide stubs of functions called from common code. entry.S needs an ifdef to hide the symbol from the assembly. Also conditionalize .waitqueue_vcpu in struct vcpu to save space. Signed-off-by: Jason Andryuk <[email protected]> --- xen/arch/x86/x86_64/entry.S | 2 ++ xen/common/Kconfig | 4 ++++ xen/common/Makefile | 2 +- xen/include/xen/sched.h | 2 ++ xen/include/xen/wait.h | 11 +++++++++-- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index ca446c6ff0..adb570c07e 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -664,7 +664,9 @@ FUNC(continue_pv_domain) ALTERNATIVE "", "mov $2, %eax; incsspd %eax", X86_FEATURE_XEN_SHSTK #endif +#ifdef CONFIG_WAIT call check_wakeup_from_wait +#endif ret_from_intr: GET_CURRENT(bx) testb $3, UREGS_cs(%rsp) diff --git a/xen/common/Kconfig b/xen/common/Kconfig index d7e79e752a..ab3f24cb4f 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -173,10 +173,14 @@ config HAS_VMAP config LIBFDT bool +config WAIT + bool + config VM_EVENT bool "Memory Access and VM events" depends on HVM default X86 + select WAIT help Framework to configure memory access types for guests and receive diff --git a/xen/common/Makefile b/xen/common/Makefile index 4fc0c15088..ef2c5ddd4e 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -61,7 +61,7 @@ obj-y += virtual_region.o obj-$(CONFIG_VM_EVENT) += vm_event.o obj-$(CONFIG_HAS_VMAP) += vmap.o obj-y += vsprintf.o -obj-y += wait.o +obj-$(CONFIG_WAIT) += wait.o obj-bin-y += warning.init.o obj-y += xmalloc_tlsf.o diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 1268632344..f232f2731e 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -293,7 +293,9 @@ struct vcpu /* Multicall information. */ struct mc_state mc_state; +#ifdef CONFIG_WAIT struct waitqueue_vcpu *waitqueue_vcpu; +#endif struct evtchn_fifo_vcpu *evtchn_fifo; diff --git a/xen/include/xen/wait.h b/xen/include/xen/wait.h index 1c68bc564b..d7d83adef1 100644 --- a/xen/include/xen/wait.h +++ b/xen/include/xen/wait.h @@ -49,11 +49,18 @@ do { \ } while (0) /* Private functions. */ -int init_waitqueue_vcpu(struct vcpu *v); -void destroy_waitqueue_vcpu(struct vcpu *v); void prepare_to_wait(struct waitqueue_head *wq); void wait(void); void finish_wait(struct waitqueue_head *wq); + +#ifdef CONFIG_WAIT +int init_waitqueue_vcpu(struct vcpu *v); +void destroy_waitqueue_vcpu(struct vcpu *v); void check_wakeup_from_wait(void); +#else +static inline int init_waitqueue_vcpu(struct vcpu *v) { return 0; } +static inline void destroy_waitqueue_vcpu(struct vcpu *v) {} +static inline void check_wakeup_from_wait(void) {} +#endif #endif /* __XEN_WAIT_H__ */ -- 2.53.0
