public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3 v4] Fix panic in logical packages calculation
@ 2017-10-24 18:07 Prarit Bhargava
  2017-10-24 18:08 ` [PATCH 1/3] perf/x86/intel/uncore: Cache logical pkg id in uncore driver Prarit Bhargava
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Prarit Bhargava @ 2017-10-24 18:07 UTC (permalink / raw)
  To: linux-kernel
  Cc: Prarit Bhargava, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86, Peter Zijlstra, Andi Kleen, Dave Hansen, Piotr Luc,
	Kan Liang, Borislav Petkov, Stephane Eranian, Arvind Yadav,
	Andy Lutomirski, Christian Borntraeger, Kirill A. Shutemov,
	Tom Lendacky, Mathias Krause, Tim Chen, Vitaly Kuznetsov

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 <prarit@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Piotr Luc <piotr.luc@intel.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Stephane Eranian <eranian@google.com>
Cc: Arvind Yadav <arvind.yadav.cs@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Mathias Krause <minipli@googlemail.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Vitaly Kuznetsov <vkuznets@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/include/asm/processor.h     |   4 +-
 arch/x86/kernel/smpboot.c            | 137 ++++++++++++-----------------------
 5 files changed, 53 insertions(+), 92 deletions(-)

-- 
2.15.0.rc0.39.g2f0e14e64

^ permalink raw reply	[flat|nested] 6+ messages in thread
* [PATCH 0/3] x86/smpboot: Cleanup logical package ID
@ 2017-09-08 19:57 Prarit Bhargava
  2017-09-08 19:57 ` [PATCH 3/3] x86/smpboot: Fix __max_logical_packages estimate Prarit Bhargava
  0 siblings, 1 reply; 6+ messages in thread
From: Prarit Bhargava @ 2017-09-08 19:57 UTC (permalink / raw)
  To: linux-kernel; +Cc: kan.liang, x86, andi, peterz, Prarit Bhargava

Andi posted two patches to clean up the logical package ID, and I posted a
bug fix for systems which boot with less than than the maximum core count.
If I take his changes into account the code base ends up with a significant
cleanup.  I am reposting his patches here.

I boot tested this using max_cpus and nr_cpus, as well as booting on
systems which would panic without the fix in 3/3.

---8<---

Cleanup the logical package ID code by storing the logical package ID in
the cpuinfo_x86 struct and calculating the maximum logical package ID
after all the CPUs have been enumerated.

Signed-off-by: Prarit Bhargava <prarit@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/include/asm/processor.h     |   6 ++-
 arch/x86/kernel/smpboot.c            | 100 +++++++++--------------------------
 5 files changed, 33 insertions(+), 77 deletions(-)

-- 
1.8.5.5

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-10-30  6:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-24 18:07 [PATCH 0/3 v4] Fix panic in logical packages calculation Prarit Bhargava
2017-10-24 18:08 ` [PATCH 1/3] perf/x86/intel/uncore: Cache logical pkg id in uncore driver Prarit Bhargava
2017-10-24 18:08 ` [PATCH 2/3] x86/topology: Avoid wasting 128k for package id array Prarit Bhargava
2017-10-29 14:20   ` [lkp-robot] [x86/topology] 45d87f5bb7: WARNING:at_kernel/locking/lockdep.c:#lockdep_trace_alloc kernel test robot
2017-10-24 18:08 ` [PATCH 3/3] x86/smpboot: Fix __max_logical_packages estimate Prarit Bhargava
  -- strict thread matches above, loose matches on Subject: below --
2017-09-08 19:57 [PATCH 0/3] x86/smpboot: Cleanup logical package ID Prarit Bhargava
2017-09-08 19:57 ` [PATCH 3/3] x86/smpboot: Fix __max_logical_packages estimate Prarit Bhargava

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox