On Fri, 6 Jul 2012 03:24:00 +0900, <[email protected]> wrote:
> 
> This is a note to let you know that I've just added the patch titled
> 
>     ARM: fix rcu stalls on SMP platforms
> 
> to the 3.0-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;
> a=summary
> 
> The filename of the patch is:
>      arm-fix-rcu-stalls-on-smp-platforms.patch
> and it can be found in the queue-3.0 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <[email protected]> know about it.

Greg, this patch must be changed slightly for stable 3.0 tree, because
some back-ports on ltsi-3.0 are missing.
I'll send another patch later.  Sorry for confusion.


> From 7deabca0acfe02b8e18f59a4c95676012f49a304 Mon Sep 17 00:00:00 2001
> From: Russell King <[email protected]>
> Date: Thu, 19 Jan 2012 15:20:58 +0000
> Subject: ARM: fix rcu stalls on SMP platforms
> 
> From: Russell King <[email protected]>
> 
> 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 <[email protected]>
> Signed-off-by: UCHINO Satoshi <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> 
> ---
>  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:
> 
> 
> Patches currently in stable-queue which might be from
> [email protected] are
> 
> queue-3.0/arm-fix-rcu-stalls-on-smp-platforms.patch

Thanks, 
  Uchino
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to