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.9 048/107] x86/cpu/AMD: Evaluate smp_num_siblings early
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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

    From: Thomas Gleixner <tglx@linutronix.de>

    commit 1e1d7e25fd759eddf96d8ab39d0a90a1979b2d8c upstream

    To support force disabling of SMT it's required to know the number of
    thread siblings early. amd_get_topology() cannot be called before the APIC
    driver is selected, so split out the part which initializes
    smp_num_siblings and invoke it from amd_early_init().

    [dwmw2: Backport to 4.9]

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-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/kernel/cpu/amd.c | 15 ++++++++++++++-
    1 file changed, 14 insertions(+), 1 deletion(-)

    --- a/arch/x86/kernel/cpu/amd.c
    +++ b/arch/x86/kernel/cpu/amd.c
    @@ -296,13 +296,24 @@ static int nearby_node(int apicid)
    }
    #endif

    +#ifdef CONFIG_SMP
    +
    +static void amd_get_topology_early(struct cpuinfo_x86 *c)
    +{
    + if (boot_cpu_has(X86_FEATURE_TOPOEXT)) {
    + u32 eax, ebx, ecx, edx;
    +
    + cpuid(0x8000001e, &eax, &ebx, &ecx, &edx);
    + smp_num_siblings = ((ebx >> 8) & 0xff) + 1;
    + }
    +}
    +
    /*
    * Fixup core topology information for
    * (1) AMD multi-node processors
    * Assumption: Number of cores in each internal node is the same.
    * (2) AMD processors supporting compute units
    */
    -#ifdef CONFIG_SMP
    static void amd_get_topology(struct cpuinfo_x86 *c)
    {
    u8 node_id;
    @@ -633,6 +644,8 @@ static void early_init_amd(struct cpuinf
    */
    if (cpu_has_amd_erratum(c, amd_erratum_400))
    set_cpu_bug(c, X86_BUG_AMD_E400);
    +
    + amd_get_topology_early(c);
    }

    static void init_amd_k8(struct cpuinfo_x86 *c)

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