[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.20.1710161402380.1973@nanos>
Date: Mon, 16 Oct 2017 14:34:48 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Petri Latvala <petri.latvala@...el.com>
cc: Yu Chen <yu.c.chen@...el.com>, Juergen Gross <jgross@...e.com>,
Boris Ostrovsky <boris.ostrovsky@...cle.com>,
Tony Luck <tony.luck@...el.com>,
Marc Zyngier <marc.zyngier@....com>,
Alok Kataria <akataria@...are.com>,
Joerg Roedel <joro@...tes.org>,
"Rafael J. Wysocki" <rjw@...ysocki.net>,
Steven Rostedt <rostedt@...dmis.org>,
Christoph Hellwig <hch@....de>,
Peter Zijlstra <peterz@...radead.org>,
Borislav Petkov <bp@...en8.de>,
Paolo Bonzini <pbonzini@...hat.com>,
Rui Zhang <rui.zhang@...el.com>,
"K. Y. Srinivasan" <kys@...rosoft.com>,
Arjan van de Ven <arjan@...ux.intel.com>,
Dan Williams <dan.j.williams@...el.com>,
Len Brown <lenb@...nel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: Regression in linux-next
On Mon, 16 Oct 2017, Petri Latvala wrote:
> > That should dump the trace buffer when the bug hits. I try to reproduce
> > myself.
>
> With those:
>
> # rtcwake -s 15 -m mem
>
> [ 67.069522] kernel BUG at arch/x86/kernel/apic/vector.c:154!
> [ 67.075509] invalid opcode: 0000 [#1] PREEMPT SMP
> [ 67.080481] Dumping ftrace buffer:
Hrm. I completely forgot that this does not dump the buffers of offline
CPUs. So half of the information is missing. So forget the tracer for now.
Can you please apply the debug patch below and provide the full dmesg
output?
Its going to be too big for LKML so either upload it somewhere or send it
to me in private mail.
Note, I removed the BUG_ON, so box might survive suspend/resume but it
should trigger that printout.
Thanks,
tglx
8<------------------------
--- a/arch/x86/kernel/apic/vector.c
+++ b/arch/x86/kernel/apic/vector.c
@@ -140,6 +140,10 @@ static void apic_update_vector(struct ir
trace_vector_update(irqd->irq, newvec, newcpu, apicd->vector,
apicd->cpu);
+ pr_err("VU: CPU %u irq %u newvec %u newcpu %u curvec %u curcpu %u desc %p\n",
+ smp_processor_id(),irqd->irq, newvec, newcpu, apicd->vector,
+ apicd->cpu, desc);
+
/* Setup the vector move, if required */
if (apicd->vector && cpu_online(apicd->cpu)) {
apicd->move_in_progress = true;
@@ -151,7 +155,9 @@ static void apic_update_vector(struct ir
apicd->vector = newvec;
apicd->cpu = newcpu;
- BUG_ON(!IS_ERR_OR_NULL(per_cpu(vector_irq, newcpu)[newvec]));
+ if (!IS_ERR_OR_NULL(per_cpu(vector_irq, newcpu)[newvec]))
+ pr_err("VU not empty %p\n", per_cpu(vector_irq, newcpu)[newvec]);
+
per_cpu(vector_irq, newcpu)[newvec] = desc;
}
Powered by blists - more mailing lists