+++ /dev/null
-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:
extern void smp_init_cpus(void);
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
-@@ -578,6 +578,11 @@ static void ipi_cpu_stop(unsigned int cp
+@@ -580,6 +580,11 @@ static void ipi_cpu_stop(unsigned int cp
*/
asmlinkage void __exception_irq_entry do_IPI(int ipinr, struct pt_regs *regs)
{
arch/arm/include/asm/localtimer.h | 11 +--
arch/arm/include/asm/smp.h | 5 -
arch/arm/kernel/irq.c | 3
- arch/arm/kernel/smp.c | 32 +--------
+ arch/arm/kernel/smp.c | 34 +--------
arch/arm/mach-exynos4/include/mach/entry-macro.S | 13 ---
arch/arm/mach-msm/board-msm8x60.c | 11 ---
arch/arm/mach-msm/include/mach/entry-macro-qgic.S | 73 ---------------------
arch/arm/mach-omap2/include/mach/entry-macro.S | 14 ----
arch/arm/mach-shmobile/entry-intc.S | 3
arch/arm/mach-shmobile/include/mach/entry-macro.S | 3
- 14 files changed, 88 insertions(+), 184 deletions(-)
+ 14 files changed, 88 insertions(+), 186 deletions(-)
--- a/arch/arm/common/gic.c
+++ b/arch/arm/common/gic.c
return sum;
}
-@@ -469,34 +465,16 @@ static void ipi_timer(void)
+@@ -469,36 +465,16 @@ static void ipi_timer(void)
}
#ifdef CONFIG_LOCAL_TIMERS
if (local_timer_ack()) {
- __inc_irq_stat(cpu, local_timer_irqs);
+- irq_enter();
- ipi_timer();
+- irq_exit();
+ evt->event_handler(evt);
+ return IRQ_HANDLED;
}
@@ -1,7 +1,7 @@
VERSION = 3
PATCHLEVEL = 0
- SUBLEVEL = 36
+ SUBLEVEL = 38
-EXTRAVERSION =
+EXTRAVERSION = -ltsi
NAME = Sneaky Weasel
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
drivers/usb/gadget/r8a66597-udc.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
+ 1 file changed, 2 insertions(+)
-diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
-index 7f37a2a..fdd09de 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
-@@ -1718,6 +1718,8 @@ static void r8a66597_fifo_flush(struct usb_ep *_ep)
+@@ -1718,6 +1718,8 @@ static void r8a66597_fifo_flush(struct u
if (list_empty(&ep->queue) && !ep->busy) {
pipe_stop(ep->r8a66597, ep->pipenum);
r8a66597_bclr(ep->r8a66597, BCLR, ep->fifoctr);
}
spin_unlock_irqrestore(&ep->r8a66597->lock, flags);
}
---
-1.7.1
-_______________________________________________
-LTSI-dev mailing list
-LTSI-dev@lists.linuxfoundation.org
-https://lists.linuxfoundation.org/mailman/listinfo/ltsi-dev
-
spin_lock_irq(&acm->write_lock);
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
-@@ -817,13 +817,13 @@ static int wdm_suspend(struct usb_interf
+@@ -819,13 +819,13 @@ static int wdm_suspend(struct usb_interf
dev_dbg(&desc->intf->dev, "wdm%d_suspend\n", intf->minor);
/* if this is an autosuspend the caller does the locking */
(test_bit(WDM_IN_USE, &desc->flags)
|| test_bit(WDM_RESPONDING, &desc->flags))) {
spin_unlock_irq(&desc->iuspin);
-@@ -836,7 +836,7 @@ static int wdm_suspend(struct usb_interf
+@@ -838,7 +838,7 @@ static int wdm_suspend(struct usb_interf
kill_urbs(desc);
cancel_work_sync(&desc->rxwork);
}
TXN_UNLOCK();
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
-@@ -2470,7 +2470,7 @@ static int nilfs_segctor_thread(void *ar
+@@ -2472,7 +2472,7 @@ static int nilfs_segctor_thread(void *ar
if (freezing(current)) {
spin_unlock(&sci->sc_state_lock);
# Also, any needed reverts that we don't want from the -stable releases should
# go here.
#
-patches.kernel.org/arm-fix-rcu-stalls-on-smp-platforms.patch
#############################################################################