[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c9466b46-6a03-e57b-4b8c-edeae8081951@intel.com>
Date: Thu, 17 Aug 2023 10:42:58 -0700
From: Fenghua Yu <fenghua.yu@...el.com>
To: Amit Singh Tomar <amitsinght@...vell.com>,
<linux-kernel@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>
CC: <reinette.chatre@...el.com>, <james.morse@....com>,
<gcherian@...vell.com>, <robh@...nel.org>, <peternewman@...gle.com>
Subject: Re: [RFC 06/12] fs/resctrl: Extend schemata read for priority
partition control
Hi, Amit,
On 8/15/23 08:27, Amit Singh Tomar wrote:
> At present, "schemata" file under resource control group reveals
> information about Cache portion bitmap and Memory Bandwidth allocation.
> With the introduction of priority partition control "schemata" is updated
> to adopt priority value.
>
> Let's enable support for reading the priority values for "schemata" file.
>
> Signed-off-by: Amit Singh Tomar <amitsinght@...vell.com>
> ---
> drivers/platform/mpam/mpam_resctrl.c | 4 ++++
> fs/resctrl/ctrlmondata.c | 15 ++++++++++++---
> include/linux/resctrl.h | 4 ++++
> 3 files changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/platform/mpam/mpam_resctrl.c b/drivers/platform/mpam/mpam_resctrl.c
> index cc843f1b0fb7..b491a0f897fd 100644
> --- a/drivers/platform/mpam/mpam_resctrl.c
> +++ b/drivers/platform/mpam/mpam_resctrl.c
> @@ -735,7 +735,11 @@ static int mpam_resctrl_resource_init(struct mpam_resctrl_res *res)
>
> if (has_ppart) {
> r->priority_cap = true;
> + if (class->props.dspri_wd > 0x10)
> + class->props.dspri_wd = 0x10;
> +
> r->dspri_default_ctrl = BIT_MASK(class->props.dspri_wd) - 1;
> + r->dspri_data_width = (class->props.dspri_wd + 3) / 4;
> }
>
> /*
> diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
> index b19ac2509e38..8c8a4d09d22c 100644
> --- a/fs/resctrl/ctrlmondata.c
> +++ b/fs/resctrl/ctrlmondata.c
> @@ -379,7 +379,7 @@ static void show_doms(struct seq_file *s, struct resctrl_schema *schema, int clo
> struct rdt_resource *r = schema->res;
> struct rdt_domain *dom;
> bool sep = false;
> - u32 ctrl_val;
> + u32 ctrl_val, dspri_ctrl_val;
>
> /* Walking r->domains, ensure it can't race with cpuhp */
> lockdep_assert_cpus_held();
> @@ -395,9 +395,18 @@ static void show_doms(struct seq_file *s, struct resctrl_schema *schema, int clo
> ctrl_val = resctrl_arch_get_config(r, dom, closid,
> schema->conf_type);
>
> - seq_printf(s, r->format_str, dom->id, max_data_width,
> - ctrl_val);
> + if (r->priority_cap) {
> + r->dspri_show = true;
> + dspri_ctrl_val = resctrl_arch_get_config(r, dom, closid,
> + CDP_NONE);
> + seq_printf(s, r->format_str, dom->id, max_data_width, ctrl_val,
> + r->dspri_data_width, dspri_ctrl_val);
Move r->dspri_show = false to here.
> + } else
> + seq_printf(s, r->format_str, dom->id, max_data_width,
> + ctrl_val);
> +
> sep = true;
> + r->dspri_show = false;
dspri_show is irrelevant without priority_cap.
> }
> seq_puts(s, "\n");
> }
> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
> index d5b0661c0f70..d7100c330945 100644
> --- a/include/linux/resctrl.h
> +++ b/include/linux/resctrl.h
> @@ -199,12 +199,14 @@ struct resctrl_membw {
> * @mon_capable: Is monitor feature available on this machine
> * @priority_capable: Is priority partitioning feature available on this machine
> * @dspri_store:
> + * @dspri_show: flag to indicate downstream priority read
> * @num_rmid: Number of RMIDs available
> * @cache_level: Which cache level defines scope of this resource
> * @cache: Cache allocation related data
> * @membw: If the component has bandwidth controls, their properties.
> * @domains: RCU list of all domains for this resource
> * @name: Name to use in "schemata" file.
> + * @dspri_data_width Character width of dspri value when displaying
> * @data_width: Character width of data when displaying
> * @default_ctrl: Specifies default cache cbm or memory B/W percent.
> * @dspri_default_ctrl: Specifies default downstream priority value.
> @@ -219,6 +221,7 @@ struct rdt_resource {
> bool mon_capable;
> bool priority_cap;
> bool dspri_store;
> + bool dspri_show;
> int num_rmid;
> int cache_level;
> struct resctrl_cache cache;
> @@ -226,6 +229,7 @@ struct rdt_resource {
> struct list_head domains;
> char *name;
> int data_width;
> + int dspri_data_width;
> u32 default_ctrl;
> u32 dspri_default_ctrl;
> const char *format_str;
Thanks.
-Fenghua
Powered by blists - more mailing lists