On Tue, Nov 13, 2012 at 03:55:18PM -0800, [email protected] wrote:
> 
> The patch below does not apply to the 3.6-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <[email protected]>.

Mojiong sent it to that mailing list and I bounced his email to your
email address just in case.

Backport that he sent is
Acked-by: Konrad Rzeszutek Wilk <[email protected]>

> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> >From 772aebcefeff310f80e32b874988af0076cb799d Mon Sep 17 00:00:00 2001
> From: Mojiong Qiu <[email protected]>
> Date: Tue, 6 Nov 2012 16:08:15 +0800
> Subject: [PATCH] xen/events: fix RCU warning, or Call idle notifier after
>  irq_enter()
> 
> exit_idle() should be called after irq_enter(), otherwise it throws:
> 
> [ INFO: suspicious RCU usage. ]
> 3.6.5 #1 Not tainted
> -------------------------------
> include/linux/rcupdate.h:725 rcu_read_lock() used illegally while idle!
> 
> other info that might help us debug this:
> 
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 1
> RCU used illegally from extended quiescent state!
> 1 lock held by swapper/0/0:
>  #0:  (rcu_read_lock){......}, at: [<ffffffff810e9fe0>] 
> __atomic_notifier_call_chain+0x0/0x140
> 
> stack backtrace:
> Pid: 0, comm: swapper/0 Not tainted 3.6.5 #1
> Call Trace:
>  <IRQ>  [<ffffffff811259a2>] lockdep_rcu_suspicious+0xe2/0x130
>  [<ffffffff810ea10c>] __atomic_notifier_call_chain+0x12c/0x140
>  [<ffffffff810e9fe0>] ? atomic_notifier_chain_unregister+0x90/0x90
>  [<ffffffff811216cd>] ? trace_hardirqs_off+0xd/0x10
>  [<ffffffff810ea136>] atomic_notifier_call_chain+0x16/0x20
>  [<ffffffff810777c3>] exit_idle+0x43/0x50
>  [<ffffffff81568865>] xen_evtchn_do_upcall+0x25/0x50
>  [<ffffffff81aa690e>] xen_do_hypervisor_callback+0x1e/0x30
>  <EOI>  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
>  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
>  [<ffffffff81061540>] ? xen_safe_halt+0x10/0x20
>  [<ffffffff81075cfa>] ? default_idle+0xba/0x570
>  [<ffffffff810778af>] ? cpu_idle+0xdf/0x140
>  [<ffffffff81a4d881>] ? rest_init+0x135/0x144
>  [<ffffffff81a4d74c>] ? csum_partial_copy_generic+0x16c/0x16c
>  [<ffffffff82520c45>] ? start_kernel+0x3db/0x3e8
>  [<ffffffff8252066a>] ? repair_env_string+0x5a/0x5a
>  [<ffffffff82520356>] ? x86_64_start_reservations+0x131/0x135
>  [<ffffffff82524aca>] ? xen_start_kernel+0x465/0x46
> 
> Git commit 98ad1cc14a5c4fd658f9d72c6ba5c86dfd3ce0d5
> Author: Frederic Weisbecker <[email protected]>
> Date:   Fri Oct 7 18:22:09 2011 +0200
> 
>     x86: Call idle notifier after irq_enter()
> 
> did this, but it missed the Xen code.
> 
> Signed-off-by: Mojiong Qiu <[email protected]>
> Cc: [email protected] # from 3.3 and newer.
> Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
> 
> diff --git a/drivers/xen/events.c b/drivers/xen/events.c
> index 912ac81..0be4df3 100644
> --- a/drivers/xen/events.c
> +++ b/drivers/xen/events.c
> @@ -1395,10 +1395,10 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
>  {
>       struct pt_regs *old_regs = set_irq_regs(regs);
>  
> +     irq_enter();
>  #ifdef CONFIG_X86
>       exit_idle();
>  #endif
> -     irq_enter();
>  
>       __xen_evtchn_do_upcall();
>  
> 
> --
> 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
--
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