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

Jiri Olsa
2016-08-12T13:12:35Z

On Fri, Aug 12, 2016 at 02:24:57PM +0200, Jiri Olsa wrote:
> On Thu, Aug 11, 2016 at 03:46:51PM +0200, Peter Zijlstra wrote:
> > On Thu, Aug 11, 2016 at 03:05:21PM +0200, Jiri Olsa wrote:
> > > hum, so we either need some acpi solution to get number of all
> > > sockets or
> >
> > This.. So the problem here is that the BIOS completely screws us over.
> >
> > It wrecks the ACPI-ID table with that option to limit the number of CPUs
> > exposed to the OS (note that it didn't need to do that, it could have
> > enumerated them as empty, instead of not there at all) while keeping the
> > CPUID of the CPUs as reporting they have many (12? was it) cores.
> >
> > This results in inconsistent state, and we're left with nothing useful.
> >
> > > fix the uncore code to initialize pmu boxes on cpu hotplug as well
> >
> > Can't.. it uses the boxes at STARTING time, and we can't do allocs
> > there. Not can we alloc earlier, because we don't know max_packages is
> > going to increase.
>
> I still need to test this, but would this be something
> like you proposed on irc?

works on my test machine:

[ 0.742505] smpboot: APIC(0) Converting physical 0 to logical package 0
[ 0.749902] smpboot: APIC(20) Converting physical 1 to logical package 1
[ 0.757390] smpboot: APIC(40) Converting physical 2 to logical package 2
[ 0.764879] smpboot: APIC(60) Converting physical 3 to logical package 3
[ 0.772368] smpboot: Detected more packages (4), then computed by BIOS data (1).
[ 0.780630] smpboot: Max logical packages: 4

jirka