Re: WARNING: at kernel/cpu/idle.c:96
From: Thomas Gleixner
Date: Thu May 02 2013 - 09:58:35 EST
On Thu, 2 May 2013, Markus Trippelsdorf wrote:
> On 2013.05.02 at 12:43 +0200, Thomas Gleixner wrote:
> > On Tue, 30 Apr 2013, Markus Trippelsdorf wrote:
> >
> > > Just booted todays git tree and got the following warning:
> > >
> > > ------------[ cut here ]------------
> > > WARNING: at kernel/cpu/idle.c:96 cpu_startup_entry+0x14d/0x160()
> > > Hardware name: System Product Name
> > > Pid: 0, comm: swapper/2 Not tainted 3.9.0-03462-gab86e97-dirty #424
> > > Call Trace:
> > > smpboot: Booting Node 0, Processors #1 #2
> > > [<ffffffff8105b7c0>] ? warn_slowpath_common+0x60/0xa0
> > > [<ffffffff8108c26d>] ? cpu_startup_entry+0x14d/0x160
> > > ---[ end trace 40a24a5550891913 ]---
> >
> > Fix below.
>
> Unfortunately the fix doesn't work:
Moo. I missed amd_e400_idle() returning early w/o enabling interrupts.
Full patch below.
Thanks,
tglx
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 607af0d..0526a96 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -312,6 +312,8 @@ void arch_cpu_idle(void)
{
if (cpuidle_idle_call())
x86_idle();
+ else
+ local_irq_enable();
}
/*
@@ -368,8 +370,10 @@ void amd_e400_remove_cpu(int cpu)
*/
static void amd_e400_idle(void)
{
- if (need_resched())
+ if (need_resched()) {
+ local_irq_enable();
return;
+ }
if (!amd_e400_c1e_detected) {
u32 lo, hi;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/