[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC 02/16] Rename sysctl/domctl interface and xsm policy to make them general.



This patch renames sysctl/domctl interfaces and related xsm policy to
make them general but not only for CAT. Then, we can resuse the
interfaces for all allocation features.

Signed-off-by: Yi Sun <yi.y.sun@xxxxxxxxxxxxxxx>
---
 tools/flask/policy/modules/dom0.te  |  4 ++--
 tools/flask/policy/modules/xen.if   |  2 +-
 tools/libxc/xc_psr.c                | 34 +++++++++++++++++-----------------
 xen/arch/x86/domctl.c               | 36 ++++++++++++++++++------------------
 xen/arch/x86/sysctl.c               | 30 +++++++++++++++---------------
 xen/include/public/domctl.h         | 12 ++++++------
 xen/include/public/sysctl.h         | 12 ++++++------
 xen/xsm/flask/hooks.c               |  8 ++++----
 xen/xsm/flask/policy/access_vectors |  8 ++++----
 9 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/tools/flask/policy/modules/dom0.te 
b/tools/flask/policy/modules/dom0.te
index d0a4d91..1a376ac 100644
--- a/tools/flask/policy/modules/dom0.te
+++ b/tools/flask/policy/modules/dom0.te
@@ -14,7 +14,7 @@ allow dom0_t xen_t:xen {
        tmem_control getscheduler setscheduler
 };
 allow dom0_t xen_t:xen2 {
-       resource_op psr_cmt_op psr_cat_op pmu_ctrl get_symbol
+       resource_op psr_cmt_op psr_alloc_op pmu_ctrl get_symbol
        get_cpu_levelling_caps get_cpu_featureset livepatch_op
        gcov_op
 };
@@ -39,7 +39,7 @@ allow dom0_t dom0_t:domain {
 };
 allow dom0_t dom0_t:domain2 {
        set_cpuid gettsc settsc setscheduler set_max_evtchn set_vnumainfo
-       get_vnumainfo psr_cmt_op psr_cat_op
+       get_vnumainfo psr_cmt_op psr_alloc_op
 };
 allow dom0_t dom0_t:resource { add remove };
 
diff --git a/tools/flask/policy/modules/xen.if 
b/tools/flask/policy/modules/xen.if
index 1aca75d..1b69b43 100644
--- a/tools/flask/policy/modules/xen.if
+++ b/tools/flask/policy/modules/xen.if
@@ -52,7 +52,7 @@ define(`create_domain_common', `
                        settime setdomainhandle getvcpucontext set_misc_info };
        allow $1 $2:domain2 { set_cpuid settsc setscheduler setclaim
                        set_max_evtchn set_vnumainfo get_vnumainfo cacheflush
-                       psr_cmt_op psr_cat_op soft_reset };
+                       psr_cmt_op psr_alloc_op soft_reset };
        allow $1 $2:security check_context;
        allow $1 $2:shadow enable;
        allow $1 $2:mmu { map_read map_write adjust memorymap physmap pinpage 
mmuext_op updatemp };
diff --git a/tools/libxc/xc_psr.c b/tools/libxc/xc_psr.c
index 31c99da..0098a4d 100644
--- a/tools/libxc/xc_psr.c
+++ b/tools/libxc/xc_psr.c
@@ -274,11 +274,11 @@ int xc_psr_cat_set_domain_data(xc_interface *xch, 
uint32_t domid,
         return -1;
     }
 
-    domctl.cmd = XEN_DOMCTL_psr_cat_op;
+    domctl.cmd = XEN_DOMCTL_psr_alloc_op;
     domctl.domain = (domid_t)domid;
-    domctl.u.psr_cat_op.cmd = cmd;
-    domctl.u.psr_cat_op.target = target;
-    domctl.u.psr_cat_op.data = data;
+    domctl.u.psr_alloc_op.cmd = cmd;
+    domctl.u.psr_alloc_op.target = target;
+    domctl.u.psr_alloc_op.data = data;
 
     return do_domctl(xch, &domctl);
 }
@@ -310,15 +310,15 @@ int xc_psr_cat_get_domain_data(xc_interface *xch, 
uint32_t domid,
         return -1;
     }
 
