[PATCH v6 07/18] fs/resctrl: Introduce resctrl_set_kmode_support() to register supported modes

From: Babu Moger

Date: Thu Oct 01 2026 - 11:16:18 EST


The resctrl subsystem tracks kernel mode configuration. Architectures need
to register the supported kernel modes.

Add resctrl_set_kmode_support() so an architecture can register supported
kernel modes.

Signed-off-by: Babu Moger <babu.moger@xxxxxxx>
---
v6: Use resctrl_kmode.kmode_sup after the struct flatten. Drop duplicate
kernel-doc from the .c definition and place the function next to
resctrl_kmode_init(). Rewrite changelog (not a bugfix).

v5: New patch split from resctrl_kmode_cfg initialization. Register modes
in resctrl_kmode_cfg.caps.kmode_sup using RESCTRL_INHERIT_USER and
RESCTRL_ASSIGN_GLOBAL_ENABLE_PER_CPU. Ignore out-of-range mode values.

v4: New patch to initialize supported kernel modes.
https://lore.kernel.org/lkml/737a4228-52fb-4583-ac64-8efe79c107e6@xxxxxxxxx/
---
fs/resctrl/rdtgroup.c | 6 ++++++
include/linux/resctrl.h | 15 +++++++++++++++
2 files changed, 21 insertions(+)

diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 7c39792be1fa..75b81d07a247 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -2320,6 +2320,12 @@ static void resctrl_kmode_init(void)
resctrl_kmode.mon = KMODE_ASSIGN;
}

+void resctrl_set_kmode_support(enum resctrl_kernel_mode kmode)
+{
+ if (kmode < RESCTRL_NUM_KERNEL_MODES)
+ __set_bit(kmode, resctrl_kmode.kmode_sup);
+}
+
void resctrl_file_fflags_init(const char *config, unsigned long fflags)
{
struct rftype *rft;
diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
index dcb0beb847b6..5553f6301bd4 100644
--- a/include/linux/resctrl.h
+++ b/include/linux/resctrl.h
@@ -752,6 +752,21 @@ enum resctrl_kernel_mode {

#define RESCTRL_NUM_KERNEL_MODES (RESCTRL_KMODE_LAST + 1)

+/**
+ * resctrl_set_kmode_support() - Register a supported kernel mode
+ * @kmode: Kernel mode supported by the architecture.
+ *
+ * RESCTRL_INHERIT_USER is registered by resctrl_kmode_init() and does
+ * not need to be registered again.
+ *
+ * Architectures use this interface during resctrl initialization to
+ * advertise supported kernel modes. Registration of a mode indicates
+ * architectural support only. The final decision to expose and enable
+ * a mode is made by resctrl based on system capabilities and
+ * configuration.
+ */
+void resctrl_set_kmode_support(enum resctrl_kernel_mode kmode);
+
/**
* resctrl_arch_configure_kmode_global() - Program RESCTRL_GLOBAL_ENABLE_PER_CPU
*
--
2.43.0