x86/resctrl: Simplify call convention for MSR update functions
authorTony Luck <tony.luck@intel.com>
Fri, 8 Mar 2024 21:38:46 +0000 (13:38 -0800)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 24 Apr 2024 11:47:00 +0000 (13:47 +0200)
The per-resource MSR update functions cat_wrmsr(), mba_wrmsr_intel(),
and mba_wrmsr_amd() all take three arguments:

  (struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r)

struct msr_param contains pointers to both struct rdt_resource and struct
rdt_domain, thus only struct msr_param is necessary.

Pass struct msr_param as a single parameter. Clean up formatting and
fix some fir tree declaration ordering.

No functional change.

Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Link: https://lore.kernel.org/r/20240308213846.77075-3-tony.luck@intel.com
arch/x86/kernel/cpu/resctrl/core.c
arch/x86/kernel/cpu/resctrl/ctrlmondata.c
arch/x86/kernel/cpu/resctrl/internal.h

index acf52aa185e091d62e26bc81a01dd65cc5e276db..7751eea19fd241c41bb8c8a9bdcf80667ae0b06f 100644 (file)
@@ -56,14 +56,9 @@ int max_name_width, max_data_width;
  */
 bool rdt_alloc_capable;
 
-static void
-mba_wrmsr_intel(struct rdt_domain *d, struct msr_param *m,
-               struct rdt_resource *r);
-static void
-cat_wrmsr(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r);
-static void
-mba_wrmsr_amd(struct rdt_domain *d, struct msr_param *m,
-             struct rdt_resource *r);
+static void mba_wrmsr_intel(struct msr_param *m);
+static void cat_wrmsr(struct msr_param *m);
+static void mba_wrmsr_amd(struct msr_param *m);
 
 #define domain_init(id) LIST_HEAD_INIT(rdt_resources_all[id].r_resctrl.domains)
 
@@ -309,12 +304,11 @@ static void rdt_get_cdp_l2_config(void)
        rdt_get_cdp_config(RDT_RESOURCE_L2);
 }
 
-static void
-mba_wrmsr_amd(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r)
+static void mba_wrmsr_amd(struct msr_param *m)
 {
+       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(m->res);
+       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(m->dom);
        unsigned int i;
-       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(d);
-       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
 
        for (i = m->low; i < m->high; i++)
                wrmsrl(hw_res->msr_base + i, hw_dom->ctrl_val[i]);
@@ -334,25 +328,22 @@ static u32 delay_bw_map(unsigned long bw, struct rdt_resource *r)
        return r->default_ctrl;
 }
 
-static void
-mba_wrmsr_intel(struct rdt_domain *d, struct msr_param *m,
-               struct rdt_resource *r)
+static void mba_wrmsr_intel(struct msr_param *m)
 {
+       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(m->res);
+       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(m->dom);
        unsigned int i;
-       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(d);
-       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
 
        /*  Write the delay values for mba. */
        for (i = m->low; i < m->high; i++)
-               wrmsrl(hw_res->msr_base + i, delay_bw_map(hw_dom->ctrl_val[i], r));
+               wrmsrl(hw_res->msr_base + i, delay_bw_map(hw_dom->ctrl_val[i], m->res));
 }
 
-static void
-cat_wrmsr(struct rdt_domain *d, struct msr_param *m, struct rdt_resource *r)
+static void cat_wrmsr(struct msr_param *m)
 {
+       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(m->res);
+       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(m->dom);
        unsigned int i;
-       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(d);
-       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
 
        for (i = m->low; i < m->high; i++)
                wrmsrl(hw_res->msr_base + i, hw_dom->ctrl_val[i]);
@@ -384,7 +375,7 @@ void rdt_ctrl_update(void *arg)
        struct msr_param *m = arg;
 
        hw_res = resctrl_to_arch_res(m->res);
-       hw_res->msr_update(m->dom, m, m->res);
+       hw_res->msr_update(m);
 }
 
 /*
@@ -457,10 +448,11 @@ static int domain_setup_ctrlval(struct rdt_resource *r, struct rdt_domain *d)
        hw_dom->ctrl_val = dc;
        setup_default_ctrlval(r, dc);
 
+       m.res = r;
        m.dom = d;
        m.low = 0;
        m.high = hw_res->num_closid;
-       hw_res->msr_update(d, &m, r);
+       hw_res->msr_update(&m);
        return 0;
 }
 
index 165d8d453c04189a1d975080bc451e514756663b..b7291f60399c0e759e8bf618a2966fa565ae106b 100644 (file)
@@ -289,7 +289,7 @@ int resctrl_arch_update_one(struct rdt_resource *r, struct rdt_domain *d,
        msr_param.dom = d;
        msr_param.low = idx;
        msr_param.high = idx + 1;
-       hw_res->msr_update(d, &msr_param, r);
+       hw_res->msr_update(&msr_param);
 
        return 0;
 }
index ab2d315f7a2e8117bc5f7af4f11fe8009f4c9a76..f1d926832ec8af07a4c8bb56d66f9d6ce14dd9e6 100644 (file)
@@ -445,8 +445,7 @@ struct rdt_hw_resource {
        struct rdt_resource     r_resctrl;
        u32                     num_closid;
        unsigned int            msr_base;
-       void (*msr_update)      (struct rdt_domain *d, struct msr_param *m,
-                                struct rdt_resource *r);
+       void                    (*msr_update)(struct msr_param *m);
        unsigned int            mon_scale;
        unsigned int            mbm_width;
        unsigned int            mbm_cfg_mask;