x86: L2 CAT: implement set value flow.
authorYi Sun <yi.y.sun@linux.intel.com>
Tue, 1 Aug 2017 09:05:00 +0000 (11:05 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 3 Aug 2017 10:38:12 +0000 (12:38 +0200)
This patch implements L2 CAT set value related callback function
and domctl interface.

Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/domctl.c
xen/arch/x86/psr.c
xen/include/public/domctl.h

index b4847b6f8ba819e005c635d2f7287bae72e2063f..127c84e714633cacca956fd7956060e75ef25d72 100644 (file)
@@ -1462,6 +1462,12 @@ long arch_do_domctl(
                               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,
+                              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,
                               &val32, PSR_CBM_TYPE_L3);
index 4dd9112d3e16e9db1e2d15b95e6fe134ec874731..7d9fa265f31ddb8e2c2f13b66c74c1a1e4e5d860 100644 (file)
@@ -408,6 +408,7 @@ static const struct feat_props l3_cdp_props = {
 /* L2 CAT props */
 static void l2_cat_write_msr(unsigned int cos, uint32_t val, enum cbm_type type)
 {
+    wrmsrl(MSR_IA32_PSR_L2_MASK(cos), val);
 }
 
 static const struct feat_props l2_cat_props = {
index 61d44cd3b9bca81c75e6ba450aba1abf207642a5..0669c3161cd3e92ce250d8e63acb20353478b8cf 100644 (file)
@@ -1142,6 +1142,7 @@ struct xen_domctl_psr_cat_op {
 #define XEN_DOMCTL_PSR_CAT_OP_SET_L3_DATA    3
 #define XEN_DOMCTL_PSR_CAT_OP_GET_L3_CODE    4
 #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 target;    /* IN */