Re: [Xen-devel] [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
>>> On 15.03.16 at 20:04, wrote: > On 3/15/16 3:31 AM, Jan Beulich wrote: > On 14.03.16 at 21:29, wrote: >>> --- a/xen/arch/x86/hvm/hvm.c >>> +++ b/xen/arch/x86/hvm/hvm.c >>> @@ -5311,6 +5311,10 @@ typedef unsigned long hvm_hypercall_t( >>> #define compat_grant_table_op hvm_grant_table_op_compat32 >>> #define do_arch_1 paging_domctl_continuation >>> >>> +#ifndef CONFIG_TMEM >>> +#define do_tmem_op do_ni_hypercall >>> +#endif >> >> This being repeated in 3 places, wouldn't be better to put this in, >> say, xen/hypercall.h, next to the function declaration? > > Actually I tried this and it doesn't compile because that header isn't > included. Including that header into the relevant files (entry.S) > doesn't work either. Got a different suggestion? Well, if the header can't be used in assembly files, so be it (for now at least, as mentioned by Andrew on IRC). But this then still calls for the #define to go into the header for the C source(s) sake. Jan ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
On 3/15/16 3:31 AM, Jan Beulich wrote: On 14.03.16 at 21:29, wrote: >> --- a/xen/arch/x86/hvm/hvm.c >> +++ b/xen/arch/x86/hvm/hvm.c >> @@ -5311,6 +5311,10 @@ typedef unsigned long hvm_hypercall_t( >> #define compat_grant_table_op hvm_grant_table_op_compat32 >> #define do_arch_1 paging_domctl_continuation >> >> +#ifndef CONFIG_TMEM >> +#define do_tmem_op do_ni_hypercall >> +#endif > > This being repeated in 3 places, wouldn't be better to put this in, > say, xen/hypercall.h, next to the function declaration? > Actually I tried this and it doesn't compile because that header isn't included. Including that header into the relevant files (entry.S) doesn't work either. Got a different suggestion? -- Doug Goldstein signature.asc Description: OpenPGP digital signature ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
On 3/15/16 3:31 AM, Jan Beulich wrote: On 14.03.16 at 21:29, wrote: >> --- a/xen/arch/x86/hvm/hvm.c >> +++ b/xen/arch/x86/hvm/hvm.c >> @@ -5311,6 +5311,10 @@ typedef unsigned long hvm_hypercall_t( >> #define compat_grant_table_op hvm_grant_table_op_compat32 >> #define do_arch_1 paging_domctl_continuation >> >> +#ifndef CONFIG_TMEM >> +#define do_tmem_op do_ni_hypercall >> +#endif > > This being repeated in 3 places, wouldn't be better to put this in, > say, xen/hypercall.h, next to the function declaration? We can do this but I'd like to move the other ones from entry.S into here as well in a follow on then. -- Doug Goldstein signature.asc Description: OpenPGP digital signature ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
>>> On 14.03.16 at 21:29, wrote: > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -5311,6 +5311,10 @@ typedef unsigned long hvm_hypercall_t( > #define compat_grant_table_op hvm_grant_table_op_compat32 > #define do_arch_1 paging_domctl_continuation > > +#ifndef CONFIG_TMEM > +#define do_tmem_op do_ni_hypercall > +#endif This being repeated in 3 places, wouldn't be better to put this in, say, xen/hypercall.h, next to the function declaration? > --- a/xen/common/Kconfig > +++ b/xen/common/Kconfig > @@ -87,6 +87,17 @@ config LATE_HWDOM > > If unsure, say N. > > +# Enables transactional memory support > +config TMEM > + bool "Transaction Memory Support" I think it should be "Transactional" here too. > + default y No EXPERT dependency? > + ---help--- > + fill me out Indeed. > +config TMEM_COMPAT > + bool > + default y if COMPAT && TMEM I don't see the need for such an extra symbol: > --- a/xen/common/Makefile > +++ b/xen/common/Makefile > @@ -49,8 +49,8 @@ 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-$(CONFIG_TMEM) += tmem.o > +obj-$(CONFIG_TMEM) += tmem_xen.o > obj-y += trace.o > obj-y += version.o > obj-y += vm_event.o > @@ -65,7 +65,8 @@ 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) > +obj-$(CONFIG_TMEM_COMPAT) += compat/tmem_xen.o tmem-y := tmem.o tmem_xen.o tmem-$(CONFIG_COMPAT) += compat/tmem_xen.o obj-$(CONFIG_TMEM) += $(tmem-y) or some such would have the same effect. Jan ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
[Xen-devel] [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
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 --- CC: Keir Fraser CC: Jan Beulich CC: Andrew Cooper CC: Konrad Rzeszutek Wilk --- xen/arch/x86/hvm/hvm.c | 4 xen/arch/x86/x86_64/compat/entry.S | 4 xen/arch/x86/x86_64/entry.S| 4 xen/common/Kconfig | 11 +++ xen/common/Makefile| 7 --- 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/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 255a1d6..e05a4d9 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -5311,6 +5311,10 @@ typedef unsigned long hvm_hypercall_t( #define compat_grant_table_op hvm_grant_table_op_compat32 #define do_arch_1 paging_domctl_continuation +#ifndef CONFIG_TMEM +#define do_tmem_op do_ni_hypercall +#endif + static const struct { hvm_hypercall_t *native; hvm_hypercall_t *compat; 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..24eb60b 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -87,6 +87,17 @@ config LATE_HWDOM If unsure, say N. +# Enables transactional memory support +config TMEM + bool "Transaction Memory Support" + default y + ---help--- + fill me out + +config TMEM_COMPAT + bool + default y if COMPAT && TMEM + # Adds support for Xenoprof config XENOPROF def_bool y diff --git a/xen/common/Makefile b/xen/common/Makefile index 82625a5..8a3c87a 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -49,8 +49,8 @@ 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-$(CONFIG_TMEM) += tmem.o +obj-$(CONFIG_TMEM) += tmem_xen.o obj-y += trace.o obj-y += version.o obj-y += vm_event.o @@ -65,7 +65,8 @@ 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) +obj-$(CONFIG_TMEM_COMPAT) += compat/tmem_xen.o subdir-$(CONFIG_X86) += hvm 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 b95bde9..33f75e0 100644 --- a/xen/include/xen/tmem_xen.h +++ b/xen/include/xen/tmem_xen.h @@ -64,6 +64,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) { @@ -74,6 +75,16 @@ static inline void tmem_disable(void) { opt_tmem = 0; } +#else +static inline bool_t tmem_enabled(void) +{ +return false; +} + +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