Re: [PATCH 1/3] x86/cpu: Actually turn off mitigations by default for SPECULATION_MITIGATIONS=n

From: Sean Christopherson
Date: Mon Apr 15 2024 - 10:34:47 EST


On Mon, Apr 15, 2024, Geert Uytterhoeven wrote:
> Hi Michael,
>
> On Sat, Apr 13, 2024 at 11:38 AM Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote:
> > Michael Ellerman <mpe@xxxxxxxxxxxxxx> writes:
> > > Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> writes:
> > ...
> > >> On Tue, 9 Apr 2024 10:51:05 -0700 Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
> > ...
> > >>> diff --git a/kernel/cpu.c b/kernel/cpu.c
> > >>> index 8f6affd051f7..07ad53b7f119 100644
> > >>> --- a/kernel/cpu.c
> > >>> +++ b/kernel/cpu.c
> > >>> @@ -3207,7 +3207,8 @@ enum cpu_mitigations {
> > >>> };
> > >>>
> > >>> static enum cpu_mitigations cpu_mitigations __ro_after_init =
> > >>> - CPU_MITIGATIONS_AUTO;
> > >>> + IS_ENABLED(CONFIG_SPECULATION_MITIGATIONS) ? CPU_MITIGATIONS_AUTO :
> > >>> + CPU_MITIGATIONS_OFF;
> > >>>
> > >>> static int __init mitigations_parse_cmdline(char *arg)
> > >>> {
> >
> > I think a minimal workaround/fix would be:
> >
> > diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
> > index 2b8fd6bb7da0..290be2f9e909 100644
> > --- a/drivers/base/Kconfig
> > +++ b/drivers/base/Kconfig
> > @@ -191,6 +191,10 @@ config GENERIC_CPU_AUTOPROBE
> > config GENERIC_CPU_VULNERABILITIES
> > bool
> >
> > +config SPECULATION_MITIGATIONS
> > + def_bool y
> > + depends on !X86
> > +
> > config SOC_BUS
> > bool
> > select GLOB
>
> Thanks, that works for me (on arm64), so
> Tested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>

Oof. I completely missed that "cpu_mitigations" wasn't x86-only. I can't think
of better solution than an on-by-default generic Kconfig, though can't that it
more simply be:

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index 2b8fd6bb7da0..5930cb56ee29 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -191,6 +191,9 @@ config GENERIC_CPU_AUTOPROBE
config GENERIC_CPU_VULNERABILITIES
bool

+config SPECULATION_MITIGATIONS
+ def_bool !X86
+
config SOC_BUS
bool
select GLOB