Re: [PATCH v2 03/35] x86/bugs: Add AUTO mitigations for mds/taa/mmio/rfds

From: Pawan Gupta
Date: Thu Nov 14 2024 - 13:05:52 EST


On Thu, Nov 14, 2024 at 02:59:34PM +0000, Kaplan, David wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
>
> > -----Original Message-----
> > From: Pawan Gupta <pawan.kumar.gupta@xxxxxxxxxxxxxxx>
> > Sent: Wednesday, November 13, 2024 8:27 PM
> > To: Kaplan, David <David.Kaplan@xxxxxxx>
> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>; Borislav Petkov <bp@xxxxxxxxx>; Peter
> > Zijlstra <peterz@xxxxxxxxxxxxx>; Josh Poimboeuf <jpoimboe@xxxxxxxxxx>; Ingo
> > Molnar <mingo@xxxxxxxxxx>; Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>;
> > x86@xxxxxxxxxx; H . Peter Anvin <hpa@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH v2 03/35] x86/bugs: Add AUTO mitigations for
> > mds/taa/mmio/rfds
> >
> > Caution: This message originated from an External Source. Use proper caution
> > when opening attachments, clicking links, or responding.
> >
> >
> > On Tue, Nov 05, 2024 at 03:54:23PM -0600, David Kaplan wrote:
> > > @@ -1995,6 +2004,7 @@ void cpu_bugs_smt_update(void)
> > > update_mds_branch_idle();
> > > break;
> > > case MDS_MITIGATION_OFF:
> > > + case MDS_MITIGATION_AUTO:
> >
> > This implies AUTO and OFF are similar, which is counter intuitive.
> > While mitigation selection code ...
> >
> > > + if (mds_mitigation == MDS_MITIGATION_AUTO)
> > > + mds_mitigation = MDS_MITIGATION_FULL;
> > > +
> >
> > ... indicates that AUTO is equivalent to FULL. So, I think AUTO should be handled
> > the same way as FULL in cpu_bugs_smt_update() as well.
> >
> > Same for TAA and MMIO below.
> >
>
> The mitigation is never actually AUTO by the time we call
> cpu_bugs_smt_update(), since this happens after cpu_select_mitigations().
> I had to add the case statement here so the switch statement was
> complete, but this case will never be hit.
>
> Should I put a comment here about that? Or is a default case the better
> way to handle this?

My suggestion would be to treat AUTO as FULL, and move it up with FULL:

switch (mds_mitigation) {
case MDS_MITIGATION_FULL:
+ case MDS_MITIGATION_AUTO:
case MDS_MITIGATION_VMWERV:
if (sched_smt_active() && !boot_cpu_has(X86_BUG_MSBDS_ONLY))
pr_warn_once(MDS_MSG_SMT);
update_mds_branch_idle();
break;
case MDS_MITIGATION_OFF:
break;
}