MIPS: Idle: Re-enable irqs at the end of r3081, au1k and loongson2 cpu_wait.
authorRalf Baechle <ralf@linux-mips.org>
Tue, 21 May 2013 12:05:27 +0000 (14:05 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 21 May 2013 23:34:26 +0000 (01:34 +0200)
Without this, the

    WARN_ON_ONCE(irqs_disabled());

in the idle loop will be triggered.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/idle.c
drivers/cpufreq/loongson2_cpufreq.c

index 36e79f5..78cc7d6 100644 (file)
@@ -34,6 +34,7 @@ static void r3081_wait(void)
 {
        unsigned long cfg = read_c0_conf();
        write_c0_conf(cfg | R30XX_CONF_HALT);
+       local_irq_enable();
 }
 
 static void r39xx_wait(void)
@@ -109,6 +110,7 @@ static void au1k_wait(void)
        "       nop                             \n"
        "       .set    mips0                   \n"
        : : "r" (au1k_wait));
+       local_irq_enable();
 }
 
 static int __initdata nowait;
index 8488957..868976d 100644 (file)
@@ -200,6 +200,7 @@ static void loongson2_cpu_wait(void)
        LOONGSON_CHIPCFG0 &= ~0x7;      /* Put CPU into wait mode */
        LOONGSON_CHIPCFG0 = cpu_freq;   /* Restore CPU state */
        spin_unlock_irqrestore(&loongson2_wait_lock, flags);
+       local_irq_enable();
 }
 
 static int __init cpufreq_init(void)