Commit cb07d71f authored by Babu Moger's avatar Babu Moger Committed by Borislav Petkov (AMD)

x86/resctrl: Introduce "-o debug" mount option

Add "-o debug" option to mount resctrl filesystem in debug mode.  When
in debug mode resctrl displays files that have the new RFTYPE_DEBUG flag
to help resctrl debugging.
Signed-off-by: default avatarBabu Moger <babu.moger@amd.com>
Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: default avatarPeter Newman <peternewman@google.com>
Reviewed-by: default avatarTan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: default avatarFenghua Yu <fenghua.yu@intel.com>
Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tested-by: default avatarPeter Newman <peternewman@google.com>
Tested-by: default avatarTan Shaopeng <tan.shaopeng@jp.fujitsu.com>
Link: https://lore.kernel.org/r/20231017002308.134480-7-babu.moger@amd.com
parent d27567a0
...@@ -35,7 +35,7 @@ about the feature from resctrl's info directory. ...@@ -35,7 +35,7 @@ about the feature from resctrl's info directory.
To use the feature mount the file system:: To use the feature mount the file system::
# mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps]] /sys/fs/resctrl # mount -t resctrl resctrl [-o cdp[,cdpl2][,mba_MBps][,debug]] /sys/fs/resctrl
mount options are: mount options are:
...@@ -46,6 +46,9 @@ mount options are: ...@@ -46,6 +46,9 @@ mount options are:
"mba_MBps": "mba_MBps":
Enable the MBA Software Controller(mba_sc) to specify MBA Enable the MBA Software Controller(mba_sc) to specify MBA
bandwidth in MBps bandwidth in MBps
"debug":
Make debug files accessible. Available debug files are annotated with
"Available only with debug option".
L2 and L3 CDP are controlled separately. L2 and L3 CDP are controlled separately.
......
...@@ -59,6 +59,7 @@ struct rdt_fs_context { ...@@ -59,6 +59,7 @@ struct rdt_fs_context {
bool enable_cdpl2; bool enable_cdpl2;
bool enable_cdpl3; bool enable_cdpl3;
bool enable_mba_mbps; bool enable_mba_mbps;
bool enable_debug;
}; };
static inline struct rdt_fs_context *rdt_fc2context(struct fs_context *fc) static inline struct rdt_fs_context *rdt_fc2context(struct fs_context *fc)
...@@ -248,6 +249,7 @@ struct rdtgroup { ...@@ -248,6 +249,7 @@ struct rdtgroup {
#define RFTYPE_TOP BIT(6) #define RFTYPE_TOP BIT(6)
#define RFTYPE_RES_CACHE BIT(8) #define RFTYPE_RES_CACHE BIT(8)
#define RFTYPE_RES_MB BIT(9) #define RFTYPE_RES_MB BIT(9)
#define RFTYPE_DEBUG BIT(10)
#define RFTYPE_CTRL_INFO (RFTYPE_INFO | RFTYPE_CTRL) #define RFTYPE_CTRL_INFO (RFTYPE_INFO | RFTYPE_CTRL)
#define RFTYPE_MON_INFO (RFTYPE_INFO | RFTYPE_MON) #define RFTYPE_MON_INFO (RFTYPE_INFO | RFTYPE_MON)
#define RFTYPE_TOP_INFO (RFTYPE_INFO | RFTYPE_TOP) #define RFTYPE_TOP_INFO (RFTYPE_INFO | RFTYPE_TOP)
......
...@@ -59,6 +59,8 @@ static void rdtgroup_destroy_root(void); ...@@ -59,6 +59,8 @@ static void rdtgroup_destroy_root(void);
struct dentry *debugfs_resctrl; struct dentry *debugfs_resctrl;
static bool resctrl_debug;
void rdt_last_cmd_clear(void) void rdt_last_cmd_clear(void)
{ {
lockdep_assert_held(&rdtgroup_mutex); lockdep_assert_held(&rdtgroup_mutex);
...@@ -1892,6 +1894,9 @@ static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags) ...@@ -1892,6 +1894,9 @@ static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags)
lockdep_assert_held(&rdtgroup_mutex); lockdep_assert_held(&rdtgroup_mutex);
if (resctrl_debug)
fflags |= RFTYPE_DEBUG;
for (rft = rfts; rft < rfts + len; rft++) { for (rft = rfts; rft < rfts + len; rft++) {
if (rft->fflags && ((fflags & rft->fflags) == rft->fflags)) { if (rft->fflags && ((fflags & rft->fflags) == rft->fflags)) {
ret = rdtgroup_add_file(kn, rft); ret = rdtgroup_add_file(kn, rft);
...@@ -2395,6 +2400,8 @@ static void rdt_disable_ctx(void) ...@@ -2395,6 +2400,8 @@ static void rdt_disable_ctx(void)
resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false); resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false);
resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false); resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false);
set_mba_sc(false); set_mba_sc(false);
resctrl_debug = false;
} }
static int rdt_enable_ctx(struct rdt_fs_context *ctx) static int rdt_enable_ctx(struct rdt_fs_context *ctx)
...@@ -2419,6 +2426,9 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx) ...@@ -2419,6 +2426,9 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx)
goto out_cdpl3; goto out_cdpl3;
} }
if (ctx->enable_debug)
resctrl_debug = true;
return 0; return 0;
out_cdpl3: out_cdpl3:
...@@ -2623,6 +2633,7 @@ enum rdt_param { ...@@ -2623,6 +2633,7 @@ enum rdt_param {
Opt_cdp, Opt_cdp,
Opt_cdpl2, Opt_cdpl2,
Opt_mba_mbps, Opt_mba_mbps,
Opt_debug,
nr__rdt_params nr__rdt_params
}; };
...@@ -2630,6 +2641,7 @@ static const struct fs_parameter_spec rdt_fs_parameters[] = { ...@@ -2630,6 +2641,7 @@ static const struct fs_parameter_spec rdt_fs_parameters[] = {
fsparam_flag("cdp", Opt_cdp), fsparam_flag("cdp", Opt_cdp),
fsparam_flag("cdpl2", Opt_cdpl2), fsparam_flag("cdpl2", Opt_cdpl2),
fsparam_flag("mba_MBps", Opt_mba_mbps), fsparam_flag("mba_MBps", Opt_mba_mbps),
fsparam_flag("debug", Opt_debug),
{} {}
}; };
...@@ -2655,6 +2667,9 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param) ...@@ -2655,6 +2667,9 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
return -EINVAL; return -EINVAL;
ctx->enable_mba_mbps = true; ctx->enable_mba_mbps = true;
return 0; return 0;
case Opt_debug:
ctx->enable_debug = true;
return 0;
} }
return -EINVAL; return -EINVAL;
...@@ -3723,6 +3738,9 @@ static int rdtgroup_show_options(struct seq_file *seq, struct kernfs_root *kf) ...@@ -3723,6 +3738,9 @@ static int rdtgroup_show_options(struct seq_file *seq, struct kernfs_root *kf)
if (is_mba_sc(&rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl)) if (is_mba_sc(&rdt_resources_all[RDT_RESOURCE_MBA].r_resctrl))
seq_puts(seq, ",mba_MBps"); seq_puts(seq, ",mba_MBps");
if (resctrl_debug)
seq_puts(seq, ",debug");
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment