aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc
diff options
context:
space:
mode:
authorAndres Lagar-Cavilla <andres@lagarcavilla.org>2011-12-01 14:56:43 +0000
committerAndres Lagar-Cavilla <andres@lagarcavilla.org>2011-12-01 14:56:43 +0000
commit94d32436e1fd68304252534f0df758d07c883c3a (patch)
treea996f372edbf901ccc142c699f37dd1abc6e3094 /tools/libxc
parent5e6ced1018bfc0811e15508d0c59f1cb6a86622a (diff)
downloadxen-94d32436e1fd68304252534f0df758d07c883c3a.tar.gz
xen-94d32436e1fd68304252534f0df758d07c883c3a.tar.bz2
xen-94d32436e1fd68304252534f0df758d07c883c3a.zip
Tools: Add libxc wrapper for p2m audit domctl
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'tools/libxc')
-rw-r--r--tools/libxc/xc_domain.c22
-rw-r--r--tools/libxc/xenctrl.h27
2 files changed, 49 insertions, 0 deletions
diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
index 5d2a4df1b3..306b2122bc 100644
--- a/tools/libxc/xc_domain.c
+++ b/tools/libxc/xc_domain.c
@@ -1472,6 +1472,28 @@ int xc_domain_debug_control(xc_interface *xc, uint32_t domid, uint32_t sop, uint
return do_domctl(xc, &domctl);
}
+int xc_domain_p2m_audit(xc_interface *xch,
+ uint32_t domid,
+ uint64_t *orphans_debug,
+ uint64_t *orphans_invalid,
+ uint64_t *m2p_bad,
+ uint64_t *p2m_bad)
+{
+ DECLARE_DOMCTL;
+ int rc;
+
+ domctl.cmd = XEN_DOMCTL_audit_p2m;
+ domctl.domain = domid;
+ rc = do_domctl(xch, &domctl);
+
+ *orphans_debug = domctl.u.audit_p2m.orphans_debug;
+ *orphans_invalid = domctl.u.audit_p2m.orphans_invalid;
+ *m2p_bad = domctl.u.audit_p2m.m2p_bad;
+ *p2m_bad = domctl.u.audit_p2m.p2m_bad;
+
+ return rc;
+}
+
int xc_domain_set_access_required(xc_interface *xch,
uint32_t domid,
unsigned int required)
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h
index ad94f46b9d..9e2a4373f4 100644
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -712,6 +712,33 @@ int xc_domain_setdebugging(xc_interface *xch,
unsigned int enable);
/**
+ * This function audits the (top level) p2m of a domain
+ * and returns the different error counts, if any.
+ *
+ * @parm xch a handle to an open hypervisor interface
+ * @parm domid the domain id whose top level p2m we
+ * want to audit
+ * @parm orphans_debug count of m2p entries for valid
+ * domain pages containing a debug value
+ * @parm orphans_invalid count of m2p entries for valid
+ * domain pages containing an invalid value
+ * @parm m2p_bad count of m2p entries mismatching the
+ * associated p2m entry for this domain
+ * @parm p2m_bad count of p2m entries for this domain
+ * mismatching the associated m2p entry
+ * return 0 on success, -1 on failure
+ * errno values on failure include:
+ * -ENOSYS: not implemented
+ * -EFAULT: could not copy results back to guest
+ */
+int xc_domain_p2m_audit(xc_interface *xch,
+ uint32_t domid,
+ uint64_t *orphans_debug,
+ uint64_t *orphans_invalid,
+ uint64_t *m2p_bad,
+ uint64_t *p2m_bad);
+
+/**
* This function sets or clears the requirement that an access memory
* event listener is required on the domain.
*