[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 3/3] tmem: allow tmem to be disabled with Kconfig



On Tue, Mar 15, 2016 at 03:18:50PM -0500, Doug Goldstein wrote:
> Wrap the various tmem functions with the Kconfig generated CONFIG_TMEM
> option allowing users to build Xen without tmem support.

I ended with this change on top of yours (which I will squash):

The 'bool "tmem" so that if I did make an change in .config
file it would still take effect even if I forgot XEN_CONFIG_EXPERT.

Otherwise it would keep on making it

CONFIG_TMEM=y
instead of the

# CONFIG_TMEM is not set.

which I wrote in the .config file.

From b9d173eb0e0e1274c784fde5580b119d6f7b4bdc Mon Sep 17 00:00:00 2001
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Wed, 16 Mar 2016 03:28:39 -0400
Subject: [PATCH] squash!     tmem: allow tmem to be disabled with Kconfig

---
 xen/common/Kconfig | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 39b0fa7..5bd8a84 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -87,16 +87,21 @@ config LATE_HWDOM
 
          If unsure, say N.
 
-# Enables transactional memory support
+# Enables transcendent memory support
 config TMEM
        def_bool y
-       prompt "Transactional Memory Support" if EXPERT = "y"
+       bool "tmem"
+       prompt "Transcendent 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.
 
+         You also have to enable it on the Xen commandline by using tmem=1
+
+         If unsure, say Y.
+
 # Adds support for Xenoprof
 config XENOPROF
        def_bool y
-- 
2.5.0

> 
> Signed-off-by: Doug Goldstein <cardoe@xxxxxxxxxx>
> ---
> CC: Keir Fraser <keir@xxxxxxx>
> CC: Jan Beulich <jbeulich@xxxxxxxx>
> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> 
> 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                |  9 ++++++---
>  xen/include/xen/hypercall.h        |  4 ++++
>  xen/include/xen/tmem.h             | 26 ++++++++++++++++++++++++++
>  xen/include/xen/tmem_xen.h         | 11 +++++++++++
>  7 files changed, 65 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..bc056de 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,12 @@ 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-y += 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@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.