A system booted with a small number of cores enabled per package panics because the estimate of __max_logical_packages is too low. This occurs when the total number of active cores across all packages is less than the maximum core count for a single package.
Andi noted that the logical_packages calculation wastes 128k on 64-bit x86 systems and posted patches to fix the allocation. His patches result in significant memory size savings, and I have put my fix on top of those patches. Here's an example of the panic: smpboot: Booting Node 1, Processors #1 OK smpboot: Package 1 of CPU 1 exceeds BIOS package data 1. ------------[ cut here ]------------ kernel BUG at arch/x86/kernel/cpu/common.c:1087! invalid opcode: 0000 [#1] SMP Modules linked in: CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.14.0-rc2+ #4 This was tested by dropping the number of active cores across all packages to reproduce the bug above. Additional testing included 2 socket and 4 socket systems and hotplugging entire sockets in different order. Signed-off-by: Prarit Bhargava <pra...@redhat.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Ingo Molnar <mi...@redhat.com> Cc: "H. Peter Anvin" <h...@zytor.com> Cc: x...@kernel.org Cc: Peter Zijlstra <pet...@infradead.org> Cc: Andi Kleen <a...@linux.intel.com> Cc: Dave Hansen <dave.han...@intel.com> Cc: Piotr Luc <piotr....@intel.com> Cc: Kan Liang <kan.li...@intel.com> Cc: Borislav Petkov <b...@suse.de> Cc: Stephane Eranian <eran...@google.com> Cc: Arvind Yadav <arvind.yadav...@gmail.com> Cc: Andy Lutomirski <l...@kernel.org> Cc: Christian Borntraeger <borntrae...@de.ibm.com> Cc: "Kirill A. Shutemov" <kirill.shute...@linux.intel.com> Cc: Tom Lendacky <thomas.lenda...@amd.com> Cc: Mathias Krause <mini...@googlemail.com> Cc: Tim Chen <tim.c.c...@linux.intel.com> Cc: Vitaly Kuznetsov <vkuzn...@redhat.com> Andi Kleen (2): perf/x86/intel/uncore: Cache logical pkg id in uncore driver x86/topology: Avoid wasting 128k for package id array Prarit Bhargava (1): x86/smpboot: Fix __max_logical_packages estimate arch/x86/events/intel/uncore.c | 1 + arch/x86/events/intel/uncore.h | 1 + arch/x86/events/intel/uncore_snbep.c | 2 +- arch/x86/kernel/smpboot.c | 148 ++++++++++++++--------------------- 4 files changed, 61 insertions(+), 91 deletions(-) -- 2.15.0.rc0.39.g2f0e14e64