diff options
Diffstat (limited to 'recipes-kernel/linux/linux-toradex-rt-4.9-2.3.x/0001-ARM-imx6-cpuidle-Use-raw_spinlock_t.patch')
-rw-r--r-- | recipes-kernel/linux/linux-toradex-rt-4.9-2.3.x/0001-ARM-imx6-cpuidle-Use-raw_spinlock_t.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-toradex-rt-4.9-2.3.x/0001-ARM-imx6-cpuidle-Use-raw_spinlock_t.patch b/recipes-kernel/linux/linux-toradex-rt-4.9-2.3.x/0001-ARM-imx6-cpuidle-Use-raw_spinlock_t.patch new file mode 100644 index 0000000..f5d5962 --- /dev/null +++ b/recipes-kernel/linux/linux-toradex-rt-4.9-2.3.x/0001-ARM-imx6-cpuidle-Use-raw_spinlock_t.patch @@ -0,0 +1,51 @@ +From 99ae52edeba17c78753695e0d94d49c5f9e9a803 Mon Sep 17 00:00:00 2001 +Message-Id: <99ae52edeba17c78753695e0d94d49c5f9e9a803.1590137782.git.marcel.ziswiler@toradex.com> +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Wed, 29 May 2019 17:42:29 +0200 +Subject: [PATCH] ARM: imx6: cpuidle: Use raw_spinlock_t + +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 | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/mach-imx/cpuidle-imx6q.c b/arch/arm/mach-imx/cpuidle-imx6q.c +index 326e870d71239..d9ac80aa1eb0a 100644 +--- a/arch/arm/mach-imx/cpuidle-imx6q.c ++++ b/arch/arm/mach-imx/cpuidle-imx6q.c +@@ -17,22 +17,22 @@ + #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; + } +-- +2.25.4 + |