lkml.org 
[lkml]   [2013]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: WARNING: at kernel/cpu/idle.c:96
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;

\
 
 \ /
  Last update: 2013-05-02 17:01    [W:0.227 / U:0.336 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site