lkml.org 
[lkml]   [2023]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 13/20] x86/srso: Remove 'pred_cmd' label
    Date
    SBPB is only enabled in two distinct cases:

    1) when SRSO has been disabled with srso=off

    2) when SRSO has been fixed (in future HW)

    Simplify the control flow by getting rid of the 'pred_cmd' label and
    moving the SBPB enablement check to the two corresponding code sites.
    This makes it more clear when exactly SBPB gets enabled.

    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    ---
    arch/x86/kernel/cpu/bugs.c | 21 +++++++++++++--------
    1 file changed, 13 insertions(+), 8 deletions(-)

    diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
    index e45dd69aff7f..4f1ad2350f49 100644
    --- a/arch/x86/kernel/cpu/bugs.c
    +++ b/arch/x86/kernel/cpu/bugs.c
    @@ -2410,13 +2410,21 @@ static void __init srso_select_mitigation(void)
    {
    bool has_microcode = boot_cpu_has(X86_FEATURE_IBPB_BRTYPE);

    - if (!boot_cpu_has_bug(X86_BUG_SRSO) || cpu_mitigations_off())
    - goto pred_cmd;
    + if (cpu_mitigations_off())
    + return;
    +
    + if (!boot_cpu_has_bug(X86_BUG_SRSO)) {
    + if (boot_cpu_has(X86_FEATURE_SBPB))
    + x86_pred_cmd = PRED_CMD_SBPB;
    + return;
    + }

    if (has_microcode) {
    /*
    * Zen1/2 with SMT off aren't vulnerable after the right
    * IBPB microcode has been applied.
    + *
    + * Zen1/2 don't have SBPB, no need to try to enable it here.
    */
    if (boot_cpu_data.x86 < 0x19 && !cpu_smt_possible()) {
    setup_force_cpu_cap(X86_FEATURE_SRSO_NO);
    @@ -2439,7 +2447,9 @@ static void __init srso_select_mitigation(void)

    switch (srso_cmd) {
    case SRSO_CMD_OFF:
    - goto pred_cmd;
    + if (boot_cpu_has(X86_FEATURE_SBPB))
    + x86_pred_cmd = PRED_CMD_SBPB;
    + return;

    case SRSO_CMD_MICROCODE:
    if (has_microcode) {
    @@ -2501,11 +2511,6 @@ static void __init srso_select_mitigation(void)

    out:
    pr_info("%s\n", srso_strings[srso_mitigation]);
    -
    -pred_cmd:
    - if ((!boot_cpu_has_bug(X86_BUG_SRSO) || srso_cmd == SRSO_CMD_OFF) &&
    - boot_cpu_has(X86_FEATURE_SBPB))
    - x86_pred_cmd = PRED_CMD_SBPB;
    }

    #undef pr_fmt
    --
    2.41.0
    \
     
     \ /
      Last update: 2023-09-05 19:00    [W:2.148 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site