]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Jul 2012 18:24:00 +0000 (11:24 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Jul 2012 18:24:00 +0000 (11:24 -0700)
added patches:
arm-fix-rcu-stalls-on-smp-platforms.patch

queue-3.0/arm-fix-rcu-stalls-on-smp-platforms.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/arm-fix-rcu-stalls-on-smp-platforms.patch b/queue-3.0/arm-fix-rcu-stalls-on-smp-platforms.patch
new file mode 100644 (file)
index 0000000..e2c6270
--- /dev/null
@@ -0,0 +1,67 @@
+From 7deabca0acfe02b8e18f59a4c95676012f49a304 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+Date: Thu, 19 Jan 2012 15:20:58 +0000
+Subject: ARM: fix rcu stalls on SMP platforms
+
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+
+commit 7deabca0acfe02b8e18f59a4c95676012f49a304 upstream.
+
+We can stall RCU processing on SMP platforms if a CPU sits in its idle
+loop for a long time.  This happens because we don't call irq_enter()
+and irq_exit() around generic_smp_call_function_interrupt() and
+friends.  Add the necessary calls, and remove the one from within
+ipi_timer(), so that they're all in a common place.
+
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: UCHINO Satoshi <satoshi.uchino@toshiba.co.jp>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/kernel/smp.c |   10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/kernel/smp.c
++++ b/arch/arm/kernel/smp.c
+@@ -445,9 +445,7 @@ static DEFINE_PER_CPU(struct clock_event
+ static void ipi_timer(void)
+ {
+       struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
+-      irq_enter();
+       evt->event_handler(evt);
+-      irq_exit();
+ }
+ #ifdef CONFIG_LOCAL_TIMERS
+@@ -568,7 +566,9 @@ asmlinkage void __exception_irq_entry do
+       switch (ipinr) {
+       case IPI_TIMER:
++              irq_enter();
+               ipi_timer();
++              irq_exit();
+               break;
+       case IPI_RESCHEDULE:
+@@ -576,15 +576,21 @@ asmlinkage void __exception_irq_entry do
+               break;
+       case IPI_CALL_FUNC:
++              irq_enter();
+               generic_smp_call_function_interrupt();
++              irq_exit();
+               break;
+       case IPI_CALL_FUNC_SINGLE:
++              irq_enter();
+               generic_smp_call_function_single_interrupt();
++              irq_exit();
+               break;
+       case IPI_CPU_STOP:
++              irq_enter();
+               ipi_cpu_stop(cpu);
++              irq_exit();
+               break;
+       default:
index 081d197661c9974f7b7452751646fa8a45617d6c..5e433aa1b85283abdafc3fbd1342ccc78a96a6bf 100644 (file)
@@ -1,3 +1,4 @@
 alsa-hda-add-realtek-alc280-codec-support.patch
 powerpc-xmon-use-cpumask-iterator-to-avoid-warning.patch
 media-smsusb-add-autodetection-support-for-usb-id-2040-f5a0.patch
+arm-fix-rcu-stalls-on-smp-platforms.patch