lkml.org 
[lkml]   [2018]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 48/87] x86/speculation: Create spec-ctrl.h to avoid include hell
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Thomas Gleixner <tglx@linutronix.de>

    commit 28a2775217b17208811fa43a9e96bd1fdf417b86 upstream

    Having everything in nospec-branch.h creates a hell of dependencies when
    adding the prctl based switching mechanism. Move everything which is not
    required in nospec-branch.h to spec-ctrl.h and fix up the includes in the
    relevant files.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/include/asm/nospec-branch.h | 14 --------------
    arch/x86/include/asm/spec-ctrl.h | 21 +++++++++++++++++++++
    arch/x86/kernel/cpu/amd.c | 2 +-
    arch/x86/kernel/cpu/bugs.c | 2 +-
    arch/x86/kvm/svm.c | 2 +-
    arch/x86/kvm/vmx.c | 2 +-
    6 files changed, 25 insertions(+), 18 deletions(-)
    create mode 100644 arch/x86/include/asm/spec-ctrl.h

    --- a/arch/x86/include/asm/nospec-branch.h
    +++ b/arch/x86/include/asm/nospec-branch.h
    @@ -228,26 +228,12 @@ enum spectre_v2_mitigation {
    extern void x86_spec_ctrl_set(u64);
    extern u64 x86_spec_ctrl_get_default(void);

    -/*
    - * On VMENTER we must preserve whatever view of the SPEC_CTRL MSR
    - * the guest has, while on VMEXIT we restore the host view. This
    - * would be easier if SPEC_CTRL were architecturally maskable or
    - * shadowable for guests but this is not (currently) the case.
    - * Takes the guest view of SPEC_CTRL MSR as a parameter.
    - */
    -extern void x86_spec_ctrl_set_guest(u64);
    -extern void x86_spec_ctrl_restore_host(u64);
    -
    /* The Speculative Store Bypass disable variants */
    enum ssb_mitigation {
    SPEC_STORE_BYPASS_NONE,
    SPEC_STORE_BYPASS_DISABLE,
    };

    -/* AMD specific Speculative Store Bypass MSR data */
    -extern u64 x86_amd_ls_cfg_base;
    -extern u64 x86_amd_ls_cfg_rds_mask;
    -
    extern char __indirect_thunk_start[];
    extern char __indirect_thunk_end[];

    --- /dev/null
    +++ b/arch/x86/include/asm/spec-ctrl.h
    @@ -0,0 +1,21 @@
    +/* SPDX-License-Identifier: GPL-2.0 */
    +#ifndef _ASM_X86_SPECCTRL_H_
    +#define _ASM_X86_SPECCTRL_H_
    +
    +#include <asm/nospec-branch.h>
    +
    +/*
    + * On VMENTER we must preserve whatever view of the SPEC_CTRL MSR
    + * the guest has, while on VMEXIT we restore the host view. This
    + * would be easier if SPEC_CTRL were architecturally maskable or
    + * shadowable for guests but this is not (currently) the case.
    + * Takes the guest view of SPEC_CTRL MSR as a parameter.
    + */
    +extern void x86_spec_ctrl_set_guest(u64);
    +extern void x86_spec_ctrl_restore_host(u64);
    +
    +/* AMD specific Speculative Store Bypass MSR data */
    +extern u64 x86_amd_ls_cfg_base;
    +extern u64 x86_amd_ls_cfg_rds_mask;
    +
    +#endif
    --- a/arch/x86/kernel/cpu/amd.c
    +++ b/arch/x86/kernel/cpu/amd.c
    @@ -9,7 +9,7 @@
    #include <asm/processor.h>
    #include <asm/apic.h>
    #include <asm/cpu.h>
    -#include <asm/nospec-branch.h>
    +#include <asm/spec-ctrl.h>
    #include <asm/smp.h>
    #include <asm/pci-direct.h>
    #include <asm/delay.h>
    --- a/arch/x86/kernel/cpu/bugs.c
    +++ b/arch/x86/kernel/cpu/bugs.c
    @@ -12,7 +12,7 @@
    #include <linux/cpu.h>
    #include <linux/module.h>

    -#include <asm/nospec-branch.h>
    +#include <asm/spec-ctrl.h>
    #include <asm/cmdline.h>
    #include <asm/bugs.h>
    #include <asm/processor.h>
    --- a/arch/x86/kvm/svm.c
    +++ b/arch/x86/kvm/svm.c
    @@ -45,7 +45,7 @@
    #include <asm/kvm_para.h>
    #include <asm/irq_remapping.h>
    #include <asm/microcode.h>
    -#include <asm/nospec-branch.h>
    +#include <asm/spec-ctrl.h>

    #include <asm/virtext.h>
    #include "trace.h"
    --- a/arch/x86/kvm/vmx.c
    +++ b/arch/x86/kvm/vmx.c
    @@ -50,7 +50,7 @@
    #include <asm/apic.h>
    #include <asm/irq_remapping.h>
    #include <asm/microcode.h>
    -#include <asm/nospec-branch.h>
    +#include <asm/spec-ctrl.h>

    #include "trace.h"
    #include "pmu.h"

    \
     
     \ /
      Last update: 2018-05-22 00:29    [W:4.123 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site