lkml.org 
[lkml]   [2018]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 70/97] cpu/hotplug: Expose SMT control init function
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

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

    From: Jiri Kosina <jkosina@suse.cz>

    commit 8e1b706b6e819bed215c0db16345568864660393 upstream

    The L1TF mitigation will gain a commend line parameter which allows to set
    a combination of hypervisor mitigation and SMT control.

    Expose cpu_smt_disable() so the command line parser can tweak SMT settings.

    [ tglx: Split out of larger patch and made it preserve an already existing
    force off state ]

    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Jiri Kosina <jkosina@suse.cz>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lkml.kernel.org/r/20180713142323.039715135@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    include/linux/cpu.h | 2 ++
    kernel/cpu.c | 16 +++++++++++++---
    2 files changed, 15 insertions(+), 3 deletions(-)

    --- a/include/linux/cpu.h
    +++ b/include/linux/cpu.h
    @@ -177,8 +177,10 @@ enum cpuhp_smt_control {

    #if defined(CONFIG_SMP) && defined(CONFIG_HOTPLUG_SMT)
    extern enum cpuhp_smt_control cpu_smt_control;
    +extern void cpu_smt_disable(bool force);
    #else
    # define cpu_smt_control (CPU_SMT_ENABLED)
    +static inline void cpu_smt_disable(bool force) { }
    #endif

    #endif /* _LINUX_CPU_H_ */
    --- a/kernel/cpu.c
    +++ b/kernel/cpu.c
    @@ -347,13 +347,23 @@ EXPORT_SYMBOL_GPL(cpu_hotplug_enable);
    enum cpuhp_smt_control cpu_smt_control __read_mostly = CPU_SMT_ENABLED;
    EXPORT_SYMBOL_GPL(cpu_smt_control);

    -static int __init smt_cmdline_disable(char *str)
    +void __init cpu_smt_disable(bool force)
    {
    - cpu_smt_control = CPU_SMT_DISABLED;
    - if (str && !strcmp(str, "force")) {
    + if (cpu_smt_control == CPU_SMT_FORCE_DISABLED ||
    + cpu_smt_control == CPU_SMT_NOT_SUPPORTED)
    + return;
    +
    + if (force) {
    pr_info("SMT: Force disabled\n");
    cpu_smt_control = CPU_SMT_FORCE_DISABLED;
    + } else {
    + cpu_smt_control = CPU_SMT_DISABLED;
    }
    +}
    +
    +static int __init smt_cmdline_disable(char *str)
    +{
    + cpu_smt_disable(str && !strcmp(str, "force"));
    return 0;
    }
    early_param("nosmt", smt_cmdline_disable);

    \
     
     \ /
      Last update: 2018-08-14 19:34    [W:3.405 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site