All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: "Charles (Chas) Williams" <ciwillia@brocade.com>
Cc: linux-kernel@vger.kernel.org, rt@linutronix.de
Subject: Re: [PREEMPT-RT] Oops in rapl_cpu_prepare()
Date: Tue, 25 Oct 2016 14:22:05 +0200	[thread overview]
Message-ID: <20161025122205.cw5xyejcg7xegnmq@linutronix.de> (raw)
In-Reply-To: <4e56a576-1a9f-e195-5ed9-2bc7169c4d94@brocade.com>

On 2016-10-21 17:03:56 [-0400], Charles (Chas) Williams wrote:
> I can't get dedicated access to the specific bare metal since it is
> running as a dedicated hypervisor.  I haven't seen this issue anywhere
> else though with the 4.8 kernel.

That is something :)

> > If a callback (such as CPUHP_PERF_X86_RAPL_PREP) fail then we rollback
> > to the starting point (in case of CPU up it would be CPUHP_OFFLINE.
> 
> You'll like this, I just did a little printk debugging because it was
> easier than trying to get a debugger running:
> 
> 	[    3.107126] init_rapl_pmus: maxpkg 4
there! vmware bug. It probably worked by chance.

> 	[    3.107263] rapl_cpu_prepare: pmu ffff880234faa540  cpu 0  pkgid 0
> 	[    3.107400] rapl_cpu_prepare: pmu ffff880234faa600  cpu 1  pkgid 2
> 	[    3.107537] rapl_cpu_prepare: pmu ffff880234faa6c0  cpu 2  pkgid 65535
> 	[    3.107662] rapl_cpu_online: pmu ffff880234faa540 cpu 0 pkgid 0
> 	[    3.107907] rapl_cpu_online: pmu ffff880234faa600 cpu 1 pkgid 2
> 	[    3.108133] rapl_cpu_online: pmu ffff880234faa6c0 cpu 2 pkgid 65535
> 	[    3.108333] rapl_cpu_online: pmu ffff880234faa6c0 cpu 3 pkgid 65535
> 
> where pkgid is topology_logical_package_id(cpu).
> 
> I can't understand why I don't see a cpu 3 during cpu prepare, when I
> see one later.  

because cpu 2 and 3 share the same package and if your printk is at the
bottom of the function, it will return early.

> The 65535 is a -1 from topology_phys_to_logical_pkg()
> getting assigned to the logical_proc_id apparently.

yes. The topology field is u16.

> So this is pretty puzzling.  Since this is a guest running under VMWare, I
> don't know that there is any particular CPU pinning or emulation of RAPL.

I assume "init_rapl_pmus: maxpkg 4" is from init_rapl_pmus() returning
topology_max_packages(). So it says 4 but then returns 65535 for CPU 2
and 3. That -1 comes probably from topology_update_package_map(). Could
you please send a complete boot log and try the following patch? This
one should fix your boot problem and disable RAPL if the info is
invalid.

diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c
index 0a535cea8ff3..f5d85f2853d7 100644
--- a/arch/x86/events/intel/rapl.c
+++ b/arch/x86/events/intel/rapl.c
@@ -682,6 +682,15 @@ static int __init init_rapl_pmus(void)
 {
 	int maxpkg = topology_max_packages();
 	size_t size;
+	unsigned int cpu;
+
+	for_each_possible_cpu(cpu) {
+		if (topology_logical_package_id(cpu) >= maxpkg) {
+			pr_err("rapl pmu error: max package: %u but CPU%d belongs to %u\n",
+			       maxpkg, cpu, topology_logical_package_id(cpu));
+			return -EINVAL;
+		}
+	}
 
 	size = sizeof(*rapl_pmus) + maxpkg * sizeof(struct rapl_pmu *);
 	rapl_pmus = kzalloc(size, GFP_KERNEL);

Sebastian

  reply	other threads:[~2016-10-25 12:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-20 20:27 Oops in rapl_cpu_prepare() Charles (Chas) Williams
2016-10-21 10:56 ` [PREEMPT-RT] " Sebastian Andrzej Siewior
2016-10-21 21:03   ` Charles (Chas) Williams
2016-10-25 12:22     ` Sebastian Andrzej Siewior [this message]
2016-10-25 12:42       ` Sebastian Andrzej Siewior
2016-10-27 19:00       ` Charles (Chas) Williams
2016-10-28  8:03         ` Sebastian Andrzej Siewior
2016-11-01 10:15           ` M. Vefa Bicakci
2016-11-02 17:23             ` Sebastian Andrzej Siewior
2016-11-03 18:21               ` M. Vefa Bicakci
2016-11-02  9:16           ` Charles (Chas) Williams
2016-11-02  9:58             ` Sebastian Andrzej Siewior

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=20161025122205.cw5xyejcg7xegnmq@linutronix.de \
    --to=bigeasy@linutronix.de \
    --cc=ciwillia@brocade.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rt@linutronix.de \
    /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.