]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/resctrl: Move mbm_cfg_mask to struct rdt_resource
authorJames Morse <james.morse@arm.com>
Tue, 11 Mar 2025 18:37:07 +0000 (18:37 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 12 Mar 2025 11:24:09 +0000 (12:24 +0100)
The mbm_cfg_mask field lists the bits that user-space can set when configuring
an event. This value is output via the last_cmd_status file.

Once the filesystem parts of resctrl are moved to live in /fs/, the struct
rdt_hw_resource is inaccessible to the filesystem code. Because this value is
output to user-space, it has to be accessible to the filesystem code.

Move it to struct rdt_resource.

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Carl Worth <carl@os.amperecomputing.com> # arm64
Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Tested-by: Peter Newman <peternewman@google.com>
Tested-by: Amit Singh Tomar <amitsinght@marvell.com> # arm64
Tested-by: Shanker Donthineni <sdonthineni@nvidia.com> # arm64
Tested-by: Babu Moger <babu.moger@amd.com>
Link: https://lore.kernel.org/r/20250311183715.16445-23-james.morse@arm.com
arch/x86/kernel/cpu/resctrl/internal.h
arch/x86/kernel/cpu/resctrl/monitor.c
arch/x86/kernel/cpu/resctrl/rdtgroup.c
include/linux/resctrl.h

index 4a5996d1e060778fa9ad524fd39460b42e943f44..725f223ea07be091b985b240835ce9ff8e8743f6 100644 (file)
@@ -417,8 +417,6 @@ struct msr_param {
  * @msr_update:                Function pointer to update QOS MSRs
  * @mon_scale:         cqm counter * mon_scale = occupancy in bytes
  * @mbm_width:         Monitor width, to detect and correct for overflow.
- * @mbm_cfg_mask:      Bandwidth sources that can be tracked when Bandwidth
- *                     Monitoring Event Configuration (BMEC) is supported.
  * @cdp_enabled:       CDP state of this resource
  *
  * Members of this structure are either private to the architecture
@@ -432,7 +430,6 @@ struct rdt_hw_resource {
        void                    (*msr_update)(struct msr_param *m);
        unsigned int            mon_scale;
        unsigned int            mbm_width;
-       unsigned int            mbm_cfg_mask;
        bool                    cdp_enabled;
 };
 
index 306b06ba32db3295274f925f948631a91966351d..83f90128d7688bba8397d2152ac173134606fb82 100644 (file)
@@ -1260,7 +1260,7 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)
 
                /* Detect list of bandwidth sources that can be tracked */
                cpuid_count(0x80000020, 3, &eax, &ebx, &ecx, &edx);
-               hw_res->mbm_cfg_mask = ecx & MAX_EVT_CONFIG_BITS;
+               r->mbm_cfg_mask = ecx & MAX_EVT_CONFIG_BITS;
        }
 
        r->mon_capable = true;
index e7d1d8b6983da4ba4cbeb8bd9ccde551c182301b..a388ef66ef4ca56f9d199c829bed8fa7a152e6a2 100644 (file)
@@ -1731,7 +1731,6 @@ static void mbm_config_write_domain(struct rdt_resource *r,
 
 static int mon_config_write(struct rdt_resource *r, char *tok, u32 evtid)
 {
-       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
        char *dom_str = NULL, *id_str;
        unsigned long dom_id, val;
        struct rdt_mon_domain *d;
@@ -1758,9 +1757,9 @@ next:
        }
 
        /* Value from user cannot be more than the supported set of events */
-       if ((val & hw_res->mbm_cfg_mask) != val) {
+       if ((val & r->mbm_cfg_mask) != val) {
                rdt_last_cmd_printf("Invalid event configuration: max valid mask is 0x%02x\n",
-                                   hw_res->mbm_cfg_mask);
+                                   r->mbm_cfg_mask);
                return -EINVAL;
        }
 
index 90b6563cf53263e470cac581debd3c8fb235fe1f..914df24ffe483cf8fa79f769c9b06949a8928179 100644 (file)
@@ -217,6 +217,8 @@ enum resctrl_schema_fmt {
  * @name:              Name to use in "schemata" file.
  * @schema_fmt:                Which format string and parser is used for this schema.
  * @evt_list:          List of monitoring events
+ * @mbm_cfg_mask:      Bandwidth sources that can be tracked when bandwidth
+ *                     monitoring events can be configured.
  * @cdp_capable:       Is the CDP feature available on this resource
  */
 struct rdt_resource {
@@ -233,6 +235,7 @@ struct rdt_resource {
        char                    *name;
        enum resctrl_schema_fmt schema_fmt;
        struct list_head        evt_list;
+       unsigned int            mbm_cfg_mask;
        bool                    cdp_capable;
 };