ARM: imx6: cpuidle: Use raw_spinlock_t
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Wed, 29 May 2019 15:42:29 +0000 (17:42 +0200)
committerShawn Guo <shawnguo@kernel.org>
Thu, 6 Jun 2019 00:58:11 +0000 (08:58 +0800)
The idle call back is invoked with disabled interrupts and requires
raw_spinlock_t locks to work.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/mach-imx/cpuidle-imx6q.c

index 326e870..d9ac80a 100644 (file)
 #include "hardware.h"
 
 static int num_idle_cpus = 0;
-static DEFINE_SPINLOCK(cpuidle_lock);
+static DEFINE_RAW_SPINLOCK(cpuidle_lock);
 
 static int imx6q_enter_wait(struct cpuidle_device *dev,
                            struct cpuidle_driver *drv, int index)
 {
-       spin_lock(&cpuidle_lock);
+       raw_spin_lock(&cpuidle_lock);
        if (++num_idle_cpus == num_online_cpus())
                imx6_set_lpm(WAIT_UNCLOCKED);
-       spin_unlock(&cpuidle_lock);
+       raw_spin_unlock(&cpuidle_lock);
 
        cpu_do_idle();
 
-       spin_lock(&cpuidle_lock);
+       raw_spin_lock(&cpuidle_lock);
        if (num_idle_cpus-- == num_online_cpus())
                imx6_set_lpm(WAIT_CLOCKED);
-       spin_unlock(&cpuidle_lock);
+       raw_spin_unlock(&cpuidle_lock);
 
        return index;
 }