On 05/06/2013 11:30 PM, EUNBONG SONG wrote: > > Hello. I tested with two patches. > The first one is thomas gleixner's patch. The patch is as follow. > This patch works well without any problem. You don't need them both. When we fix it, it will be one or the other, not both. > > Index: linux-2.6/arch/mips/kernel/process.c > =================================================================== > --- linux-2.6.orig/arch/mips/kernel/process.c > +++ linux-2.6/arch/mips/kernel/process.c > @@ -50,13 +50,18 @@ void arch_cpu_idle_dead(void) > } > #endif > > -void arch_cpu_idle(void) > +static void smtc_idle_hook(void) > { > #ifdef CONFIG_MIPS_MT_SMTC > extern void smtc_idle_loop_hook(void); > - > smtc_idle_loop_hook(); > #endif > +} > + > +void arch_cpu_idle(void) > +{ > + local_irq_enable(); > + smtc_idle_hook(); > if (cpu_wait) > (*cpu_wait)(); > else Although I wrote the other patch, I now think that Thomas Gleixner's patch (above), is the best option. There are many cpu_wait() implementations. Fixing a bunch of different assembly implementations, most of which I cannot test, is a recipe for disaster. > -- > > The second one is david daney's patch. The patch is as follow. > arch/mips/kernel/genex.S | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S > index ecb347c..57cda9a 100644 > --- a/arch/mips/kernel/genex.S > +++ b/arch/mips/kernel/genex.S > @@ -132,12 +132,13 @@ LEAF(r4k_wait) > .set noreorder > /* start of rollback region */ > LONG_L t0, TI_FLAGS($28) > - nop > andi t0, _TIF_NEED_RESCHED > bnez t0, 1f > nop > - nop > - nop > + /* Enable interrupts so WAIT will complete */ > + mfc0 t0, CP0_STATUS > + ori t0, ST0_IE > + mtc0 t0, CP0_STATUS > .set mips3 > wait > /* end of rollback region (the region size must be power of two) */ > > After apply this patch. I got two error message. > The first one is as follow > [ 124.661211] Checking for the daddi bug... no. > [ 124.665737] ------------[ cut here ]------------ > [ 124.670187] WARNING: at kernel/cpu/idle.c:96 cpu_startup_entry+0x150/0x178() > [ 124.677209] Modules linked in: > [ 124.680251] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.9.0+ #40 > [ 124.686237] Stack : 0000000000000004 0000000000000034 ffffffff80fa0000 ffffffff80292558 > 0000000000000000 ffffffff80fa0000 0000000000000001 ffffffff80293810 > 0000000000000000 0000000000000000 ffffffff81080000 ffffffff81080000 > ffffffff80e2acf0 ffffffff80f8f977 ffffffff80f8fa80 ffffffff80e31730 > 0000000000000001 0000000000000004 ffffffff00000000 0000000000000004 > ffffffffc05633f0 ffffffff806ef728 ffffffff80f57d08 ffffffff80290a74 > ffffffffc05633f0 ffffffff80293c40 000000000000003e ffffffff80e2acf0 > 0000000000000000 ffffffff80f57c30 00ffffff80f8fdc0 ffffffff802908c0 > 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > 0000000000000000 ffffffff80272498 0000000000000000 0000000000000000 > ... > [ 124.751163] Call Trace: > [ 124.753599] [<ffffffff80272498>] show_stack+0x68/0x80 > [ 124.758634] [<ffffffff802908c0>] warn_slowpath_common+0x78/0xa8 > [ 124.764533] [<ffffffff802d4448>] cpu_startup_entry+0x150/0x178 > [ 124.770351] [<ffffffff80fd6b04>] start_kernel+0x440/0x45c > [ 124.775728] > [ 124.777219] ---[ end trace 9179e654e5693e72 ]--- > > After boot process is done the follow error message is printed periodically. > > [ 284.751007] INFO: rcu_preempt detected stalls on CPUs/tasks: { 6} (detected by 1, t=14712 jiffies, g=18446744073709551344, c=18446744073709551343, q=2437) > [ 284.764878] Task dump for CPU 6: > [ 284.768105] swapper/6 R running task 0 0 1 0x00100000 > [ 284.775174] Stack : 0000005311112000 ffffffff80f60000 ffffffff80f60000 a800000001d2d950 > 0000000000000018 ffffffff81080000 ffffffff81080000 0000000000000000 > ffffffff81010000 ffffffff8030893c 4256e5715da6083d 800000040f800000 > 0000000000000018 ffffffff81080000 ffffffff81080000 ffffffff80264f3c > ffffffff80e31730 0000000000000000 ffffffff80e31730 ffffffff80f90000 > ffffffff80fd0000 ffffffff8026c760 0000000000000000 0000000010008ce1 > 0000000000100000 a8000000414e4010 ffffffff80f8bb18 0000000000000000 > 0000005311112000 0000000000000001 0000000000000001 0000000000000000 > ffffffff80f8bc58 a800000001d32c60 a8000000414e7fe0 0000000000008c00 > a80000003f7d8000 0000000000000000 ffffffff80fd0000 ffffffff80e31730 > ... > [ 284.840704] Call Trace: > [ 284.843153] [<ffffffff806f1a48>] __schedule+0x3b0/0x938 > [ 284.848377] > > > Thanks >