On Tue, Jun 09, 2020 at 08:53:49AM -0000, tip-bot2 for Anthony Steinhauser 
wrote:
> @@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum 
> spectre_v2_mitigation_cmd v2_cmd)
>               pr_info("mitigation: Enabling %s Indirect Branch Prediction 
> Barrier\n",
>                       static_key_enabled(&switch_mm_always_ibpb) ?
>                       "always-on" : "conditional");
> +
> +             spectre_v2_user_ibpb = mode;
>       }
>  
> -     /* If enhanced IBRS is enabled no STIBP required */
> -     if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
> +     /*
> +      * If enhanced IBRS is enabled or SMT impossible, STIBP is not
> +      * required.
> +      */
> +     if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
>               return;
>  
>       /*
> -      * If SMT is not possible or STIBP is not available clear the STIBP
> -      * mode.
> +      * At this point, an STIBP mode other than "off" has been set.
> +      * If STIBP support is not being forced, check if STIBP always-on
> +      * is preferred.
> +      */
> +     if (mode != SPECTRE_V2_USER_STRICT &&
> +         boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
> +             mode = SPECTRE_V2_USER_STRICT_PREFERRED;
> +
> +     /*
> +      * If STIBP is not available, clear the STIBP mode.
>        */
> -     if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
> +     if (!boot_cpu_has(X86_FEATURE_STIBP))
>               mode = SPECTRE_V2_USER_NONE;

Can we merge this test into the one above? Diff ontop:

---
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 8d57562b1d2c..05b3163e1b8c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -673,7 +673,9 @@ spectre_v2_user_select_mitigation(enum 
spectre_v2_mitigation_cmd v2_cmd)
         * If enhanced IBRS is enabled or SMT impossible, STIBP is not
         * required.
         */
-       if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+       if (!boot_cpu_has(X86_FEATURE_STIBP) ||
+           !smt_possible ||
+           spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
                return;
 
        /*
@@ -685,12 +687,6 @@ spectre_v2_user_select_mitigation(enum 
spectre_v2_mitigation_cmd v2_cmd)
            boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
                mode = SPECTRE_V2_USER_STRICT_PREFERRED;
 
-       /*
-        * If STIBP is not available, clear the STIBP mode.
-        */
-       if (!boot_cpu_has(X86_FEATURE_STIBP))
-               mode = SPECTRE_V2_USER_NONE;
-
        spectre_v2_user_stibp = mode;
 
 set_mode:

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

Reply via email to