* [PATCH 0 of 5] Memory sharing overhaul part 2
@ 2011-12-08 13:54 Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 1 of 5] Add a shared page to the physmap Andres Lagar-Cavilla
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
(Sigh, the previous pachbomb got truncated by an smtp quota in my
provider... remaining patches in this series)
This patch series proposes an overhaul of the memory sharing code.
Aside from bug fixes and cleanups, the main features are:
- Polling of stats via libxc, libxl and console
- Removal of global sharing hashtable and global sharing lock
(if audit disabled)
- Turned sharing audits into a domctl
- New domctl to populate vacant physmap entries with shared
pages.
As a result, the domctl interface to sharing changes. The only in-tree
consumer of this interface is updated in the current series. It is
important that if any out-of-tree consumer exists, that they state
their opinion on this interface change.
Patches 5 to 8, 10, 11, 15 and 18 are tools patches.
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Adin Scannell <adin@scannell.ca>
xen/arch/x86/mm/mem_sharing.c | 106 ++++++++++++++++++++++++++++++++++++++++++
xen/include/public/domctl.h | 3 +-
tools/libxc/xc_memshr.c | 23 +++++++++
tools/libxc/xenctrl.h | 6 ++
xen/arch/ia64/xen/mm.c | 6 ++
xen/arch/x86/mm/mem_sharing.c | 8 +++
xen/common/keyhandler.c | 7 +-
xen/include/xen/mm.h | 3 +
xen/arch/x86/mm/mem_sharing.c | 17 ++++-
xen/include/public/domctl.h | 1 +
tools/libxc/xc_memshr.c | 14 +++++
tools/libxc/xenctrl.h | 2 +
12 files changed, 188 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1 of 5] Add a shared page to the physmap
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
@ 2011-12-08 13:54 ` Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 2 of 5] Tools: Libxc wrappers to add shared pages to physmap Andres Lagar-Cavilla
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
xen/arch/x86/mm/mem_sharing.c | 106 ++++++++++++++++++++++++++++++++++++++++++
xen/include/public/domctl.h | 3 +-
2 files changed, 108 insertions(+), 1 deletions(-)
This domctl is useful to, for example, populate parts of a domain's
physmap with shared frames, directly.
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
diff -r 62ea5c05ae7b -r b8be3a08e628 xen/arch/x86/mm/mem_sharing.c
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -734,6 +734,76 @@ err_out:
return ret;
}
+int mem_sharing_add_to_physmap(struct domain *sd, unsigned long sgfn, shr_handle_t sh,
+ struct domain *cd, unsigned long cgfn)
+{
+ struct page_info *spage;
+ int ret = -EINVAL;
+ mfn_t smfn, cmfn;
+ p2m_type_t smfn_type, cmfn_type;
+ struct gfn_info *gfn_info;
+ struct p2m_domain *p2m = p2m_get_hostp2m(cd);
+ p2m_access_t a;
+
+ shr_lock();
+ p2m_lock(p2m);
+
+ /* XXX if sd == cd handle potential deadlock by ordering
+ * the get_ and put_gfn's */
+ smfn = get_gfn_query(sd, sgfn, &smfn_type);
+ cmfn = get_gfn_type_access(p2m, cgfn, &cmfn_type, &a, p2m_query, NULL);
+
+ /* Get the source shared page, check and lock */
+ ret = XEN_DOMCTL_MEM_SHARING_S_HANDLE_INVALID;
+ spage = __grab_shared_page(smfn);
+ if ( spage == NULL )
+ goto err_out;
+ ASSERT(smfn_type == p2m_ram_shared);
+
+ /* Check that the handles match */
+ if ( spage->shared_info->handle != sh )
+ goto err_unlock;
+
+ /* Make sure the target page is a hole in the physmap */
+ if ( mfn_valid(cmfn) ||
+ (!(p2m_is_ram(cmfn_type))) )
+ {
+ ret = XEN_DOMCTL_MEM_SHARING_C_HANDLE_INVALID;
+ goto err_unlock;
+ }
+
+ /* This is simpler than regular sharing */
+ BUG_ON(!get_page_and_type(spage, dom_cow, PGT_shared_page));
+ if ( (gfn_info = mem_sharing_gfn_alloc(spage, cd, cgfn)) == NULL )
+ {
+ put_page_and_type(spage);
+ ret = -ENOMEM;
+ goto err_unlock;
+ }
+
+ ret = set_p2m_entry(p2m, cgfn, smfn, PAGE_ORDER_4K, p2m_ram_shared, a);
+
+ /* Tempted to turn this into an assert */
+ if ( !ret ) {
+ ret = -ENOENT;
+ mem_sharing_gfn_destroy(gfn_info, 0);
+ put_page_and_type(spage);
+ } else {
+ atomic_inc(&cd->shr_pages);
+ atomic_inc(&nr_shared_mfns);
+ ret = 0;
+ }
+
+err_unlock:
+ mem_sharing_page_unlock(spage);
+err_out:
+ put_gfn(cd, cgfn);
+ put_gfn(sd, sgfn);
+ p2m_unlock(p2m);
+ shr_unlock();
+ return ret;
+}
+
int mem_sharing_unshare_page(struct domain *d,
unsigned long gfn,
uint16_t flags)
@@ -982,6 +1052,42 @@ int mem_sharing_domctl(struct domain *d,
}
break;
+ case XEN_DOMCTL_MEM_EVENT_OP_SHARING_ADD_PHYSMAP:
+ {
+ unsigned long sgfn, cgfn;
+ struct domain *cd;
+ shr_handle_t sh;
+
+ if ( !mem_sharing_enabled(d) )
+ return -EINVAL;
+
+ cd = get_domain_by_id(mec->u.share.client_domain);
+ if ( !cd )
+ return -ESRCH;
+
+ if ( !mem_sharing_enabled(cd) )
+ {
+ put_domain(cd);
+ return -EINVAL;
+ }
+
+ if ( XEN_DOMCTL_MEM_SHARING_FIELD_IS_GREF(mec->u.share.source_gfn) )
+ {
+ /* Cannot add a gref to the physmap */
+ put_domain(cd);
+ return -EINVAL;
+ }
+
+ sgfn = mec->u.share.source_gfn;
+ sh = mec->u.share.source_handle;
+ cgfn = mec->u.share.client_gfn;
+
+ rc = mem_sharing_add_to_physmap(d, sgfn, sh, cd, cgfn);
+
+ put_domain(cd);
+ }
+ break;
+
case XEN_DOMCTL_MEM_EVENT_OP_SHARING_RESUME:
{
if ( !mem_sharing_enabled(d) )
diff -r 62ea5c05ae7b -r b8be3a08e628 xen/include/public/domctl.h
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -771,6 +771,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_mem_e
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_GFN 5
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_MFN 6
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_GREF 7
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_ADD_PHYSMAP 8
#define XEN_DOMCTL_MEM_SHARING_S_HANDLE_INVALID (-10)
#define XEN_DOMCTL_MEM_SHARING_C_HANDLE_INVALID (-9)
@@ -797,7 +798,7 @@ struct xen_domctl_mem_sharing_op {
} u;
uint64_aligned_t handle; /* OUT: the handle */
} nominate;
- struct mem_sharing_op_share { /* OP_SHARE */
+ struct mem_sharing_op_share { /* OP_SHARE/ADD_PHYSMAP */
uint64_aligned_t source_gfn; /* IN: the gfn of the source page */
uint64_aligned_t source_handle; /* IN: handle to the source page */
uint64_aligned_t client_domain; /* IN: the client domain id */
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2 of 5] Tools: Libxc wrappers to add shared pages to physmap
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 1 of 5] Add a shared page to the physmap Andres Lagar-Cavilla
@ 2011-12-08 13:54 ` Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 3 of 5] Add the ability to poll stats about shared memory via the console Andres Lagar-Cavilla
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
tools/libxc/xc_memshr.c | 23 +++++++++++++++++++++++
tools/libxc/xenctrl.h | 6 ++++++
2 files changed, 29 insertions(+), 0 deletions(-)
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
diff -r b8be3a08e628 -r 14f08673af6a tools/libxc/xc_memshr.c
--- a/tools/libxc/xc_memshr.c
+++ b/tools/libxc/xc_memshr.c
@@ -86,6 +86,29 @@ int xc_memshr_nominate_gref(xc_interface
return ret;
}
+int xc_memshr_add_to_physmap(xc_interface *xch,
+ uint32_t source_domain,
+ uint64_t source_gfn,
+ uint64_t source_handle,
+ uint32_t client_domain,
+ uint64_t client_gfn)
+{
+ DECLARE_DOMCTL;
+ struct xen_domctl_mem_sharing_op *op;
+
+ domctl.cmd = XEN_DOMCTL_mem_sharing_op;
+ domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
+ domctl.domain = (domid_t) source_domain;
+ op = &(domctl.u.mem_sharing_op);
+ op->op = XEN_DOMCTL_MEM_EVENT_OP_SHARING_ADD_PHYSMAP;
+ op->u.share.source_gfn = source_gfn;
+ op->u.share.source_handle = source_handle;
+ op->u.share.client_gfn = client_gfn;
+ op->u.share.client_domain = (uint64_t) client_domain;
+
+ return do_domctl(xch, &domctl);
+}
+
int xc_memshr_share(xc_interface *xch,
uint32_t source_domain,
uint64_t source_gfn,
diff -r b8be3a08e628 -r 14f08673af6a tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -1895,6 +1895,12 @@ int xc_memshr_nominate_gref(xc_interface
uint32_t domid,
grant_ref_t gref,
uint64_t *handle);
+int xc_memshr_add_to_physmap(xc_interface *xch,
+ uint32_t source_domain,
+ uint64_t source_gfn,
+ uint64_t source_handle,
+ uint32_t client_domain,
+ uint64_t client_gfn);
int xc_memshr_share(xc_interface *xch,
uint32_t source_domain,
uint64_t source_gfn,
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3 of 5] Add the ability to poll stats about shared memory via the console
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 1 of 5] Add a shared page to the physmap Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 2 of 5] Tools: Libxc wrappers to add shared pages to physmap Andres Lagar-Cavilla
@ 2011-12-08 13:54 ` Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 4 of 5] Adds a separate domctl for performing sharing audits Andres Lagar-Cavilla
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
xen/arch/ia64/xen/mm.c | 6 ++++++
xen/arch/x86/mm/mem_sharing.c | 8 ++++++++
xen/common/keyhandler.c | 7 +++++--
xen/include/xen/mm.h | 3 +++
4 files changed, 22 insertions(+), 2 deletions(-)
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
diff -r 14f08673af6a -r 536da18b7ab6 xen/arch/ia64/xen/mm.c
--- a/xen/arch/ia64/xen/mm.c
+++ b/xen/arch/ia64/xen/mm.c
@@ -3565,6 +3565,12 @@ p2m_pod_decrease_reservation(struct doma
return 0;
}
+/* Simple no-op */
+void arch_dump_shared_mem_info(void)
+{
+ printk("Shared memory not supported yet\n");
+}
+
/*
* Local variables:
* mode: C
diff -r 14f08673af6a -r 536da18b7ab6 xen/arch/x86/mm/mem_sharing.c
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1129,6 +1129,14 @@ int mem_sharing_domctl(struct domain *d,
return rc;
}
+void arch_dump_shared_mem_info(void)
+{
+ printk("Shared pages %u -- Saved frames %u -- Dom CoW footprintf %u\n",
+ mem_sharing_get_nr_shared_mfns(),
+ mem_sharing_get_nr_saved_mfns(),
+ dom_cow->tot_pages);
+}
+
void __init mem_sharing_init(void)
{
printk("Initing memory sharing.\n");
diff -r 14f08673af6a -r 536da18b7ab6 xen/common/keyhandler.c
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -15,6 +15,7 @@
#include <xen/compat.h>
#include <xen/ctype.h>
#include <xen/perfc.h>
+#include <xen/mm.h>
#include <asm/debugger.h>
#include <asm/div64.h>
@@ -248,8 +249,8 @@ static void dump_domains(unsigned char k
printk(" refcnt=%d dying=%d pause_count=%d\n",
atomic_read(&d->refcnt), d->is_dying,
atomic_read(&d->pause_count));
- printk(" nr_pages=%d xenheap_pages=%d dirty_cpus=%s max_pages=%u\n",
- d->tot_pages, d->xenheap_pages, tmpstr, d->max_pages);
+ printk(" nr_pages=%d xenheap_pages=%d shared_pages=%u dirty_cpus=%s max_pages=%u\n",
+ d->tot_pages, d->xenheap_pages, atomic_read(&d->shr_pages), tmpstr, d->max_pages);
printk(" handle=%02x%02x%02x%02x-%02x%02x-%02x%02x-"
"%02x%02x-%02x%02x%02x%02x%02x%02x vm_assist=%08lx\n",
d->handle[ 0], d->handle[ 1], d->handle[ 2], d->handle[ 3],
@@ -308,6 +309,8 @@ static void dump_domains(unsigned char k
}
}
+ arch_dump_shared_mem_info();
+
rcu_read_unlock(&domlist_read_lock);
#undef tmpstr
}
diff -r 14f08673af6a -r 536da18b7ab6 xen/include/xen/mm.h
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -73,6 +73,9 @@ int assign_pages(
unsigned int order,
unsigned int memflags);
+/* Dump info to serial console */
+void arch_dump_shared_mem_info(void);
+
/* memflags: */
#define _MEMF_no_refcount 0
#define MEMF_no_refcount (1U<<_MEMF_no_refcount)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4 of 5] Adds a separate domctl for performing sharing audits
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
` (2 preceding siblings ...)
2011-12-08 13:54 ` [PATCH 3 of 5] Add the ability to poll stats about shared memory via the console Andres Lagar-Cavilla
@ 2011-12-08 13:54 ` Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 5 of 5] Tools: Libxc wrapper for the new sharing audit domctl Andres Lagar-Cavilla
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
xen/arch/x86/mm/mem_sharing.c | 17 ++++++++++++-----
xen/include/public/domctl.h | 1 +
2 files changed, 13 insertions(+), 5 deletions(-)
Sharing audits are heavyweight, so instead of performing them inline,
we make them callable via a domctl.
Signed-off-by: Adin Scannell <adin@scannell.ca>
diff -r 536da18b7ab6 -r a79bb54cb4dc xen/arch/x86/mm/mem_sharing.c
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -820,7 +820,6 @@ int mem_sharing_unshare_page(struct doma
* between shr_lock and p2m fine-grained locks in mm-lock.
* Callers may walk in here already holding the lock for this gfn */
shr_lock();
- mem_sharing_audit();
mfn = get_gfn(d, gfn, &p2mt);
/* Has someone already unshared it? */
@@ -1117,15 +1116,23 @@ int mem_sharing_domctl(struct domain *d,
}
break;
+ case XEN_DOMCTL_MEM_EVENT_OP_SHARING_AUDIT:
+ {
+#if MEM_SHARING_AUDIT
+ shr_lock();
+ rc = mem_sharing_audit();
+ shr_unlock();
+#else
+ rc = -ENOSYS;
+#endif
+ break;
+ }
+
default:
rc = -ENOSYS;
break;
}
- shr_lock();
- mem_sharing_audit();
- shr_unlock();
-
return rc;
}
diff -r 536da18b7ab6 -r a79bb54cb4dc xen/include/public/domctl.h
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -772,6 +772,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_mem_e
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_MFN 6
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DEBUG_GREF 7
#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_ADD_PHYSMAP 8
+#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_AUDIT 9
#define XEN_DOMCTL_MEM_SHARING_S_HANDLE_INVALID (-10)
#define XEN_DOMCTL_MEM_SHARING_C_HANDLE_INVALID (-9)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 5 of 5] Tools: Libxc wrapper for the new sharing audit domctl
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
` (3 preceding siblings ...)
2011-12-08 13:54 ` [PATCH 4 of 5] Adds a separate domctl for performing sharing audits Andres Lagar-Cavilla
@ 2011-12-08 13:54 ` Andres Lagar-Cavilla
2011-12-08 14:40 ` [PATCH 0 of 5] Memory sharing overhaul part 2 Jan Beulich
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 13:54 UTC (permalink / raw)
To: xen-devel
Cc: ian.campbell, andres, tim, keir.xen, JBeulich, ian.jackson, adin
tools/libxc/xc_memshr.c | 14 ++++++++++++++
tools/libxc/xenctrl.h | 2 ++
2 files changed, 16 insertions(+), 0 deletions(-)
Signed-off-by: Adin Scannell <adin@scannell.ca>
diff -r a79bb54cb4dc -r 6da10b110204 tools/libxc/xc_memshr.c
--- a/tools/libxc/xc_memshr.c
+++ b/tools/libxc/xc_memshr.c
@@ -211,3 +211,17 @@ int xc_memshr_debug_gref(xc_interface *x
return do_domctl(xch, &domctl);
}
+int xc_memshr_audit(xc_interface *xch,
+ uint32_t domid)
+{
+ DECLARE_DOMCTL;
+ struct xen_domctl_mem_sharing_op *op;
+
+ domctl.cmd = XEN_DOMCTL_mem_sharing_op;
+ domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
+ domctl.domain = (domid_t)domid;
+ op = &(domctl.u.mem_sharing_op);
+ op->op = XEN_DOMCTL_MEM_EVENT_OP_SHARING_AUDIT;
+
+ return do_domctl(xch, &domctl);
+}
diff -r a79bb54cb4dc -r 6da10b110204 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -1921,6 +1921,8 @@ int xc_memshr_debug_mfn(xc_interface *xc
int xc_memshr_debug_gref(xc_interface *xch,
uint32_t domid,
grant_ref_t gref);
+int xc_memshr_audit(xc_interface *xch,
+ uint32_t domid);
int xc_flask_load(xc_interface *xc_handle, char *buf, uint32_t size);
int xc_flask_context_to_sid(xc_interface *xc_handle, char *buf, uint32_t size, uint32_t *sid);
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0 of 5] Memory sharing overhaul part 2
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
` (4 preceding siblings ...)
2011-12-08 13:54 ` [PATCH 5 of 5] Tools: Libxc wrapper for the new sharing audit domctl Andres Lagar-Cavilla
@ 2011-12-08 14:40 ` Jan Beulich
2011-12-08 16:05 ` Andres Lagar-Cavilla
2011-12-08 14:46 ` Jan Beulich
2011-12-08 22:40 ` Tim Deegan
7 siblings, 1 reply; 10+ messages in thread
From: Jan Beulich @ 2011-12-08 14:40 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: xen-devel, ian.campbell, andres, tim, keir.xen, ian.jackson, adin
>>> On 08.12.11 at 14:54, Andres Lagar-Cavilla <andres@lagarcavilla.org> wrote:
>...
> xen/arch/x86/mm/mem_sharing.c | 106 ++++++++++++++++++++++++++++++++++++++++++
> xen/include/public/domctl.h | 3 +-
> tools/libxc/xc_memshr.c | 23 +++++++++
> tools/libxc/xenctrl.h | 6 ++
> xen/arch/ia64/xen/mm.c | 6 ++
> xen/arch/x86/mm/mem_sharing.c | 8 +++
> xen/common/keyhandler.c | 7 +-
> xen/include/xen/mm.h | 3 +
> xen/arch/x86/mm/mem_sharing.c | 17 ++++-
> xen/include/public/domctl.h | 1 +
> tools/libxc/xc_memshr.c | 14 +++++
> tools/libxc/xenctrl.h | 2 +
> 12 files changed, 188 insertions(+), 8 deletions(-)
As this isn't the first time with your patch submissions - I'm not sure what
you use to generate these stats, but in order to be useful I would
generally expect this to be a list with duplicate entries folded rather than
a mere concatenation of those from the individual patches (leaving doing
the arithmetic to the reader/reviewer).
Jan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0 of 5] Memory sharing overhaul part 2
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
` (5 preceding siblings ...)
2011-12-08 14:40 ` [PATCH 0 of 5] Memory sharing overhaul part 2 Jan Beulich
@ 2011-12-08 14:46 ` Jan Beulich
2011-12-08 22:40 ` Tim Deegan
7 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2011-12-08 14:46 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: xen-devel, ian.campbell, andres, tim, keir.xen, ian.jackson, adin
>>> On 08.12.11 at 14:54, Andres Lagar-Cavilla <andres@lagarcavilla.org> wrote:
> (Sigh, the previous pachbomb got truncated by an smtp quota in my
> provider... remaining patches in this series)
But you also didn't re-write the description for this shorter series:
> This patch series proposes an overhaul of the memory sharing code.
>
> Aside from bug fixes and cleanups, the main features are:
I wasn't able to spot any bug fixes or cleanups, and apart from
patch 3 all others merely add dead code. I'm therefore tempted to
nak 1, 2, 4, and 5 unless you come forward with code that actually
uses these new bits.
> - Polling of stats via libxc, libxl and console
> - Removal of global sharing hashtable and global sharing lock
> (if audit disabled)
> - Turned sharing audits into a domctl
> - New domctl to populate vacant physmap entries with shared
> pages.
>
> As a result, the domctl interface to sharing changes. The only in-tree
> consumer of this interface is updated in the current series. It is
> important that if any out-of-tree consumer exists, that they state
> their opinion on this interface change.
>
> Patches 5 to 8, 10, 11, 15 and 18 are tools patches.
There's no patch 8 and higher here.
Jan
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0 of 5] Memory sharing overhaul part 2
2011-12-08 14:40 ` [PATCH 0 of 5] Memory sharing overhaul part 2 Jan Beulich
@ 2011-12-08 16:05 ` Andres Lagar-Cavilla
0 siblings, 0 replies; 10+ messages in thread
From: Andres Lagar-Cavilla @ 2011-12-08 16:05 UTC (permalink / raw)
To: Jan Beulich
Cc: xen-devel, ian.campbell, andres, tim, keir.xen, ian.jackson, adin
>>>> On 08.12.11 at 14:54, Andres Lagar-Cavilla <andres@lagarcavilla.org>
>>>> wrote:
>>...
>> xen/arch/x86/mm/mem_sharing.c | 106
>> ++++++++++++++++++++++++++++++++++++++++++
>> xen/include/public/domctl.h | 3 +-
>> tools/libxc/xc_memshr.c | 23 +++++++++
>> tools/libxc/xenctrl.h | 6 ++
>> xen/arch/ia64/xen/mm.c | 6 ++
>> xen/arch/x86/mm/mem_sharing.c | 8 +++
>> xen/common/keyhandler.c | 7 +-
>> xen/include/xen/mm.h | 3 +
>> xen/arch/x86/mm/mem_sharing.c | 17 ++++-
>> xen/include/public/domctl.h | 1 +
>> tools/libxc/xc_memshr.c | 14 +++++
>> tools/libxc/xenctrl.h | 2 +
>> 12 files changed, 188 insertions(+), 8 deletions(-)
>
> As this isn't the first time with your patch submissions - I'm not sure
> what
> you use to generate these stats, but in order to be useful I would
> generally expect this to be a list with duplicate entries folded rather
> than
> a mere concatenation of those from the individual patches (leaving doing
> the arithmetic to the reader/reviewer).
I apologize. I am also frustrated by this. Hugely.
Andres
>
> Jan
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0 of 5] Memory sharing overhaul part 2
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
` (6 preceding siblings ...)
2011-12-08 14:46 ` Jan Beulich
@ 2011-12-08 22:40 ` Tim Deegan
7 siblings, 0 replies; 10+ messages in thread
From: Tim Deegan @ 2011-12-08 22:40 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: xen-devel, ian.campbell, andres, keir.xen, JBeulich, ian.jackson,
adin
At 08:54 -0500 on 08 Dec (1323334476), Andres Lagar-Cavilla wrote:
> (Sigh, the previous pachbomb got truncated by an smtp quota in my
> provider... remaining patches in this series)
I only got up to #12/18 in the previous round, so by my count I'm still
one short.
Cheers,
Tim.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-12-08 22:40 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-08 13:54 [PATCH 0 of 5] Memory sharing overhaul part 2 Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 1 of 5] Add a shared page to the physmap Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 2 of 5] Tools: Libxc wrappers to add shared pages to physmap Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 3 of 5] Add the ability to poll stats about shared memory via the console Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 4 of 5] Adds a separate domctl for performing sharing audits Andres Lagar-Cavilla
2011-12-08 13:54 ` [PATCH 5 of 5] Tools: Libxc wrapper for the new sharing audit domctl Andres Lagar-Cavilla
2011-12-08 14:40 ` [PATCH 0 of 5] Memory sharing overhaul part 2 Jan Beulich
2011-12-08 16:05 ` Andres Lagar-Cavilla
2011-12-08 14:46 ` Jan Beulich
2011-12-08 22:40 ` Tim Deegan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.