Add plza attribute to display Privilege Level Zero Association for the resctrl group. Signed-off-by: Babu Moger --- fs/resctrl/internal.h | 2 ++ fs/resctrl/rdtgroup.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h index 1a9b29119f88..c107c1328be6 100644 --- a/fs/resctrl/internal.h +++ b/fs/resctrl/internal.h @@ -215,6 +215,7 @@ struct mongroup { * monitor only or ctrl_mon group * @mon: mongroup related data * @mode: mode of resource group + * @plza: Is Privilege Level Zero Association enabled? * @mba_mbps_event: input monitoring event id when mba_sc is enabled * @plr: pseudo-locked region */ @@ -228,6 +229,7 @@ struct rdtgroup { enum rdt_group_type type; struct mongroup mon; enum rdtgrp_mode mode; + bool plza; enum resctrl_event_id mba_mbps_event; struct pseudo_lock_region *plr; }; diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index 616be6633a6d..d467b52a0c74 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -880,6 +880,22 @@ static int rdtgroup_rmid_show(struct kernfs_open_file *of, return ret; } +static int rdtgroup_plza_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdtgroup *rdtgrp; + int ret = 0; + + rdtgrp = rdtgroup_kn_lock_live(of->kn); + if (rdtgrp) + seq_printf(s, "%u\n", rdtgrp->plza); + else + ret = -ENOENT; + rdtgroup_kn_unlock(of->kn); + + return ret; +} + #ifdef CONFIG_PROC_CPU_RESCTRL /* * A task can only be part of one resctrl control group and of one monitor @@ -2153,6 +2169,12 @@ static struct rftype res_common_files[] = { .seq_show = rdtgroup_closid_show, .fflags = RFTYPE_CTRL_BASE | RFTYPE_DEBUG, }, + { + .name = "plza", + .mode = 0444, + .kf_ops = &rdtgroup_kf_single_ops, + .seq_show = rdtgroup_plza_show, + }, }; static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags) @@ -2251,6 +2273,14 @@ static void io_alloc_init(void) } } +static void resctrl_plza_init(void) +{ + struct rdt_resource *r = resctrl_arch_get_resource(RDT_RESOURCE_L3); + + if (r->plza_capable) + resctrl_file_fflags_init("plza", RFTYPE_CTRL_BASE); +} + void resctrl_file_fflags_init(const char *config, unsigned long fflags) { struct rftype *rft; @@ -4609,6 +4639,8 @@ int resctrl_init(void) io_alloc_init(); + resctrl_plza_init(); + ret = resctrl_l3_mon_resource_init(); if (ret) return ret; -- 2.34.1