-    domctl.cmd = XEN_DOMCTL_psr_cat_op;
+    domctl.cmd = XEN_DOMCTL_psr_alloc_op;
     domctl.domain = (domid_t)domid;
-    domctl.u.psr_cat_op.cmd = cmd;
-    domctl.u.psr_cat_op.target = target;
+    domctl.u.psr_alloc_op.cmd = cmd;
+    domctl.u.psr_alloc_op.target = target;
 
     rc = do_domctl(xch, &domctl);
 
     if ( !rc )
-        *data = domctl.u.psr_cat_op.data;
+        *data = domctl.u.psr_alloc_op.data;
 
     return rc;
 }
@@ -329,28 +329,28 @@ int xc_psr_cat_get_info(xc_interface *xch, uint32_t 
socket, unsigned int lvl,
     int rc = -1;
     DECLARE_SYSCTL;
 
-    sysctl.cmd = XEN_SYSCTL_psr_cat_op;
-    sysctl.u.psr_cat_op.target = socket;
+    sysctl.cmd = XEN_SYSCTL_psr_alloc_op;
+    sysctl.u.psr_alloc_op.target = socket;
 
     switch ( lvl ) {
     case 2:
-        sysctl.u.psr_cat_op.cmd = XEN_SYSCTL_PSR_CAT_get_l2_info;
+        sysctl.u.psr_alloc_op.cmd = XEN_SYSCTL_PSR_CAT_get_l2_info;
         rc = xc_sysctl(xch, &sysctl);
         if ( !rc )
         {
-            *cos_max = sysctl.u.psr_cat_op.u.l2_info.cos_max;
-            *cbm_len = sysctl.u.psr_cat_op.u.l2_info.cbm_len;
+            *cos_max = sysctl.u.psr_alloc_op.u.l2_info.cos_max;
+            *cbm_len = sysctl.u.psr_alloc_op.u.l2_info.cbm_len;
             *cdp_enabled = false;
         }
         break;
     case 3:
-        sysctl.u.psr_cat_op.cmd = XEN_SYSCTL_PSR_CAT_get_l3_info;
+        sysctl.u.psr_alloc_op.cmd = XEN_SYSCTL_PSR_CAT_get_l3_info;
         rc = xc_sysctl(xch, &sysctl);
         if ( !rc )
         {
-            *cos_max = sysctl.u.psr_cat_op.u.l3_info.cos_max;
-            *cbm_len = sysctl.u.psr_cat_op.u.l3_info.cbm_len;
-            *cdp_enabled = sysctl.u.psr_cat_op.u.l3_info.flags &
+            *cos_max = sysctl.u.psr_alloc_op.u.l3_info.cos_max;
+            *cbm_len = sysctl.u.psr_alloc_op.u.l3_info.cbm_len;
+            *cdp_enabled = sysctl.u.psr_alloc_op.u.l3_info.flags &
                            XEN_SYSCTL_PSR_CAT_L3_CDP;
         }
         break;
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 175350c..3b6534b 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1366,57 +1366,57 @@ long arch_do_domctl(
         }
         break;
 
-    case XEN_DOMCTL_psr_cat_op:
-        switch ( domctl->u.psr_cat_op.cmd )
+    case XEN_DOMCTL_psr_alloc_op:
+        switch ( domctl->u.psr_alloc_op.cmd )
         {
         case XEN_DOMCTL_PSR_CAT_OP_SET_L3_CBM:
-            ret = psr_set_val(d, domctl->u.psr_cat_op.target,
-                              domctl->u.psr_cat_op.data,
+            ret = psr_set_val(d, domctl->u.psr_alloc_op.target,
+                              domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3);
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_SET_L3_CODE:
-            ret = psr_set_val(d, domctl->u.psr_cat_op.target,
-                              domctl->u.psr_cat_op.data,
+            ret = psr_set_val(d, domctl->u.psr_alloc_op.target,
+                              domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3_CODE);
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_SET_L3_DATA:
-            ret = psr_set_val(d, domctl->u.psr_cat_op.target,
-                              domctl->u.psr_cat_op.data,
+            ret = psr_set_val(d, domctl->u.psr_alloc_op.target,
+                              domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3_DATA);
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_SET_L2_CBM:
-            ret = psr_set_val(d, domctl->u.psr_cat_op.target,
-                              domctl->u.psr_cat_op.data,
+            ret = psr_set_val(d, domctl->u.psr_alloc_op.target,
+                              domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L2);
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_GET_L3_CBM:
-            ret = psr_get_val(d, domctl->u.psr_cat_op.target,
-                              &domctl->u.psr_cat_op.data,
+            ret = psr_get_val(d, domctl->u.psr_alloc_op.target,
+                              &domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3);
             copyback = 1;
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_GET_L3_CODE:
-            ret = psr_get_val(d, domctl->u.psr_cat_op.target,
-                              &domctl->u.psr_cat_op.data,
+            ret = psr_get_val(d, domctl->u.psr_alloc_op.target,
+                              &domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3_CODE);
             copyback = 1;
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_GET_L3_DATA:
-            ret = psr_get_val(d, domctl->u.psr_cat_op.target,
-                              &domctl->u.psr_cat_op.data,
+            ret = psr_get_val(d, domctl->u.psr_alloc_op.target,
+                              &domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L3_DATA);
             copyback = 1;
             break;
 
         case XEN_DOMCTL_PSR_CAT_OP_GET_L2_CBM:
-            ret = psr_get_val(d, domctl->u.psr_cat_op.target,
-                              &domctl->u.psr_cat_op.data,
+            ret = psr_get_val(d, domctl->u.psr_alloc_op.target,
+                              &domctl->u.psr_alloc_op.data,
                               PSR_CBM_TYPE_L2);
             copyback = 1;
             break;
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index dede62c..cff56bb 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -172,20 +172,20 @@ long arch_do_sysctl(
 
         break;
 
-    case XEN_SYSCTL_psr_cat_op:
-        switch ( sysctl->u.psr_cat_op.cmd )
+    case XEN_SYSCTL_psr_alloc_op:
+        switch ( sysctl->u.psr_alloc_op.cmd )
         {
         case XEN_SYSCTL_PSR_CAT_get_l3_info:
         {
             uint32_t dat[3];
-            ret = psr_get_info(sysctl->u.psr_cat_op.target,
+            ret = psr_get_info(sysctl->u.psr_alloc_op.target,
                                PSR_CBM_TYPE_L3, dat, 3);
 
             if ( !ret )
             {
-                sysctl->u.psr_cat_op.u.l3_info.cbm_len = dat[CBM_LEN];
-                sysctl->u.psr_cat_op.u.l3_info.cos_max = dat[COS_MAX];
-                sysctl->u.psr_cat_op.u.l3_info.flags   = dat[CDP_FLAG];
+                sysctl->u.psr_alloc_op.u.l3_info.cbm_len = dat[CBM_LEN];
+                sysctl->u.psr_alloc_op.u.l3_info.cos_max = dat[COS_MAX];
+                sysctl->u.psr_alloc_op.u.l3_info.flags   = dat[CDP_FLAG];
             } else {
                 /*
                  * Check if CDP is enabled.
@@ -193,32 +193,32 @@ long arch_do_sysctl(
                  * Per spec, L3 CAT and CDP cannot co-exist. So, we need 
replace
                  * output values to CDP's if it is enabled.
                  */
-                ret = psr_get_info(sysctl->u.psr_cat_op.target,
+                ret = psr_get_info(sysctl->u.psr_alloc_op.target,
                                PSR_CBM_TYPE_L3_CODE, dat, 3);
                 if ( !ret )
                 {
-                    sysctl->u.psr_cat_op.u.l3_info.cbm_len = dat[CBM_LEN];
-                    sysctl->u.psr_cat_op.u.l3_info.cos_max = dat[COS_MAX];
-                    sysctl->u.psr_cat_op.u.l3_info.flags   = dat[CDP_FLAG];
+                    sysctl->u.psr_alloc_op.u.l3_info.cbm_len = dat[CBM_LEN];
+                    sysctl->u.psr_alloc_op.u.l3_info.cos_max = dat[COS_MAX];
+                    sysctl->u.psr_alloc_op.u.l3_info.flags   = dat[CDP_FLAG];
                 }
             }
 
-            if ( !ret && __copy_field_to_guest(u_sysctl, sysctl, u.psr_cat_op) 
)
+            if ( !ret && __copy_field_to_guest(u_sysctl, sysctl, 
u.psr_alloc_op) )
                 ret = -EFAULT;
             break;
         }
         case XEN_SYSCTL_PSR_CAT_get_l2_info:
         {
             uint32_t dat[2];
-            ret = psr_get_info(sysctl->u.psr_cat_op.target,
+            ret = psr_get_info(sysctl->u.psr_alloc_op.target,
                                PSR_CBM_TYPE_L2, dat, 2);
             if ( ret )
                 break;
 
-            sysctl->u.psr_cat_op.u.l2_info.cbm_len = dat[CBM_LEN];
-            sysctl->u.psr_cat_op.u.l2_info.cos_max = dat[COS_MAX];
+            sysctl->u.psr_alloc_op.u.l2_info.cbm_len = dat[CBM_LEN];
+            sysctl->u.psr_alloc_op.u.l2_info.cos_max = dat[COS_MAX];
 
-            if ( !ret && __copy_field_to_guest(u_sysctl, sysctl, u.psr_cat_op) 
)
+            if ( !ret && __copy_field_to_guest(u_sysctl, sysctl, 
u.psr_alloc_op) )
                 ret = -EFAULT;
             break;
         }
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 523a2cd..f5b1466 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1131,7 +1131,7 @@ struct xen_domctl_monitor_op {
 typedef struct xen_domctl_monitor_op xen_domctl_monitor_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_monitor_op_t);
 
-struct xen_domctl_psr_cat_op {
+struct xen_domctl_psr_alloc_op {
 #define XEN_DOMCTL_PSR_CAT_OP_SET_L3_CBM     0
 #define XEN_DOMCTL_PSR_CAT_OP_GET_L3_CBM     1
 #define XEN_DOMCTL_PSR_CAT_OP_SET_L3_CODE    2
@@ -1140,12 +1140,12 @@ struct xen_domctl_psr_cat_op {
 #define XEN_DOMCTL_PSR_CAT_OP_GET_L3_DATA    5
 #define XEN_DOMCTL_PSR_CAT_OP_SET_L2_CBM     6
 #define XEN_DOMCTL_PSR_CAT_OP_GET_L2_CBM     7
-    uint32_t cmd;       /* IN: XEN_DOMCTL_PSR_CAT_OP_* */
+    uint32_t cmd;       /* IN: XEN_DOMCTL_PSR_*_OP_* */
     uint32_t target;    /* IN */
     uint64_t data;      /* IN/OUT */
 };
-typedef struct xen_domctl_psr_cat_op xen_domctl_psr_cat_op_t;
-DEFINE_XEN_GUEST_HANDLE(xen_domctl_psr_cat_op_t);
+typedef struct xen_domctl_psr_alloc_op xen_domctl_psr_alloc_op_t;
+DEFINE_XEN_GUEST_HANDLE(xen_domctl_psr_alloc_op_t);
 
 struct xen_domctl {
     uint32_t cmd;
@@ -1222,7 +1222,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_setvnumainfo                  74
 #define XEN_DOMCTL_psr_cmt_op                    75
 #define XEN_DOMCTL_monitor_op                    77
-#define XEN_DOMCTL_psr_cat_op                    78
+#define XEN_DOMCTL_psr_alloc_op                  78
 #define XEN_DOMCTL_soft_reset                    79
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
@@ -1285,7 +1285,7 @@ struct xen_domctl {
         struct xen_domctl_vnuma             vnuma;
         struct xen_domctl_psr_cmt_op        psr_cmt_op;
         struct xen_domctl_monitor_op        monitor_op;
-        struct xen_domctl_psr_cat_op        psr_cat_op;
+        struct xen_domctl_psr_alloc_op      psr_alloc_op;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index cbf5372..71edcf0 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -745,8 +745,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_sysctl_pcitopoinfo_t);
 
 #define XEN_SYSCTL_PSR_CAT_get_l3_info               0
 #define XEN_SYSCTL_PSR_CAT_get_l2_info               1
-struct xen_sysctl_psr_cat_op {
-    uint32_t cmd;       /* IN: XEN_SYSCTL_PSR_CAT_* */
+struct xen_sysctl_psr_alloc_op {
+    uint32_t cmd;       /* IN: XEN_SYSCTL_PSR_* */
     uint32_t target;    /* IN */
     union {
         struct {
@@ -762,8 +762,8 @@ struct xen_sysctl_psr_cat_op {
         } l2_info;
     } u;
 };
-typedef struct xen_sysctl_psr_cat_op xen_sysctl_psr_cat_op_t;
-DEFINE_XEN_GUEST_HANDLE(xen_sysctl_psr_cat_op_t);
+typedef struct xen_sysctl_psr_alloc_op xen_sysctl_psr_alloc_op_t;
+DEFINE_XEN_GUEST_HANDLE(xen_sysctl_psr_alloc_op_t);
 
 #define XEN_SYSCTL_TMEM_OP_ALL_CLIENTS 0xFFFFU
 
@@ -1117,7 +1117,7 @@ struct xen_sysctl {
 #define XEN_SYSCTL_gcov_op                       20
 #define XEN_SYSCTL_psr_cmt_op                    21
 #define XEN_SYSCTL_pcitopoinfo                   22
-#define XEN_SYSCTL_psr_cat_op                    23
+#define XEN_SYSCTL_psr_alloc_op                  23
 #define XEN_SYSCTL_tmem_op                       24
 #define XEN_SYSCTL_get_cpu_levelling_caps        25
 #define XEN_SYSCTL_get_cpu_featureset            26
@@ -1145,7 +1145,7 @@ struct xen_sysctl {
         struct xen_sysctl_scheduler_op      scheduler_op;
         struct xen_sysctl_gcov_op           gcov_op;
         struct xen_sysctl_psr_cmt_op        psr_cmt_op;
-        struct xen_sysctl_psr_cat_op        psr_cat_op;
+        struct xen_sysctl_psr_alloc_op      psr_alloc_op;
         struct xen_sysctl_tmem_op           tmem_op;
         struct xen_sysctl_cpu_levelling_caps cpu_levelling_caps;
         struct xen_sysctl_cpu_featureset    cpu_featureset;
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index 040a251..2c2ae86 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -742,8 +742,8 @@ static int flask_domctl(struct domain *d, int cmd)
     case XEN_DOMCTL_psr_cmt_op:
         return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__PSR_CMT_OP);
 
-    case XEN_DOMCTL_psr_cat_op:
-        return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__PSR_CAT_OP);
+    case XEN_DOMCTL_psr_alloc_op:
+        return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__PSR_ALLOC_OP);
 
     case XEN_DOMCTL_soft_reset:
         return current_has_perm(d, SECCLASS_DOMAIN2, DOMAIN2__SOFT_RESET);
@@ -806,9 +806,9 @@ static int flask_sysctl(int cmd)
     case XEN_SYSCTL_psr_cmt_op:
         return avc_current_has_perm(SECINITSID_XEN, SECCLASS_XEN2,
                                     XEN2__PSR_CMT_OP, NULL);
-    case XEN_SYSCTL_psr_cat_op:
+    case XEN_SYSCTL_psr_alloc_op:
         return avc_current_has_perm(SECINITSID_XEN, SECCLASS_XEN2,
-                                    XEN2__PSR_CAT_OP, NULL);
+                                    XEN2__PSR_ALLOC_OP, NULL);
 
     case XEN_SYSCTL_tmem_op:
         return domain_has_xen(current->domain, XEN__TMEM_CONTROL);
diff --git a/xen/xsm/flask/policy/access_vectors 
b/xen/xsm/flask/policy/access_vectors
index 92e6da9..14772f4 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -85,8 +85,8 @@ class xen2
     resource_op
 # XEN_SYSCTL_psr_cmt_op
     psr_cmt_op
-# XEN_SYSCTL_psr_cat_op
-    psr_cat_op
+# XEN_SYSCTL_psr_alloc_op
+    psr_alloc_op
 # XENPF_get_symbol
     get_symbol
 # PMU control
@@ -244,8 +244,8 @@ class domain2
     mem_paging
 # XENMEM_sharing_op
     mem_sharing
-# XEN_DOMCTL_psr_cat_op
-    psr_cat_op
+# XEN_DOMCTL_psr_alloc_op
+    psr_alloc_op
 }
 
 # Similar to class domain, but primarily contains domctls related to HVM 
domains
-- 
1.9.1


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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.