Thread (52 messages) 52 messages, 5 authors, 2023-09-07

Re: [PATCH v8 6/8] x86/resctrl: Move default group file creation to mount

From: Reinette Chatre <reinette.chatre@intel.com>
Date: 2023-08-30 22:07:22
Also in: lkml

Hi Babu,

On 8/30/2023 2:18 PM, Moger, Babu wrote:
On 8/30/23 15:00, Reinette Chatre wrote:
quoted
On 8/30/2023 12:50 PM, Moger, Babu wrote:
quoted
On 8/29/23 15:11, Reinette Chatre wrote:
quoted
On 8/21/2023 4:30 PM, Babu Moger wrote:
quoted
The default resource group and its files are created during kernel
init time. Upcoming changes will make some resctrl files optional
based on a mount parameter. If optional files are to be added to the
default group based on the mount option, then each new file needs to
be created separately and call kernfs_activate() again.

Create all files of the default resource group during resctrl
mount, destroyed during unmount, to avoid scattering resctrl
file addition across two separate code flows.

Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h |  2 +
 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 55 +++++++++++++++-----------
 2 files changed, 33 insertions(+), 24 deletions(-)
diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index b09e7abd1299..44ad98f8c7af 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -611,5 +611,7 @@ void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
 void __init thread_throttle_mode_init(void);
 void __init mbm_config_rftype_init(const char *config);
 void rdt_staged_configs_clear(void);
+int rdtgroup_setup_root(struct rdt_fs_context *ctx);
+void rdtgroup_destroy_root(void);
 
From what I can tell these functions are only used in rdtgroup.c.
Can this export be avoided by just moving these functions within
rdtgroup.c and making them static?
Yes. It is used only in rdtgroup.c. We can make this static by adding the
prototypes of these function in the beginning of rdtgroup.c file to avoid
implicit declaration compiler errors.
Why not just place the functions earlier in rdtgroup.c so that they are
located before all callers? 
Couple of problems with that.
1.  rdtgroup_setup_root needs the the definition of
rdtgroup_kf_syscall_ops which is defined later in the file.

Static struct kernfs_syscall_ops rdtgroup_kf_syscall_ops = {
         .mkdir          = rdtgroup_mkdir,
         .rmdir          = rdtgroup_rmdir,
         .rename         = rdtgroup_rename,
         .show_options   = rdtgroup_show_options,
};

2. rdtgroup_setup_root is called in rdt_get_tree which is defined earlier
in the file.

So, this needs re-arrange of all these functions. That is reason I made
these functions global. Thought it may be too much a change for this purpose.
I see, yes, to accomplish this would trigger a lot of churn and also seem
to cascade into other dependencies needing to be taken into account.
As you suggested the static declaration can be added to the top of rdtgroup.c
as proposal for the next stage.

Reinette
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help