All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	x86@kernel.org, Peter Zijlstra <peterz@infradead.org>,
	Kan Liang <kan.liang@intel.com>, Borislav Petkov <bp@suse.de>,
	Harish Chegondi <harish.chegondi@intel.com>
Subject: Re: [PATCH] perf/x86/intel/uncore: Initialize with correct logical package ID
Date: Tue, 03 Jan 2017 18:44:10 -0500	[thread overview]
Message-ID: <586C374A.80401@redhat.com> (raw)
In-Reply-To: <1483471471-14450-1-git-send-email-prarit@redhat.com>



On 01/03/2017 02:24 PM, Prarit Bhargava wrote:
> On multi-socket Intel v3 processor systems (aka Haswell) kdump can fail with:
> 
> BUG: unable to handle kernel paging request at 00000000006563a1
> IP: [<ffffffff8101b582>] hswep_uncore_cpu_init+0x52/0xa0
> PGD 0 [    2.313897]
> Oops: 0000 [#1] SMP
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0 #1
> Hardware name: NEC Express5800/T120f [N8100-2285Y]/GA-7WESV-NJ, BIOS 5.0.4009 08/01/2016
> task: ffff88002bdb8000 task.stack: ffffc90000014000
> RIP: 0010:[<ffffffff8101b582>]  [<ffffffff8101b582>] hswep_uncore_cpu_init+0x52/0xa0
> RSP: 0000:ffffc90000017db8  EFLAGS: 00010206
> RAX: 0000000000656369 RBX: 0000000000000000 RCX: 0000000000001e03
> RDX: ffff88002b224780 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffffc90000017dc8 R08: 000000000001c880 R09: ffffffff813667e1
> R10: ffff880030c1c880 R11: 0000000000000000 R12: 0000000000000000
> R13: ffffffff81c1c090 R14: afafafafafafafaf R15: afafafafafafafaf
> FS:  0000000000000000(0000) GS:ffff880030c00000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00000000006563a1 CR3: 000000002fc07000 CR4: 00000000001406b0
> Stack:
>  ffffc90000017dc8 00000000352bd002 ffffc90000017e00 ffffffff81da17f8
>  0000000000000000 ffffffff81da16f9 00000000000000f0 afafafafafafafaf
>  afafafafafafafaf ffffc90000017e78 ffffffff81002190 ffffc90000017e00
> Call Trace:
>  [<ffffffff81da17f8>] intel_uncore_init+0xff/0x2e6
>  [<ffffffff81da16f9>] ? uncore_type_init+0x158/0x158
>  [<ffffffff81002190>] do_one_initcall+0x50/0x190
>  [<ffffffff810af27b>] ? parse_args+0x27b/0x460
>  [<ffffffff81d9c357>] kernel_init_freeable+0x1a5/0x249
>  [<ffffffff81d9ba27>] ? set_debug_rodata+0x12/0x12
>  [<ffffffff81702010>] ? rest_init+0x80/0x80
>  [<ffffffff8170201e>] kernel_init+0xe/0x110
>  [<ffffffff8170f715>] ret_from_fork+0x25/0x30
> Code: 1a d5 00 39 15 cc 1c c0 00 7e 06 89 15 c4 1c c0 00 48 98 48 8b 15 d7 c3 f7 00 48 8d 04 40 48 8d 04 c2 48 8b 40 10 48 85 c0 74 1b <8b> 70 38 48 8b 78 10 48 8d 4d f4 ba 94 00 00 00 e8 b9 db 38 00
> RIP  [<ffffffff8101b582>] hswep_uncore_cpu_init+0x52/0xa0
> 
> This is now occuring because 9d85eb9119f4 ("x86/smpboot: Make logical package
> management more robust") corrected the physical ID to logical ID mapping of the
> threads.  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.  The code should not use 0 as the physical ID, and should use
> the boot cpu's physical package ID in this calculation.
> 
> 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: Kan Liang <kan.liang@intel.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Harish Chegondi <harish.chegondi@intel.com>
> ---
>  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 e6832be714bc..b5fbb59fdc64 100644
> --- a/arch/x86/events/intel/uncore_snbep.c
> +++ b/arch/x86/events/intel/uncore_snbep.c
> @@ -2686,7 +2686,7 @@ static int hswep_pcu_hw_config(struct intel_uncore_box *box, struct perf_event *
>  
>  void hswep_uncore_cpu_init(void)
>  {
> -	int pkg = topology_phys_to_logical_pkg(0);
> +	int pkg = topology_phys_to_logical_pkg(boot_cpu_data.phys_proc_id);

One thing that just occurred to me as I was looking at other code.
boot_cpu_data has logical_proc_id, so it may be better to use that instead of
the lookup function.

I'm not sure of the usage of physical_to_logical_pkg[] and logical_proc_id.
Unless tglx or someone already knows of a reason not to use logical_proc_id I
certainly can change the patch.

P.

>  
>  	if (hswep_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
>  		hswep_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;
> 

  reply	other threads:[~2017-01-03 23:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-03 19:24 [PATCH] perf/x86/intel/uncore: Initialize with correct logical package ID Prarit Bhargava
2017-01-03 23:44 ` Prarit Bhargava [this message]
2017-01-11 10:29 ` Thomas Gleixner
2017-01-11 10:33 ` [tip:x86/urgent] perf/x86/intel/uncore: Do not use hard coded physical package id 0 tip-bot for Prarit Bhargava
2017-01-11 11:02   ` Prarit Bhargava
2017-01-11 11:10     ` Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=586C374A.80401@redhat.com \
    --to=prarit@redhat.com \
    --cc=bp@suse.de \
    --cc=harish.chegondi@intel.com \
    --cc=hpa@zytor.com \
    --cc=kan.liang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.