Re: [PATCH v1 09/31] x86/resctrl: Add a resctrl helper to reset all the resources

Dave Martin
2024-04-12T16:17:48Z

On Wed, Apr 03, 2024 at 07:52:42AM +0000, Shaopeng Tan (Fujitsu) wrote:
> Hello James,
>
> > On umount(), resctrl resets each resource back to its default configuration. It
> > only ever does this for all resources in one go.
> >
> > reset_all_ctrls() is architecture specific as it works with struct
> > rdt_hw_resource.
> >
> > Add an architecture helper to reset all resources.
> >
> > Signed-off-by: James Morse <james.morse@arm.com>
> > ---
> > arch/x86/include/asm/resctrl.h | 2 ++
> > arch/x86/kernel/cpu/resctrl/rdtgroup.c | 16 +++++++++++-----
> > 2 files changed, 13 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/x86/include/asm/resctrl.h b/arch/x86/include/asm/resctrl.h
> > index f61382258743..5f6a5375bb4a 100644
> > --- a/arch/x86/include/asm/resctrl.h
> > +++ b/arch/x86/include/asm/resctrl.h
> > @@ -15,6 +15,8 @@
> > */
> > #define X86_RESCTRL_EMPTY_CLOSID ((u32)~0)
> >
> > +void resctrl_arch_reset_resources(void);
> > +
> > /**
> > * struct resctrl_pqr_state - State cache for the PQR MSR
> > * @cur_rmid: The cached Resource Monitoring ID
> > diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> > b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> > index 1a49c9918f8d..13c24cb18d76 100644
> > --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> > +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> > @@ -2859,6 +2859,14 @@ static int reset_all_ctrls(struct rdt_resource *r)
> > return 0;
> > }
> >
> > +void resctrl_arch_reset_resources(void)
> > +{
> > + struct rdt_resource *r;
> > +
> > + for_each_capable_rdt_resource(r)
> Could you explain why not "for_each_alloc_capable_rdt_resource(r)"?
>
> > + reset_all_ctrls(r);
> > +}
> > +
> > /*
> > * Move tasks from one to the other group. If @from is NULL, then all tasks
> > * in the systems are moved unconditionally (used for teardown).
> > @@ -2968,16 +2976,14 @@ static void rmdir_all_sub(void)
> >
> > static void rdt_kill_sb(struct super_block *sb) {
> > - struct rdt_resource *r;
> > -
> > cpus_read_lock();
> > mutex_lock(&rdtgroup_mutex);
> >
> > rdt_disable_ctx();
> >
> > - /*Put everything back to default values. */
> > - for_each_alloc_capable_rdt_resource(r)
> This was "for_each_alloc_capable_rdt_resource(r)".
>
> Best regards,
> Shaopeng TAN

Noted for James to take a look at, thanks.

If this was intentional, it probably needs more explanation -- it looks
quite likely to have been unintentional, though.

Cheers
---Dave