aboutsummaryrefslogtreecommitdiffstats
path: root/xen/xsm
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:46:43 +0000
committerDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-01-11 10:46:43 +0000
commita655abfd8a4bf03de9c9a8d820125be8323d64f8 (patch)
treed88e4bae8739dce5e0fd4e5c030a1dd6b8ddb2b0 /xen/xsm
parent0d7f18b01f69c6b89aa3654bd2b11e24f41aaf71 (diff)
downloadxen-a655abfd8a4bf03de9c9a8d820125be8323d64f8.tar.gz
xen-a655abfd8a4bf03de9c9a8d820125be8323d64f8.tar.bz2
xen-a655abfd8a4bf03de9c9a8d820125be8323d64f8.zip
tmem: add XSM hooks
This adds a pair of XSM hooks for tmem operations: xsm_tmem_op which controls any use of tmem, and xsm_tmem_control which allows use of the TMEM_CONTROL operations. By default, all domains can use tmem while only IS_PRIV domains can use control operations. Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/xsm')
-rw-r--r--xen/xsm/dummy.c2
-rw-r--r--xen/xsm/flask/hooks.c12
-rw-r--r--xen/xsm/flask/policy/access_vectors2
3 files changed, 16 insertions, 0 deletions
diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c
index e254251d15..22c66e534b 100644
--- a/xen/xsm/dummy.c
+++ b/xen/xsm/dummy.c
@@ -94,6 +94,8 @@ void xsm_fixup_ops (struct xsm_operations *ops)
set_to_dummy_if_null(ops, resource_setup_misc);
set_to_dummy_if_null(ops, page_offline);
+ set_to_dummy_if_null(ops, tmem_op);
+ set_to_dummy_if_null(ops, tmem_control);
set_to_dummy_if_null(ops, do_xsm_op);
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index f7309fd760..222ab3e651 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -1017,6 +1017,16 @@ static inline int flask_page_offline(uint32_t cmd)
}
}
+static inline int flask_tmem_op(void)
+{
+ return domain_has_xen(current->domain, XEN__TMEM_OP);
+}
+
+static inline int flask_tmem_control(void)
+{
+ return domain_has_xen(current->domain, XEN__TMEM_CONTROL);
+}
+
#ifdef CONFIG_X86
static int flask_shadow_control(struct domain *d, uint32_t op)
{
@@ -1456,6 +1466,8 @@ static struct xsm_operations flask_ops = {
.resource_setup_misc = flask_resource_setup_misc,
.page_offline = flask_page_offline,
+ .tmem_op = flask_tmem_op,
+ .tmem_control = flask_tmem_control,
.do_xsm_op = do_flask_op,
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
index caf65d2d89..7a7e253a93 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -35,6 +35,8 @@ class xen
lockprof
cpupool_op
sched_op
+ tmem_op
+ tmem_control
}
class domain