lkml.org 
[lkml]   [2019]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:core/speculation] powerpc/speculation: Support 'mitigations=' cmdline option
    Commit-ID:  782e69efb3dfed6e8360bc612e8c7827a901a8f9
    Gitweb: https://git.kernel.org/tip/782e69efb3dfed6e8360bc612e8c7827a901a8f9
    Author: Josh Poimboeuf <jpoimboe@redhat.com>
    AuthorDate: Fri, 12 Apr 2019 15:39:30 -0500
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitDate: Wed, 17 Apr 2019 21:37:29 +0200

    powerpc/speculation: Support 'mitigations=' cmdline option

    Configure powerpc CPU runtime speculation bug mitigations in accordance
    with the 'mitigations=' cmdline option. This affects Meltdown, Spectre
    v1, Spectre v2, and Speculative Store Bypass.

    The default behavior is unchanged.

    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
    Reviewed-by: Jiri Kosina <jkosina@suse.cz>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Jon Masters <jcm@redhat.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: linux-s390@vger.kernel.org
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-arch@vger.kernel.org
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Tyler Hicks <tyhicks@canonical.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Steven Price <steven.price@arm.com>
    Cc: Phil Auld <pauld@redhat.com>
    Link: https://lkml.kernel.org/r/245a606e1a42a558a310220312d9b6adb9159df6.1555085500.git.jpoimboe@redhat.com

    ---
    Documentation/admin-guide/kernel-parameters.txt | 9 +++++----
    arch/powerpc/kernel/security.c | 6 +++---
    arch/powerpc/kernel/setup_64.c | 2 +-
    3 files changed, 9 insertions(+), 8 deletions(-)

    diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
    index 779ddeb2929c..ac7150a25a7a 100644
    --- a/Documentation/admin-guide/kernel-parameters.txt
    +++ b/Documentation/admin-guide/kernel-parameters.txt
    @@ -2514,7 +2514,7 @@
    http://repo.or.cz/w/linux-2.6/mini2440.git

    mitigations=
    - [X86] Control optional mitigations for CPU
    + [X86,PPC] Control optional mitigations for CPU
    vulnerabilities. This is a set of curated,
    arch-independent options, each of which is an
    aggregation of existing arch-specific options.
    @@ -2523,10 +2523,11 @@
    Disable all optional CPU mitigations. This
    improves system performance, but it may also
    expose users to several CPU vulnerabilities.
    - Equivalent to: nopti [X86]
    - nospectre_v2 [X86]
    + Equivalent to: nopti [X86,PPC]
    + nospectre_v1 [PPC]
    + nospectre_v2 [X86,PPC]
    spectre_v2_user=off [X86]
    - spec_store_bypass_disable=off [X86]
    + spec_store_bypass_disable=off [X86,PPC]
    l1tf=off [X86]

    auto (default)
    diff --git a/arch/powerpc/kernel/security.c b/arch/powerpc/kernel/security.c
    index 9b8631533e02..cdf3e73000e9 100644
    --- a/arch/powerpc/kernel/security.c
    +++ b/arch/powerpc/kernel/security.c
    @@ -57,7 +57,7 @@ void setup_barrier_nospec(void)
    enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) &&
    security_ftr_enabled(SEC_FTR_BNDS_CHK_SPEC_BAR);

    - if (!no_nospec)
    + if (!no_nospec && !cpu_mitigations_off())
    enable_barrier_nospec(enable);
    }

    @@ -116,7 +116,7 @@ static int __init handle_nospectre_v2(char *p)
    early_param("nospectre_v2", handle_nospectre_v2);
    void setup_spectre_v2(void)
    {
    - if (no_spectrev2)
    + if (no_spectrev2 || cpu_mitigations_off())
    do_btb_flush_fixups();
    else
    btb_flush_enabled = true;
    @@ -307,7 +307,7 @@ void setup_stf_barrier(void)

    stf_enabled_flush_types = type;

    - if (!no_stf_barrier)
    + if (!no_stf_barrier && !cpu_mitigations_off())
    stf_barrier_enable(enable);
    }

    diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
    index 236c1151a3a7..c7ec27ba8926 100644
    --- a/arch/powerpc/kernel/setup_64.c
    +++ b/arch/powerpc/kernel/setup_64.c
    @@ -958,7 +958,7 @@ void setup_rfi_flush(enum l1d_flush_type types, bool enable)

    enabled_flush_types = types;

    - if (!no_rfi_flush)
    + if (!no_rfi_flush && !cpu_mitigations_off())
    rfi_flush_enable(enable);
    }

    \
     
     \ /
      Last update: 2019-04-17 22:03    [W:7.325 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site