mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 22:22:08 +02:00
x86/resctrl: Make rdt_enable_key the arch's decision to switch
rdt_enable_key is switched when resctrl is mounted. It was also previously used to prevent a second mount of the filesystem. Any other architecture that wants to support resctrl has to provide identical static keys. Now that there are helpers for enabling and disabling the alloc/mon keys, resctrl doesn't need to switch this extra key, it can be done by the arch code. Use the static-key increment and decrement helpers, and change resctrl to ensure the calls are balanced. Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Shaopeng Tan <tan.shaopeng@fujitsu.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Reviewed-by: Babu Moger <babu.moger@amd.com> Tested-by: Shaopeng Tan <tan.shaopeng@fujitsu.com> Tested-by: Peter Newman <peternewman@google.com> Tested-by: Babu Moger <babu.moger@amd.com> Tested-by: Carl Worth <carl@os.amperecomputing.com> # arm64 Link: https://lore.kernel.org/r/20240213184438.16675-19-james.morse@arm.com Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
This commit is contained in:
parent
5db6a4a75c
commit
0a2f4d9b54
|
|
@ -45,21 +45,25 @@ DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key);
|
|||
static inline void resctrl_arch_enable_alloc(void)
|
||||
{
|
||||
static_branch_enable_cpuslocked(&rdt_alloc_enable_key);
|
||||
static_branch_inc_cpuslocked(&rdt_enable_key);
|
||||
}
|
||||
|
||||
static inline void resctrl_arch_disable_alloc(void)
|
||||
{
|
||||
static_branch_disable_cpuslocked(&rdt_alloc_enable_key);
|
||||
static_branch_dec_cpuslocked(&rdt_enable_key);
|
||||
}
|
||||
|
||||
static inline void resctrl_arch_enable_mon(void)
|
||||
{
|
||||
static_branch_enable_cpuslocked(&rdt_mon_enable_key);
|
||||
static_branch_inc_cpuslocked(&rdt_enable_key);
|
||||
}
|
||||
|
||||
static inline void resctrl_arch_disable_mon(void)
|
||||
{
|
||||
static_branch_disable_cpuslocked(&rdt_mon_enable_key);
|
||||
static_branch_dec_cpuslocked(&rdt_enable_key);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -2672,10 +2672,8 @@ static int rdt_get_tree(struct fs_context *fc)
|
|||
if (rdt_mon_capable)
|
||||
resctrl_arch_enable_mon();
|
||||
|
||||
if (rdt_alloc_capable || rdt_mon_capable) {
|
||||
static_branch_enable_cpuslocked(&rdt_enable_key);
|
||||
if (rdt_alloc_capable || rdt_mon_capable)
|
||||
resctrl_mounted = true;
|
||||
}
|
||||
|
||||
if (is_mbm_enabled()) {
|
||||
r = &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl;
|
||||
|
|
@ -2946,9 +2944,10 @@ static void rdt_kill_sb(struct super_block *sb)
|
|||
rdtgroup_default.mode = RDT_MODE_SHAREABLE;
|
||||
schemata_list_destroy();
|
||||
rdtgroup_destroy_root();
|
||||
resctrl_arch_disable_alloc();
|
||||
resctrl_arch_disable_mon();
|
||||
static_branch_disable_cpuslocked(&rdt_enable_key);
|
||||
if (rdt_alloc_capable)
|
||||
resctrl_arch_disable_alloc();
|
||||
if (rdt_mon_capable)
|
||||
resctrl_arch_disable_mon();
|
||||
resctrl_mounted = false;
|
||||
kernfs_kill_sb(sb);
|
||||
mutex_unlock(&rdtgroup_mutex);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user