]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/resctrl: Move RFTYPE flags to be managed by resctrl
authorJames Morse <james.morse@arm.com>
Tue, 11 Mar 2025 18:37:12 +0000 (18:37 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 12 Mar 2025 11:24:37 +0000 (12:24 +0100)
resctrl_file_fflags_init() is called from the architecture specific code to
make the 'thread_throttle_mode' file visible. The architecture specific code
has already set the membw.throttle_mode in the rdt_resource.

This forces the RFTYPE flags used by resctrl to be exposed to the architecture
specific code.

This doesn't need to be specific to the architecture, the throttle_mode can be
used by resctrl to determine if the 'thread_throttle_mode' file should be
visible. This allows the RFTYPE flags to be private to resctrl.

Add thread_throttle_mode_init(), and use it to call resctrl_file_fflags_init()
from resctrl_init(). This avoids publishing an extra function between the
architecture and filesystem code.

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Tested-by: Peter Newman <peternewman@google.com>
Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.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-28-james.morse@arm.com
arch/x86/kernel/cpu/resctrl/core.c
arch/x86/kernel/cpu/resctrl/rdtgroup.c

index b9b74f53b8eef3e852fbc41e3ba81b9062fb80c4..e590dd347fa7cc3fe258bedefe3028e7dd65c36c 100644 (file)
@@ -227,9 +227,6 @@ static __init bool __get_mem_config_intel(struct rdt_resource *r)
        else
                r->membw.throttle_mode = THREAD_THROTTLE_MAX;
 
-       resctrl_file_fflags_init("thread_throttle_mode",
-                                RFTYPE_CTRL_INFO | RFTYPE_RES_MB);
-
        r->alloc_capable = true;
 
        return true;
index e59271515a4634b0535b0cf41ecff28fb1c3bb74..58feba3feefd8a12abd6f4b8fadfe7a031dcd041 100644 (file)
@@ -2064,6 +2064,16 @@ static struct rftype *rdtgroup_get_rftype_by_name(const char *name)
        return NULL;
 }
 
+static void thread_throttle_mode_init(void)
+{
+       struct rdt_resource *r_mba;
+
+       r_mba = resctrl_arch_get_resource(RDT_RESOURCE_MBA);
+       if (r_mba->membw.throttle_mode != THREAD_THROTTLE_UNDEFINED)
+               resctrl_file_fflags_init("thread_throttle_mode",
+                                        RFTYPE_CTRL_INFO | RFTYPE_RES_MB);
+}
+
 void resctrl_file_fflags_init(const char *config, unsigned long fflags)
 {
        struct rftype *rft;
@@ -4277,6 +4287,8 @@ int __init resctrl_init(void)
 
        rdtgroup_setup_default();
 
+       thread_throttle_mode_init();
+
        ret = resctrl_mon_resource_init();
        if (ret)
                return ret;