Add the debug files to the resctrl hierarchy. Signed-off-by: Babu Moger <babu.moger@xxxxxxx> --- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 48 +++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c index a1f13715a65c..790c6b9f9031 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -2400,6 +2400,45 @@ static int mkdir_mondata_all(struct kernfs_node *parent_kn, struct rdtgroup *prgrp, struct kernfs_node **mon_data_kn); +void resctrl_add_debug_file(struct kernfs_node *parent_kn, const char *config, + unsigned long fflags) +{ + struct rftype *rft; + + rft = rdtgroup_get_rftype_by_name(config); + if (rft) { + rft->fflags |= fflags; + rdtgroup_add_file(parent_kn, rft); + } +} + +static void resctrl_add_debug_files(void) +{ + resctrl_add_debug_file(rdtgroup_default.kn, "rmid", RFTYPE_BASE); + resctrl_add_debug_file(rdtgroup_default.kn, "closid", RFTYPE_BASE_CTRL); + kernfs_activate(rdtgroup_default.kn); +} + +void resctrl_remove_debug_file(struct kernfs_node *parent_kn, + const char *config, unsigned long fflags) +{ + struct rftype *rft; + + rft = rdtgroup_get_rftype_by_name(config); + if (rft) { + rft->fflags &= ~fflags; + kernfs_remove_by_name(parent_kn, config); + } +} + +static void resctrl_remove_debug_files(void) +{ + resctrl_remove_debug_file(rdtgroup_default.kn, "rmid", RFTYPE_BASE); + resctrl_remove_debug_file(rdtgroup_default.kn, "closid", + RFTYPE_BASE_CTRL); + kernfs_activate(rdtgroup_default.kn); +} + static int rdt_enable_ctx(struct rdt_fs_context *ctx) { int ret = 0; @@ -2413,8 +2452,10 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx) if (!ret && ctx->enable_mba_mbps) ret = set_mba_sc(true); - if (!ret && ctx->debug) + if (!ret && ctx->debug) { resctrl_debug = true; + resctrl_add_debug_files(); + } return ret; } @@ -2831,6 +2872,11 @@ static void rdt_kill_sb(struct super_block *sb) set_mba_sc(false); + if (resctrl_debug) { + resctrl_remove_debug_files(); + resctrl_debug = false; + } + /*Put everything back to default values. */ for_each_alloc_capable_rdt_resource(r) reset_all_ctrls(r);