Wrap the various tmem functions with the Kconfig generated CONFIG_TMEM option allowing users to build Xen without tmem support.
Signed-off-by: Doug Goldstein <car...@cardoe.com> Acked-by: Jan Beulich <jbeul...@suse.com> --- CC: Keir Fraser <k...@xen.org> CC: Jan Beulich <jbeul...@suse.com> CC: Andrew Cooper <andrew.coop...@citrix.com> CC: Konrad Rzeszutek Wilk <konrad.w...@oracle.com> change since v2: - actually do all the tweaks to the Makefile suggested by Jan changes from v1: - add description provided by Konrad (thanks!) - tweaks to Makefile suggested by Jan - other fixes suggested by Jan --- xen/arch/x86/x86_64/compat/entry.S | 4 ++++ xen/arch/x86/x86_64/entry.S | 4 ++++ xen/common/Kconfig | 10 ++++++++++ xen/common/Makefile | 8 +++++--- xen/include/xen/hypercall.h | 4 ++++ xen/include/xen/tmem.h | 26 ++++++++++++++++++++++++++ xen/include/xen/tmem_xen.h | 11 +++++++++++ 7 files changed, 64 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S index 927439d..5218f8a 100644 --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -345,6 +345,10 @@ compat_crash_page_fault: #define compat_kexec_op do_ni_hypercall #endif +#ifndef CONFIG_TMEM +#define do_tmem_op do_ni_hypercall +#endif + #ifndef CONFIG_XENOPROF #define compat_xenoprof_op do_ni_hypercall #endif diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index dd7f114..cab9763 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -681,6 +681,10 @@ ENTRY(exception_table) #define do_kexec_op do_ni_hypercall #endif +#ifndef CONFIG_TMEM +#define do_tmem_op do_ni_hypercall +#endif + #ifndef CONFIG_XENOPROF #define do_xenoprof_op do_ni_hypercall #endif diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 8fbc46d..39b0fa7 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -87,6 +87,16 @@ config LATE_HWDOM If unsure, say N. +# Enables transactional memory support +config TMEM + def_bool y + prompt "Transactional Memory Support" if EXPERT = "y" + ---help--- + Transcendent memory allows PV-aware guests to collaborate on memory + usage. Guests can 'swap' their memory to the hypervisor or have an + collective pool of memory shared across guests. The end result is + less memory usage by guests allowing higher guest density. + # Adds support for Xenoprof config XENOPROF def_bool y diff --git a/xen/common/Makefile b/xen/common/Makefile index 82625a5..77de27e 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -49,8 +49,6 @@ obj-y += sysctl.o obj-y += tasklet.o obj-y += time.o obj-y += timer.o -obj-y += tmem.o -obj-y += tmem_xen.o obj-y += trace.o obj-y += version.o obj-y += vm_event.o @@ -65,7 +63,11 @@ obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 obj-$(perfc) += perfc.o obj-$(crash_debug) += gdbstub.o -obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o tmem_xen.o xlat.o) +obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o xlat.o) + +tmem-y := tmem.o tmem_xen.o +tmem-$(CONFIG_COMPAT) += compat/tmem_xen.o +obj-$(CONFIG_TMEM) += $(tmem-y) subdir-$(CONFIG_X86) += hvm diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h index 26cb615..0c8ae0e 100644 --- a/xen/include/xen/hypercall.h +++ b/xen/include/xen/hypercall.h @@ -133,9 +133,13 @@ extern long do_xsm_op( XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_xsm_op); +#ifdef CONFIG_TMEM extern long do_tmem_op( XEN_GUEST_HANDLE_PARAM(tmem_op_t) uops); +#else +#define do_tmem_op do_ni_hypercall +#endif extern long do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg); diff --git a/xen/include/xen/tmem.h b/xen/include/xen/tmem.h index 32a542a..414a14d 100644 --- a/xen/include/xen/tmem.h +++ b/xen/include/xen/tmem.h @@ -11,9 +11,35 @@ struct xen_sysctl_tmem_op; +#ifdef CONFIG_TMEM extern int tmem_control(struct xen_sysctl_tmem_op *op); extern void tmem_destroy(void *); extern void *tmem_relinquish_pages(unsigned int, unsigned int); extern unsigned long tmem_freeable_pages(void); +#else +static inline int +tmem_control(struct xen_sysctl_tmem_op *op) +{ + return -ENOSYS; +} + +static inline void +tmem_destroy(void *p) +{ + return; +} + +static inline void * +tmem_relinquish_pages(unsigned int x, unsigned int y) +{ + return NULL; +} + +static inline unsigned long +tmem_freeable_pages(void) +{ + return 0; +} +#endif /* CONFIG_TMEM */ #endif /* __XEN_TMEM_H__ */ diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h index f516bbe..19ed835 100644 --- a/xen/include/xen/tmem_xen.h +++ b/xen/include/xen/tmem_xen.h @@ -63,6 +63,7 @@ static inline bool_t tmem_shared_auth(void) return opt_tmem_shared_auth; } +#ifdef CONFIG_TMEM extern bool_t opt_tmem; static inline bool_t tmem_enabled(void) { @@ -73,6 +74,16 @@ static inline void tmem_disable(void) { opt_tmem = 0; } +#else +static inline bool_t tmem_enabled(void) +{ + return 0; +} + +static inline void tmem_disable(void) +{ +} +#endif /* CONFIG_TMEM */ /* * Memory free page list management -- 2.4.10 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel