xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Allow tmem to be disabled via Kconfig
@ 2016-03-14 20:29 Doug Goldstein
  2016-03-14 20:29 ` [PATCH 1/5] tmem: add tmem_disable() function Doug Goldstein
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Doug Goldstein

First swag at allowing tmem to be disabled via Kconfig. I've only build
tested this first version because I expect a bunch of feedback that will
necessitate changes and then v2 will hopefully be worth testing. The
first 4 patches can go in regardless of the final patch and are really
just cleanups.

Doug Goldstein (5):
  tmem: add tmem_disable() function
  tmem: drop direct usage of opt_tmem
  tmem: make tmem_freeable_pages() check tmem status
  tmem: don't assume stdbool.h is included
  tmem: allow tmem to be disabled with Kconfig

 xen/arch/x86/hvm/hvm.c             |  4 ++++
 xen/arch/x86/setup.c               |  6 +++---
 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/common/memory.c                |  2 +-
 xen/common/page_alloc.c            |  8 ++++----
 xen/common/tmem.c                  |  3 +++
 xen/include/xen/tmem.h             | 26 ++++++++++++++++++++++++++
 xen/include/xen/tmem_xen.h         | 17 +++++++++++++++++
 11 files changed, 81 insertions(+), 11 deletions(-)

-- 
2.4.10


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/5] tmem: add tmem_disable() function
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
@ 2016-03-14 20:29 ` Doug Goldstein
  2016-03-15  8:12   ` Jan Beulich
  2016-03-14 20:29 ` [PATCH 2/5] tmem: drop direct usage of opt_tmem Doug Goldstein
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Keir Fraser, Doug Goldstein, Jan Beulich, Andrew Cooper

Instead of manipulating the opt_tmem variable directly utilize a wrapper
function.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Keir Fraser <keir@xen.org>
CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 xen/arch/x86/setup.c       | 4 ++--
 xen/include/xen/tmem_xen.h | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 8431f06..5485468 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -25,7 +25,7 @@
 #include <xen/dmi.h>
 #include <xen/pfn.h>
 #include <xen/nodemask.h>
-#include <xen/tmem_xen.h> /* for opt_tmem only */
+#include <xen/tmem_xen.h>
 #include <xen/watchdog.h>
 #include <public/version.h>
 #include <compat/platform.h>
@@ -1247,7 +1247,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         {
            printk(XENLOG_WARNING
                   "TMEM physical RAM limit exceeded, disabling TMEM\n");
-           opt_tmem = 0;
+           tmem_disable();
         }
     }
     else
diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h
index c770f3e..f516bbe 100644
--- a/xen/include/xen/tmem_xen.h
+++ b/xen/include/xen/tmem_xen.h
@@ -69,6 +69,11 @@ static inline bool_t tmem_enabled(void)
     return opt_tmem;
 }
 
+static inline void tmem_disable(void)
+{
+    opt_tmem = 0;
+}
+
 /*
  * Memory free page list management
  */
-- 
2.4.10


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/5] tmem: drop direct usage of opt_tmem
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
  2016-03-14 20:29 ` [PATCH 1/5] tmem: add tmem_disable() function Doug Goldstein
@ 2016-03-14 20:29 ` Doug Goldstein
  2016-03-15  8:15   ` Jan Beulich
  2016-03-14 20:29 ` [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status Doug Goldstein
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Keir Fraser, Doug Goldstein, Jan Beulich, Andrew Cooper

Don't use the opt_tmem variable to check if tmem is enabled, instead use
the tmem_enabled() helper function everywhere.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Keir Fraser <keir@xen.org>
CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 xen/arch/x86/setup.c    | 2 +-
 xen/common/memory.c     | 2 +-
 xen/common/page_alloc.c | 8 ++++----
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 5485468..7181624 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1243,7 +1243,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
             init_domheap_pages(s, e);
         }
 
-        if ( opt_tmem )
+        if ( tmem_enabled() )
         {
            printk(XENLOG_WARNING
                   "TMEM physical RAM limit exceeded, disabling TMEM\n");
diff --git a/xen/common/memory.c b/xen/common/memory.c
index ef57219..c7fca96 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -202,7 +202,7 @@ static void populate_physmap(struct memop_args *a)
 
                 if ( unlikely(!page) )
                 {
-                    if ( !opt_tmem || a->extent_order )
+                    if ( !tmem_enabled() || a->extent_order )
                         gdprintk(XENLOG_INFO,
                                  "Could not allocate order=%u extent: id=%d memflags=%#x (%u of %u)\n",
                                  a->extent_order, d->domain_id, a->memflags,
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 22e8feb..1e6246e 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -652,7 +652,7 @@ static void __init setup_low_mem_virq(void)
 static void check_low_mem_virq(void)
 {
     unsigned long avail_pages = total_avail_pages +
-        (opt_tmem ? tmem_freeable_pages() : 0) - outstanding_claims;
+        (tmem_enabled() ? tmem_freeable_pages() : 0) - outstanding_claims;
 
     if ( unlikely(avail_pages <= low_mem_virq_th) )
     {
@@ -738,7 +738,7 @@ static struct page_info *alloc_heap_pages(
      * Others try tmem pools then fail.  This is a workaround until all
      * post-dom0-creation-multi-page allocations can be eliminated.
      */
-    if ( opt_tmem && ((order == 0) || (order >= 9)) &&
+    if ( tmem_enabled() && ((order == 0) || (order >= 9)) &&
          (total_avail_pages <= midsize_alloc_zone_pages) &&
          tmem_freeable_pages() )
         goto try_tmem;
@@ -984,7 +984,7 @@ static void free_heap_pages(
     avail[node][zone] += 1 << order;
     total_avail_pages += 1 << order;
 
-    if ( opt_tmem )
+    if ( tmem_enabled() )
         midsize_alloc_zone_pages = max(
             midsize_alloc_zone_pages, total_avail_pages / MIDSIZE_ALLOC_FRAC);
 
@@ -1755,7 +1755,7 @@ int assign_pages(
     {
         if ( unlikely((d->tot_pages + (1 << order)) > d->max_pages) )
         {
-            if ( !opt_tmem || order != 0 || d->tot_pages != d->max_pages )
+            if ( !tmem_enabled() || order != 0 || d->tot_pages != d->max_pages )
                 gprintk(XENLOG_INFO, "Over-allocation for domain %u: "
                         "%u > %u\n", d->domain_id,
                         d->tot_pages + (1 << order), d->max_pages);
-- 
2.4.10


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
  2016-03-14 20:29 ` [PATCH 1/5] tmem: add tmem_disable() function Doug Goldstein
  2016-03-14 20:29 ` [PATCH 2/5] tmem: drop direct usage of opt_tmem Doug Goldstein
@ 2016-03-14 20:29 ` Doug Goldstein
  2016-03-15  8:17   ` Jan Beulich
  2016-03-14 20:29 ` [PATCH 4/5] tmem: don't assume stdbool.h is included Doug Goldstein
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Doug Goldstein

Most callers of tmem_freeable_pages() checked to see if tmem was enabled
before calling tmem_freeable_pages() but not all of them did. This
seemed like an oversight and to avoid similar situations like that, stick
the check of tmem into tmem_freeable_pages().

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 xen/common/page_alloc.c | 4 ++--
 xen/common/tmem.c       | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 1e6246e..98e30e5 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -652,7 +652,7 @@ static void __init setup_low_mem_virq(void)
 static void check_low_mem_virq(void)
 {
     unsigned long avail_pages = total_avail_pages +
-        (tmem_enabled() ? tmem_freeable_pages() : 0) - outstanding_claims;
+        tmem_freeable_pages() - outstanding_claims;
 
     if ( unlikely(avail_pages <= low_mem_virq_th) )
     {
@@ -738,7 +738,7 @@ static struct page_info *alloc_heap_pages(
      * Others try tmem pools then fail.  This is a workaround until all
      * post-dom0-creation-multi-page allocations can be eliminated.
      */
-    if ( tmem_enabled() && ((order == 0) || (order >= 9)) &&
+    if ( ((order == 0) || (order >= 9)) &&
          (total_avail_pages <= midsize_alloc_zone_pages) &&
          tmem_freeable_pages() )
         goto try_tmem;
diff --git a/xen/common/tmem.c b/xen/common/tmem.c
index 0436e49..16e249a 100644
--- a/xen/common/tmem.c
+++ b/xen/common/tmem.c
@@ -2837,6 +2837,9 @@ void *tmem_relinquish_pages(unsigned int order, unsigned int memflags)
 
 unsigned long tmem_freeable_pages(void)
 {
+    if ( !tmem_enabled() )
+        return 0;
+
     return tmem_page_list_pages + _atomic_read(freeable_page_count);
 }
 
-- 
2.4.10


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/5] tmem: don't assume stdbool.h is included
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
                   ` (2 preceding siblings ...)
  2016-03-14 20:29 ` [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status Doug Goldstein
@ 2016-03-14 20:29 ` Doug Goldstein
  2016-03-15  8:23   ` Jan Beulich
  2016-03-14 20:29 ` [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig Doug Goldstein
  2016-03-14 20:46 ` [PATCH 0/5] Allow tmem to be disabled via Kconfig Konrad Rzeszutek Wilk
  5 siblings, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Doug Goldstein

tmem_xen.h assumes that all users will have already included stdbool.h
which might not always be true.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 xen/include/xen/tmem_xen.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h
index f516bbe..b95bde9 100644
--- a/xen/include/xen/tmem_xen.h
+++ b/xen/include/xen/tmem_xen.h
@@ -9,6 +9,7 @@
 #ifndef __XEN_TMEM_XEN_H__
 #define __XEN_TMEM_XEN_H__
 
+#include <xen/stdbool.h>
 #include <xen/mm.h> /* heap alloc/free */
 #include <xen/pfn.h>
 #include <xen/xmalloc.h> /* xmalloc/xfree */
-- 
2.4.10


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
                   ` (3 preceding siblings ...)
  2016-03-14 20:29 ` [PATCH 4/5] tmem: don't assume stdbool.h is included Doug Goldstein
@ 2016-03-14 20:29 ` Doug Goldstein
  2016-03-15  8:31   ` Jan Beulich
  2016-03-14 20:46 ` [PATCH 0/5] Allow tmem to be disabled via Kconfig Konrad Rzeszutek Wilk
  5 siblings, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-14 20:29 UTC (permalink / raw)
  To: xen-devel; +Cc: Keir Fraser, Doug Goldstein, Jan Beulich, Andrew Cooper

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 <cardoe@cardoe.com>
---
CC: Keir Fraser <keir@xen.org>
CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
 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

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 0/5] Allow tmem to be disabled via Kconfig
  2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
                   ` (4 preceding siblings ...)
  2016-03-14 20:29 ` [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig Doug Goldstein
@ 2016-03-14 20:46 ` Konrad Rzeszutek Wilk
  5 siblings, 0 replies; 15+ messages in thread
From: Konrad Rzeszutek Wilk @ 2016-03-14 20:46 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: xen-devel

On Mon, Mar 14, 2016 at 03:29:20PM -0500, Doug Goldstein wrote:
> First swag at allowing tmem to be disabled via Kconfig. I've only build
> tested this first version because I expect a bunch of feedback that will
> necessitate changes and then v2 will hopefully be worth testing. The
> first 4 patches can go in regardless of the final patch and are really
> just cleanups.

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

Let me first run them through regression bucket before commiting.

Thank you!
> 
> Doug Goldstein (5):
>   tmem: add tmem_disable() function
>   tmem: drop direct usage of opt_tmem
>   tmem: make tmem_freeable_pages() check tmem status
>   tmem: don't assume stdbool.h is included
>   tmem: allow tmem to be disabled with Kconfig
> 
>  xen/arch/x86/hvm/hvm.c             |  4 ++++
>  xen/arch/x86/setup.c               |  6 +++---
>  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/common/memory.c                |  2 +-
>  xen/common/page_alloc.c            |  8 ++++----
>  xen/common/tmem.c                  |  3 +++
>  xen/include/xen/tmem.h             | 26 ++++++++++++++++++++++++++
>  xen/include/xen/tmem_xen.h         | 17 +++++++++++++++++
>  11 files changed, 81 insertions(+), 11 deletions(-)
> 
> -- 
> 2.4.10
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/5] tmem: add tmem_disable() function
  2016-03-14 20:29 ` [PATCH 1/5] tmem: add tmem_disable() function Doug Goldstein
@ 2016-03-15  8:12   ` Jan Beulich
  0 siblings, 0 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-15  8:12 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: Andrew Cooper, Keir Fraser, xen-devel

>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> wrote:
> Instead of manipulating the opt_tmem variable directly utilize a wrapper
> function.
> 
> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>

Acked-by: Jan Beulich <jbeulich@suse.com>


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/5] tmem: drop direct usage of opt_tmem
  2016-03-14 20:29 ` [PATCH 2/5] tmem: drop direct usage of opt_tmem Doug Goldstein
@ 2016-03-15  8:15   ` Jan Beulich
  0 siblings, 0 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-15  8:15 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: Andrew Cooper, Keir Fraser, xen-devel

>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> wrote:
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -652,7 +652,7 @@ static void __init setup_low_mem_virq(void)
>  static void check_low_mem_virq(void)
>  {
>      unsigned long avail_pages = total_avail_pages +
> -        (opt_tmem ? tmem_freeable_pages() : 0) - outstanding_claims;
> +        (tmem_enabled() ? tmem_freeable_pages() : 0) - outstanding_claims;

Would seem more natural to simply have tmem_freeable_pages()
return zero when tmem is build-time disabled (the more that for
the build to not fail you need a stub for that function anyway).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status
  2016-03-14 20:29 ` [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status Doug Goldstein
@ 2016-03-15  8:17   ` Jan Beulich
  0 siblings, 0 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-15  8:17 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: xen-devel

>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> wrote:
> Most callers of tmem_freeable_pages() checked to see if tmem was enabled
> before calling tmem_freeable_pages() but not all of them did. This
> seemed like an oversight and to avoid similar situations like that, stick
> the check of tmem into tmem_freeable_pages().
> 
> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>

Ah, here we go. I think this should be folded into the previous
patch then, and when folded together the result can have my
ack.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] tmem: don't assume stdbool.h is included
  2016-03-14 20:29 ` [PATCH 4/5] tmem: don't assume stdbool.h is included Doug Goldstein
@ 2016-03-15  8:23   ` Jan Beulich
  0 siblings, 0 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-15  8:23 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: Julien Grall, xen-devel, Stefano Stabellini

>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> wrote:
> tmem_xen.h assumes that all users will have already included stdbool.h
> which might not always be true.

Wait, no - stdbool.h is not supposed to be included in code other
than such shared with the tool stack. I see ARM has gained some
of those (Julien, Stefano?), but adding more is not acceptable.
I.e. the adjustment, if any is needed (as I can't right away see
how things would build if there really was such a dependency,
and indeed neither .tmem.o.d nor .tmem_xen.o.d list any
stdbool.h as dependencies), would be to replace uses of bool,
true, and false (of which I can't find any in that header) by their
canonical hypervisor variants.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
  2016-03-14 20:29 ` [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig Doug Goldstein
@ 2016-03-15  8:31   ` Jan Beulich
  2016-03-15 18:28     ` Doug Goldstein
  2016-03-15 19:04     ` Doug Goldstein
  0 siblings, 2 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-15  8:31 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: Andrew Cooper, Keir Fraser, xen-devel

>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> 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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
  2016-03-15  8:31   ` Jan Beulich
@ 2016-03-15 18:28     ` Doug Goldstein
  2016-03-15 19:04     ` Doug Goldstein
  1 sibling, 0 replies; 15+ messages in thread
From: Doug Goldstein @ 2016-03-15 18:28 UTC (permalink / raw)
  To: Jan Beulich; +Cc: Andrew Cooper, Keir Fraser, xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 701 bytes --]

On 3/15/16 3:31 AM, Jan Beulich wrote:
>>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> 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


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
  2016-03-15  8:31   ` Jan Beulich
  2016-03-15 18:28     ` Doug Goldstein
@ 2016-03-15 19:04     ` Doug Goldstein
  2016-03-16  8:36       ` Jan Beulich
  1 sibling, 1 reply; 15+ messages in thread
From: Doug Goldstein @ 2016-03-15 19:04 UTC (permalink / raw)
  To: Jan Beulich; +Cc: Andrew Cooper, Keir Fraser, xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 789 bytes --]

On 3/15/16 3:31 AM, Jan Beulich wrote:
>>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> 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


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 959 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig
  2016-03-15 19:04     ` Doug Goldstein
@ 2016-03-16  8:36       ` Jan Beulich
  0 siblings, 0 replies; 15+ messages in thread
From: Jan Beulich @ 2016-03-16  8:36 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: Andrew Cooper, Keir Fraser, xen-devel

>>> On 15.03.16 at 20:04, <cardoe@cardoe.com> wrote:
> On 3/15/16 3:31 AM, Jan Beulich wrote:
>>>>> On 14.03.16 at 21:29, <cardoe@cardoe.com> 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

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-03-16  8:36 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-14 20:29 [PATCH 0/5] Allow tmem to be disabled via Kconfig Doug Goldstein
2016-03-14 20:29 ` [PATCH 1/5] tmem: add tmem_disable() function Doug Goldstein
2016-03-15  8:12   ` Jan Beulich
2016-03-14 20:29 ` [PATCH 2/5] tmem: drop direct usage of opt_tmem Doug Goldstein
2016-03-15  8:15   ` Jan Beulich
2016-03-14 20:29 ` [PATCH 3/5] tmem: make tmem_freeable_pages() check tmem status Doug Goldstein
2016-03-15  8:17   ` Jan Beulich
2016-03-14 20:29 ` [PATCH 4/5] tmem: don't assume stdbool.h is included Doug Goldstein
2016-03-15  8:23   ` Jan Beulich
2016-03-14 20:29 ` [PATCH 5/5] tmem: allow tmem to be disabled with Kconfig Doug Goldstein
2016-03-15  8:31   ` Jan Beulich
2016-03-15 18:28     ` Doug Goldstein
2016-03-15 19:04     ` Doug Goldstein
2016-03-16  8:36       ` Jan Beulich
2016-03-14 20:46 ` [PATCH 0/5] Allow tmem to be disabled via Kconfig Konrad Rzeszutek Wilk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).