Mailing List Archive

[PATCH 4 of 5] Adds a separate domctl for performing sharing audits
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)

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