Commit-ID: fa37361e291bfe528872b9aef5c8644a3fc7ff20 Gitweb: http://git.kernel.org/tip/fa37361e291bfe528872b9aef5c8644a3fc7ff20 Author: Prarit Bhargava <prarit@xxxxxxxxxx> AuthorDate: Thu, 5 Jan 2017 10:09:25 -0500 Committer: Ingo Molnar <mingo@xxxxxxxxxx> CommitDate: Sat, 7 Jan 2017 08:54:38 +0100 perf/x86/intel/uncore: Fix hardcoded socket 0 assumption in the Haswell init code On multi-socket Intel v3 processor systems (aka Haswell), kdump can crash in hswep_uncore_cpu_init(): BUG: unable to handle kernel paging request at 00000000006563a1 IP: [<ffffffff8101b582>] hswep_uncore_cpu_init+0x52/0xa0 The crash was introduced by the following commit: 9d85eb9119f4 ("x86/smpboot: Make logical package management more robust") ... which patch corrected the physical ID to logical ID mapping of the threads if the kdumped panic occurs on any socket other than socket 0. But hswep_uncore_cpu_init() is hard coded for physical socket 0 and if the system is kdump'ing on any other socket the logical package value will be incorrect - crashing the kdump kernel. The code should not use 0 as the physical ID, and should use the boot CPU's logical package ID in this calculation. Signed-off-by: Prarit Bhargava <prarit@xxxxxxxxxx> Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx> Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxx> Cc: H. Peter Anvin <hpa@xxxxxxxxx> Cc: Harish Chegondi <harish.chegondi@xxxxxxxxx> Cc: Jiri Olsa <jolsa@xxxxxxxxxx> Cc: Kan Liang <kan.liang@xxxxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Stephane Eranian <eranian@xxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Vince Weaver <vincent.weaver@xxxxxxxxx> Link: http://lkml.kernel.org/r/1483628965-2890-1-git-send-email-prarit@xxxxxxxxxx Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> --- arch/x86/events/intel/uncore_snbep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c index e6832be..dae2fed 100644 --- a/arch/x86/events/intel/uncore_snbep.c +++ b/arch/x86/events/intel/uncore_snbep.c @@ -2686,7 +2686,7 @@ static struct intel_uncore_type *hswep_msr_uncores[] = { void hswep_uncore_cpu_init(void) { - int pkg = topology_phys_to_logical_pkg(0); + int pkg = boot_cpu_data.logical_proc_id; if (hswep_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores) hswep_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores; -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |