From: Babu Moger <babu.moger@amd.com>
To: <corbet@lwn.net>, <reinette.chatre@intel.com>,
<tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>
Cc: <fenghua.yu@intel.com>, <dave.hansen@linux.intel.com>,
<x86@kernel.org>, <hpa@zytor.com>, <paulmck@kernel.org>,
<akpm@linux-foundation.org>, <quic_neeraju@quicinc.com>,
<rdunlap@infradead.org>, <damien.lemoal@opensource.wdc.com>,
<songmuchun@bytedance.com>, <peterz@infradead.org>,
<jpoimboe@kernel.org>, <pbonzini@redhat.com>,
<babu.moger@amd.com>, <chang.seok.bae@intel.com>,
<pawan.kumar.gupta@linux.intel.com>, <jmattson@google.com>,
<daniel.sneddon@linux.intel.com>, <sandipan.das@amd.com>,
<tony.luck@intel.com>, <james.morse@arm.com>,
<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<bagasdotme@gmail.com>, <eranian@google.com>,
<christophe.leroy@csgroup.eu>,
<pawan.kumar.gupta@linux.intel.com>, <jarkko@kernel.org>,
<adrian.hunter@intel.com>, <quic_jiles@quicinc.com>,
<peternewman@google.com>, <babu.moger@amd.com>
Subject: [PATCH v5 7/8] x86/resctrl: Move default control group creation during mount
Date: Thu, 1 Jun 2023 14:02:01 -0500 [thread overview]
Message-ID: <168564612103.527584.4866621411469438225.stgit@bmoger-ubuntu> (raw)
In-Reply-To: <168564586603.527584.10518315376465080920.stgit@bmoger-ubuntu>
Currently, the resctrl default control group is created during kernel
init time and rest of the files are added during mount. If the new
files are to be added to the default group during the mount then it
has to be done separately again.
This can avoided if all the files are created during the mount and
destroyed during the umount. Move the default group creation in
rdt_get_tree and removal in rdt_kill_sb.
Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 59 ++++++++++++++++----------------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 2f5cdc638607..e03cb01c4742 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -57,6 +57,7 @@ static char last_cmd_status_buf[512];
struct dentry *debugfs_resctrl;
static bool resctrl_debug;
+static int rdtgroup_setup_root(void);
void rdt_last_cmd_clear(void)
{
@@ -2515,13 +2516,6 @@ static int rdt_get_tree(struct fs_context *fc)
cpus_read_lock();
mutex_lock(&rdtgroup_mutex);
- /*
- * resctrl file system can only be mounted once.
- */
- if (static_branch_unlikely(&rdt_enable_key)) {
- ret = -EBUSY;
- goto out;
- }
ret = rdt_enable_ctx(ctx);
if (ret < 0)
@@ -2535,9 +2529,15 @@ static int rdt_get_tree(struct fs_context *fc)
closid_init();
+ ret = rdtgroup_add_files(rdtgroup_default.kn, RFTYPE_CTRL_BASE);
+ if (ret)
+ goto out_schemata_free;
+
+ kernfs_activate(rdtgroup_default.kn);
+
ret = rdtgroup_create_info_dir(rdtgroup_default.kn);
if (ret < 0)
- goto out_schemata_free;
+ goto out_default;
if (rdt_mon_capable) {
ret = mongroup_create_dir(rdtgroup_default.kn,
@@ -2587,6 +2587,8 @@ static int rdt_get_tree(struct fs_context *fc)
kernfs_remove(kn_mongrp);
out_info:
kernfs_remove(kn_info);
+out_default:
+ kernfs_remove(rdtgroup_default.kn);
out_schemata_free:
schemata_list_destroy();
out_mba:
@@ -2664,10 +2666,23 @@ static const struct fs_context_operations rdt_fs_context_ops = {
static int rdt_init_fs_context(struct fs_context *fc)
{
struct rdt_fs_context *ctx;
+ int ret;
+
+ /*
+ * resctrl file system can only be mounted once.
+ */
+ if (static_branch_unlikely(&rdt_enable_key))
+ return -EBUSY;
+
+ ret = rdtgroup_setup_root();
+ if (ret)
+ return ret;
ctx = kzalloc(sizeof(struct rdt_fs_context), GFP_KERNEL);
- if (!ctx)
+ if (!ctx) {
+ kernfs_destroy_root(rdt_root);
return -ENOMEM;
+ }
ctx->kfc.root = rdt_root;
ctx->kfc.magic = RDTGROUP_SUPER_MAGIC;
@@ -2845,6 +2860,9 @@ static void rdt_kill_sb(struct super_block *sb)
static_branch_disable_cpuslocked(&rdt_alloc_enable_key);
static_branch_disable_cpuslocked(&rdt_mon_enable_key);
static_branch_disable_cpuslocked(&rdt_enable_key);
+ /* Remove the default group and cleanup the root */
+ list_del(&rdtgroup_default.rdtgroup_list);
+ kernfs_destroy_root(rdt_root);
kernfs_kill_sb(sb);
mutex_unlock(&rdtgroup_mutex);
cpus_read_unlock();
@@ -3598,10 +3616,8 @@ static struct kernfs_syscall_ops rdtgroup_kf_syscall_ops = {
.show_options = rdtgroup_show_options,
};
-static int __init rdtgroup_setup_root(void)
+static int rdtgroup_setup_root(void)
{
- int ret;
-
rdt_root = kernfs_create_root(&rdtgroup_kf_syscall_ops,
KERNFS_ROOT_CREATE_DEACTIVATED |
KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK,
@@ -3618,19 +3634,11 @@ static int __init rdtgroup_setup_root(void)
list_add(&rdtgroup_default.rdtgroup_list, &rdt_all_groups);
- ret = rdtgroup_add_files(kernfs_root_to_node(rdt_root), RFTYPE_CTRL_BASE);
- if (ret) {
- kernfs_destroy_root(rdt_root);
- goto out;
- }
-
rdtgroup_default.kn = kernfs_root_to_node(rdt_root);
- kernfs_activate(rdtgroup_default.kn);
-out:
mutex_unlock(&rdtgroup_mutex);
- return ret;
+ return 0;
}
static void domain_destroy_mon_state(struct rdt_domain *d)
@@ -3752,13 +3760,9 @@ int __init rdtgroup_init(void)
seq_buf_init(&last_cmd_status, last_cmd_status_buf,
sizeof(last_cmd_status_buf));
- ret = rdtgroup_setup_root();
- if (ret)
- return ret;
-
ret = sysfs_create_mount_point(fs_kobj, "resctrl");
if (ret)
- goto cleanup_root;
+ return ret;
ret = register_filesystem(&rdt_fs_type);
if (ret)
@@ -3791,8 +3795,6 @@ int __init rdtgroup_init(void)
cleanup_mountpoint:
sysfs_remove_mount_point(fs_kobj, "resctrl");
-cleanup_root:
- kernfs_destroy_root(rdt_root);
return ret;
}
@@ -3802,5 +3804,4 @@ void __exit rdtgroup_exit(void)
debugfs_remove_recursive(debugfs_resctrl);
unregister_filesystem(&rdt_fs_type);
sysfs_remove_mount_point(fs_kobj, "resctrl");
- kernfs_destroy_root(rdt_root);
}
next prev parent reply other threads:[~2023-06-01 19:02 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-01 19:00 [PATCH v5 0/8] x86/resctrl: Miscellaneous resctrl features Babu Moger
2023-06-01 19:00 ` [PATCH v5 1/8] x86/resctrl: Add multiple tasks to the resctrl group at once Babu Moger
2023-07-07 21:38 ` Reinette Chatre
2023-07-11 17:54 ` Moger, Babu
2023-06-01 19:01 ` [PATCH v5 2/8] x86/resctrl: Simplify rftype flag definitions Babu Moger
2023-07-07 21:38 ` Reinette Chatre
2023-06-01 19:01 ` [PATCH v5 3/8] x86/resctrl: Rename rftype flags for consistency Babu Moger
2023-07-07 21:38 ` Reinette Chatre
2023-06-01 19:01 ` [PATCH v5 4/8] x86/resctrl: Add comments on RFTYPE flags hierarchy Babu Moger
2023-07-07 21:39 ` Reinette Chatre
2023-07-11 23:19 ` Moger, Babu
2023-06-01 19:01 ` [PATCH v5 5/8] x86/resctrl: Introduce "-o debug" mount option Babu Moger
2023-07-07 21:42 ` Reinette Chatre
2023-07-12 16:40 ` Moger, Babu
2023-06-01 19:01 ` [PATCH v5 6/8] x86/resctrl: Display CLOSID and RMID for the resctrl groups Babu Moger
2023-07-07 21:45 ` Reinette Chatre
2023-07-12 19:36 ` Moger, Babu
2023-07-14 21:53 ` Reinette Chatre
2023-07-14 22:45 ` Moger, Babu
2023-06-01 19:02 ` Babu Moger [this message]
2023-07-07 21:46 ` [PATCH v5 7/8] x86/resctrl: Move default control group creation during mount Reinette Chatre
2023-07-14 16:26 ` Moger, Babu
2023-07-14 21:54 ` Reinette Chatre
2023-07-14 22:42 ` Moger, Babu
2023-06-01 19:02 ` [PATCH v5 8/8] x86/resctrl: Introduce RFTYPE_DEBUG flag Babu Moger
2023-07-07 21:47 ` Reinette Chatre
2023-07-14 16:44 ` Moger, Babu
2023-06-27 14:26 ` [PATCH v5 0/8] x86/resctrl: Miscellaneous resctrl features Moger, Babu
2023-06-28 2:13 ` Shaopeng Tan (Fujitsu)
2023-07-11 16:34 ` Moger, Babu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=168564612103.527584.4866621411469438225.stgit@bmoger-ubuntu \
--to=babu.moger@amd.com \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=bagasdotme@gmail.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=damien.lemoal@opensource.wdc.com \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=jarkko@kernel.org \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=quic_jiles@quicinc.com \
--cc=quic_neeraju@quicinc.com \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=sandipan.das@amd.com \
--cc=songmuchun@bytedance.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox