RE: [RFC PATCH 13/19] x86/resctrl: Add PLZA state tracking and context switch handling

From: Moger, Babu

Date: Wed Jan 28 2026 - 12:43:13 EST


[AMD Official Use Only - AMD Internal Distribution Only]

> -----Original Message-----
> From: Luck, Tony <tony.luck@xxxxxxxxx>
> Sent: Wednesday, January 28, 2026 11:12 AM
> To: Moger, Babu <bmoger@xxxxxxx>
> Cc: Babu Moger <babu.moger@xxxxxxx>; corbet@xxxxxxx;
> reinette.chatre@xxxxxxxxx; Dave.Martin@xxxxxxx; james.morse@xxxxxxx;
> tglx@xxxxxxxxxx; mingo@xxxxxxxxxx; bp@xxxxxxxxx; dave.hansen@xxxxxxxxxxxxxxx;
> x86@xxxxxxxxxx; hpa@xxxxxxxxx; peterz@xxxxxxxxxxxxx; juri.lelli@xxxxxxxxxx;
> vincent.guittot@xxxxxxxxxx; dietmar.eggemann@xxxxxxx; rostedt@xxxxxxxxxxx;
> bsegall@xxxxxxxxxx; mgorman@xxxxxxx; vschneid@xxxxxxxxxx; akpm@linux-
> foundation.org; pawan.kumar.gupta@xxxxxxxxxxxxxxx; pmladek@xxxxxxxx;
> feng.tang@xxxxxxxxxxxxxxxxx; kees@xxxxxxxxxx; arnd@xxxxxxxx; fvdl@xxxxxxxxxx;
> lirongqing@xxxxxxxxx; bhelgaas@xxxxxxxxxx; seanjc@xxxxxxxxxx;
> xin@xxxxxxxxx; manali.shukla@xxxxxxx; dapeng1.mi@xxxxxxxxxxxxxxx;
> chang.seok.bae@xxxxxxxxx; mario.limonciello@xxxxxxx; naveen@xxxxxxxxxx;
> elena.reshetova@xxxxxxxxx; thomas.lendacky@xxxxxxx; linux-
> doc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx;
> peternewman@xxxxxxxxxx; eranian@xxxxxxxxxx; gautham.shenoy@xxxxxxx
> Subject: Re: [RFC PATCH 13/19] x86/resctrl: Add PLZA state tracking and context
> switch handling
>
> On Wed, Jan 28, 2026 at 10:01:39AM -0600, Moger, Babu wrote:
> > Hi Tony,
> >
> > Thanks for the comment.
> >
> > On 1/27/2026 4:30 PM, Luck, Tony wrote:
> > > On Wed, Jan 21, 2026 at 03:12:51PM -0600, Babu Moger wrote:
> > > > @@ -138,6 +143,20 @@ static inline void __resctrl_sched_in(struct
> task_struct *tsk)
> > > > state->cur_rmid = rmid;
> > > > wrmsr(MSR_IA32_PQR_ASSOC, rmid, closid);
> > > > }
> > > > +
> > > > + if (static_branch_likely(&rdt_plza_enable_key)) {
> > > > + tmp = READ_ONCE(tsk->plza);
> > > > + if (tmp)
> > > > + plza = tmp;
> > > > +
> > > > + if (plza != state->cur_plza) {
> > > > + state->cur_plza = plza;
> > > > + wrmsr(MSR_IA32_PQR_PLZA_ASSOC,
> > > > + RMID_EN | state->plza_rmid,
> > > > + (plza ? PLZA_EN : 0) | CLOSID_EN | state-
> >plza_closid);
> > > > + }
> > > > + }
> > > > +
> > >
> > > Babu,
> > >
> > > This addition to the context switch code surprised me. After your
> > > talk at LPC I had imagined that PLZA would be a single global
> > > setting so that every syscall/page-fault/interrupt would run with a
> > > different CLOSID (presumably one configured with more cache and memory
> bandwidth).
> > >
> > > But this patch series looks like things are more flexible with the
> > > ability to set different values (of RMID as well as CLOSID) per group.
> >
> > Yes. this similar what we have with MSR_IA32_PQR_ASSOC. The
> > association can be done either thru CPUs (just one MSR write) or task
> > based association(more MSR write as task moves around).
> > >
> > > It looks like it is possible to have some resctrl group with very
> > > limited resources just bump up a bit when in ring0, while other
> > > groups may get some different amount.
> > >
> > > The additions for plza to the Documentation aren't helping me
> > > understand how users will apply this.
> > >
> > > Do you have some more examples?
> >
> > Group creation is similar to what we have currently.
> >
> > 1. create a regular group and setup the limits.
> > # mkdir /sys/fs/resctrl/group
> >
> > 2. Assign tasks or CPUs.
> > # echo 1234 > /sys/fs/resctrl/group/tasks
> >
> > This is a regular group.
> >
> > 3. Now you figured that you need to change things in CPL0 for this task.
> >
> > 4. Now create a PLZA group now and tweek the limits,
> >
> > # mkdir /sys/fs/resctrl/group1
> >
> > # echo 1 > /sys/fs/resctrl/group1/plza
> >
> > # echo "MB:0=100" > /sys/fs/resctrl/group1/schemata
> >
> > 5. Assign the same task to the plza group.
> >
> > # echo 1234 > /sys/fs/resctrl/group1/tasks
> >
> >
> > Now the task 1234 will be using the limits from group1 when running in CPL0.
> >
> > I will add few more details in my next revision.
> >
>
> Babu,
>
> I've read a bit more of the code now and I think I understand more.
>
> Some useful additions to your explanation.
>
> 1) Only one CTRL group can be marked as PLZA

Yes. Correct.

> 2) It can't be the root/default group

This is something I added to keep the default group in a un-disturbed,

> 3) It can't have sub monitor groups
> 4) It can't be pseudo-locked

Yes.

>
> Would a potential use case involve putting *all* tasks into the PLZA group? That
> would avoid any additional context switch overhead as the PLZA MSR would never
> need to change.

Yes. That can be one use case.

>
> If that is the case, maybe for the PLZA group we should allow user to
> do:
>
> # echo '*' > tasks

Yea. It can be done.

Thanks
Babu