[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <d286d455-dbd7-49f0-acc2-7d5eb3b5c4e1@intel.com>
Date: Fri, 25 Jul 2025 16:55:26 -0700
From: Reinette Chatre <reinette.chatre@...el.com>
To: Tony Luck <tony.luck@...el.com>, Fenghua Yu <fenghuay@...dia.com>, "Maciej
Wieczor-Retman" <maciej.wieczor-retman@...el.com>, Peter Newman
<peternewman@...gle.com>, James Morse <james.morse@....com>, Babu Moger
<babu.moger@....com>, Drew Fustini <dfustini@...libre.com>, Dave Martin
<Dave.Martin@....com>, Chen Yu <yu.c.chen@...el.com>
CC: <x86@...nel.org>, <linux-kernel@...r.kernel.org>,
<patches@...ts.linux.dev>
Subject: Re: [PATCH v7 29/31] fs/resctrl: Provide interface to create
architecture specific debugfs area
Hi Tony,
On 7/11/25 4:53 PM, Tony Luck wrote:
> Architectures are constrained to just the file interfaces provided by
> the file system for each resource. This does not allow for architecture
> specific debug interfaces.
(squashed context and problem description)
>
> Add resctrl_debugfs_mon_info_arch_mkdir() which creates a directory in the
> debugfs file system for a resource. Naming follows the layout of the
> main resctrl hierarchy:
>
> /sys/kernel/debug/resctrl/info/{resource}_MON/{arch}
>
> The {arch} last level directory name matches the output of
> the user level "uname -m" command.
>
> Architecture code may use this directory for debug information,
> or for minor tuning of features. It must not be used for basic
> feature enabling as debugfs may not be configured/mounted on
> production systems.
>
> Suggested-by: Reinette Chatre <reinette.chatre@...el.com>
> Signed-off-by: Tony Luck <tony.luck@...el.com>
> ---
> include/linux/resctrl.h | 9 +++++++++
> fs/resctrl/rdtgroup.c | 29 +++++++++++++++++++++++++++++
> 2 files changed, 38 insertions(+)
>
> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
> index 74cd2979549b..ed5085eeee1b 100644
> --- a/include/linux/resctrl.h
> +++ b/include/linux/resctrl.h
> @@ -571,6 +571,15 @@ void resctrl_arch_reset_all_ctrls(struct rdt_resource *r);
> extern unsigned int resctrl_rmid_realloc_threshold;
> extern unsigned int resctrl_rmid_realloc_limit;
>
> +/**
> + * resctrl_debugfs_mon_info_arch_mkdir() - Create a debugfs info directory.
> + * Removed by resctrl_exit().
> + * @r: Resource (must be mon_capable).
> + *
> + * Return: dentry pointer on success, or NULL on error.
> + */
> +struct dentry *resctrl_debugfs_mon_info_arch_mkdir(struct rdt_resource *r);
> +
> int resctrl_init(void);
> void resctrl_exit(void);
>
> diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
> index 9e667d3a93ae..fdd6cf372d6c 100644
> --- a/fs/resctrl/rdtgroup.c
> +++ b/fs/resctrl/rdtgroup.c
> @@ -24,6 +24,7 @@
> #include <linux/sched/task.h>
> #include <linux/slab.h>
> #include <linux/user_namespace.h>
> +#include <linux/utsname.h>
>
> #include <uapi/linux/magic.h>
>
> @@ -4350,6 +4351,33 @@ int resctrl_init(void)
> return ret;
> }
>
> +static struct dentry *debugfs_resctrl_info;
Please move this declaration to be with its partner, debugfs_resctrl.
> +
> +/*
> + * Create /sys/kernel/debug/resctrl/info/{r->name}_MON/{arch} directory
> + * by request for architecture to use for debugging or minor tuning.
> + * Basic functionality of features must not be controlled by files
> + * added to this directory as debugs may not be configured/mounted
debugs -> debugfs
> + * on production systems.
> + */
> +struct dentry *resctrl_debugfs_mon_info_arch_mkdir(struct rdt_resource *r)
> +{
> + struct dentry *moninfodir;
> + char name[32];
> +
> + if (!r->mon_capable)
> + return NULL;
> +
> + if (!debugfs_resctrl_info)
> + debugfs_resctrl_info = debugfs_create_dir("info", debugfs_resctrl);
> +
> + sprintf(name, "%s_MON", r->name);
> +
> + moninfodir = debugfs_create_dir(name, debugfs_resctrl_info);
> +
> + return debugfs_create_dir(utsname()->machine, moninfodir);
> +}
> +
> static bool resctrl_online_domains_exist(void)
> {
> struct rdt_resource *r;
> @@ -4401,6 +4429,7 @@ void resctrl_exit(void)
>
> debugfs_remove_recursive(debugfs_resctrl);
> debugfs_resctrl = NULL;
> + debugfs_resctrl_info = NULL;
> unregister_filesystem(&rdt_fs_type);
>
> /*
Reinette
Powered by blists - more mailing lists