Re: [RFC][PATCH] x86/smp: Fix __max_logical_packages value setup

From: Peter Zijlstra
Date: Wed Aug 10 2016 - 15:14:39 EST


On Wed, Aug 10, 2016 at 04:15:38PM +0200, Jiri Olsa wrote:
> it's very likely I'm missing something, but seems to me
> that attached patch (untested) might work as well

Hmm, I think you're right. Earlier code (which hasn't survived) tried to
match logical and physical if possible, but that was busted and got
removed.

The code as is should indeed allow for this.

Maybe one nit, the variable is no longer used for a max, so maybe rename
it too?

> ---
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index 157bf0957219..003208bc8e44 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c

> @@ -277,14 +276,8 @@ int topology_update_package_map(unsigned int apicid, unsigned int cpu)
> if (test_and_set_bit(pkg, physical_package_map))
> goto found;
>
> + new = __max_logical_packages++;
> +
> pr_info("APIC(%x) Converting physical %u to logical package %u\n",
> apicid, pkg, new);
> physical_to_logical_pkg[pkg] = new;
> @@ -340,7 +333,7 @@ static void __init smp_init_package_map(void)
> ncpus = 1;
> }
>
> + __max_logical_packages = 0;
>
> /*
> * Possibly larger than what we need as the number of apic ids per