All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Mojiong Qiu <qiumojiong@gmail.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
	xen-devel@lists.xensource.com, Mojiong Qiu <mjqiu@tencent.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	"at least to 3.0.y" <stable@kernel.org>
Subject: Re: [PATCH] xen/events: xen/events: fix RCU warning
Date: Tue, 6 Nov 2012 11:17:42 -0500	[thread overview]
Message-ID: <20121106161742.GJ9966@phenom.dumpdata.com> (raw)
In-Reply-To: <1352189295-7111-1-git-send-email-qiumojiong@gmail.com>

On Tue, Nov 06, 2012 at 04:08:15PM +0800, Mojiong Qiu wrote:
> exit_idle() should be called after irq_enter(), otherwise it throws:

That seems odd - wouldn't "smp_x86_platform_ipi"
also need the same treatment [edit: I was looking at 3.0 kernel code] ?

Ah, this is caused by

commit 98ad1cc14a5c4fd658f9d72c6ba5c86dfd3ce0d5
Author: Frederic Weisbecker <fweisbec@gmail.com>
Date:   Fri Oct 7 18:22:09 2011 +0200

    x86: Call idle notifier after irq_enter()
    

and it missed the xen-case

which means that any kernel v3.3 and newer need this, but earlier do
not.

Thx. Will put in 3.7 tree.

> 
> [    2.513020] [ INFO: suspicious RCU usage. ]
> [    2.513076] 3.6.5 #1 Not tainted
> [    2.513128] -------------------------------
> [    2.513183] include/linux/rcupdate.h:725 rcu_read_lock() used illegally while idle!
> [    2.513271]
> [    2.513271] other info that might help us debug this:
> [    2.513271]
> [    2.513388]
> [    2.513388] RCU used illegally from idle CPU!
> [    2.513388] rcu_scheduler_active = 1, debug_locks = 1
> [    2.513511] RCU used illegally from extended quiescent state!
> [    2.513572] 1 lock held by swapper/0/0:
> [    2.513626]  #0:  (rcu_read_lock){......}, at: [<ffffffff810e9fe0>] __atomic_notifier_call_chain+0x0/0x140
> [    2.513815]
> [    2.513815] stack backtrace:
> [    2.513897] Pid: 0, comm: swapper/0 Not tainted 3.6.5 #1
> [    2.513954] Call Trace:
> [    2.514005]  <IRQ>  [<ffffffff811259a2>] lockdep_rcu_suspicious+0xe2/0x130
> [    2.514107]  [<ffffffff810ea10c>] __atomic_notifier_call_chain+0x12c/0x140
> [    2.514169]  [<ffffffff810e9fe0>] ? atomic_notifier_chain_unregister+0x90/0x90
> [    2.514258]  [<ffffffff811216cd>] ? trace_hardirqs_off+0xd/0x10
> [    2.514318]  [<ffffffff810ea136>] atomic_notifier_call_chain+0x16/0x20
> [    2.514381]  [<ffffffff810777c3>] exit_idle+0x43/0x50
> [    2.514441]  [<ffffffff81568865>] xen_evtchn_do_upcall+0x25/0x50
> [    2.514503]  [<ffffffff81aa690e>] xen_do_hypervisor_callback+0x1e/0x30
> [    2.514562]  <EOI>  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
> [    2.514662]  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
> [    2.514722]  [<ffffffff81061540>] ? xen_safe_halt+0x10/0x20
> [    2.514782]  [<ffffffff81075cfa>] ? default_idle+0xba/0x570
> [    2.514841]  [<ffffffff810778af>] ? cpu_idle+0xdf/0x140
> [    2.514900]  [<ffffffff81a4d881>] ? rest_init+0x135/0x144
> [    2.514960]  [<ffffffff81a4d74c>] ? csum_partial_copy_generic+0x16c/0x16c
> [    2.515022]  [<ffffffff82520c45>] ? start_kernel+0x3db/0x3e8
> [    2.515081]  [<ffffffff8252066a>] ? repair_env_string+0x5a/0x5a
> [    2.515141]  [<ffffffff82520356>] ? x86_64_start_reservations+0x131/0x135
> [    2.515202]  [<ffffffff82524aca>] ? xen_start_kernel+0x465/0x46
> 
> Signed-off-by: Mojiong Qiu <mjqiu@tencent.com>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> Cc: xen-devel@lists.xensource.com
> Cc: virtualization@lists.linux-foundation.org
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@kernel.org (at least to 3.0.y)
             ^^^- vger.kernel.org

You mean 3.3.x

> ---
>  drivers/xen/events.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> 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();
>  
> -- 
> 1.6.3.2

WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Mojiong Qiu <qiumojiong@gmail.com>
Cc: linux-kernel@vger.kernel.org, Mojiong Qiu <mjqiu@tencent.com>,
	Jeremy Fitzhardinge <jeremy@goop.org>,
	xen-devel@lists.xensource.com,
	virtualization@lists.linux-foundation.org,
	"at least to 3.0.y" <stable@kernel.org>
Subject: Re: [PATCH] xen/events: xen/events: fix RCU warning
Date: Tue, 6 Nov 2012 11:17:42 -0500	[thread overview]
Message-ID: <20121106161742.GJ9966@phenom.dumpdata.com> (raw)
In-Reply-To: <1352189295-7111-1-git-send-email-qiumojiong@gmail.com>

On Tue, Nov 06, 2012 at 04:08:15PM +0800, Mojiong Qiu wrote:
> exit_idle() should be called after irq_enter(), otherwise it throws:

That seems odd - wouldn't "smp_x86_platform_ipi"
also need the same treatment [edit: I was looking at 3.0 kernel code] ?

Ah, this is caused by

commit 98ad1cc14a5c4fd658f9d72c6ba5c86dfd3ce0d5
Author: Frederic Weisbecker <fweisbec@gmail.com>
Date:   Fri Oct 7 18:22:09 2011 +0200

    x86: Call idle notifier after irq_enter()
    

and it missed the xen-case

which means that any kernel v3.3 and newer need this, but earlier do
not.

Thx. Will put in 3.7 tree.

> 
> [    2.513020] [ INFO: suspicious RCU usage. ]
> [    2.513076] 3.6.5 #1 Not tainted
> [    2.513128] -------------------------------
> [    2.513183] include/linux/rcupdate.h:725 rcu_read_lock() used illegally while idle!
> [    2.513271]
> [    2.513271] other info that might help us debug this:
> [    2.513271]
> [    2.513388]
> [    2.513388] RCU used illegally from idle CPU!
> [    2.513388] rcu_scheduler_active = 1, debug_locks = 1
> [    2.513511] RCU used illegally from extended quiescent state!
> [    2.513572] 1 lock held by swapper/0/0:
> [    2.513626]  #0:  (rcu_read_lock){......}, at: [<ffffffff810e9fe0>] __atomic_notifier_call_chain+0x0/0x140
> [    2.513815]
> [    2.513815] stack backtrace:
> [    2.513897] Pid: 0, comm: swapper/0 Not tainted 3.6.5 #1
> [    2.513954] Call Trace:
> [    2.514005]  <IRQ>  [<ffffffff811259a2>] lockdep_rcu_suspicious+0xe2/0x130
> [    2.514107]  [<ffffffff810ea10c>] __atomic_notifier_call_chain+0x12c/0x140
> [    2.514169]  [<ffffffff810e9fe0>] ? atomic_notifier_chain_unregister+0x90/0x90
> [    2.514258]  [<ffffffff811216cd>] ? trace_hardirqs_off+0xd/0x10
> [    2.514318]  [<ffffffff810ea136>] atomic_notifier_call_chain+0x16/0x20
> [    2.514381]  [<ffffffff810777c3>] exit_idle+0x43/0x50
> [    2.514441]  [<ffffffff81568865>] xen_evtchn_do_upcall+0x25/0x50
> [    2.514503]  [<ffffffff81aa690e>] xen_do_hypervisor_callback+0x1e/0x30
> [    2.514562]  <EOI>  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
> [    2.514662]  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
> [    2.514722]  [<ffffffff81061540>] ? xen_safe_halt+0x10/0x20
> [    2.514782]  [<ffffffff81075cfa>] ? default_idle+0xba/0x570
> [    2.514841]  [<ffffffff810778af>] ? cpu_idle+0xdf/0x140
> [    2.514900]  [<ffffffff81a4d881>] ? rest_init+0x135/0x144
> [    2.514960]  [<ffffffff81a4d74c>] ? csum_partial_copy_generic+0x16c/0x16c
> [    2.515022]  [<ffffffff82520c45>] ? start_kernel+0x3db/0x3e8
> [    2.515081]  [<ffffffff8252066a>] ? repair_env_string+0x5a/0x5a
> [    2.515141]  [<ffffffff82520356>] ? x86_64_start_reservations+0x131/0x135
> [    2.515202]  [<ffffffff82524aca>] ? xen_start_kernel+0x465/0x46
> 
> Signed-off-by: Mojiong Qiu <mjqiu@tencent.com>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> Cc: xen-devel@lists.xensource.com
> Cc: virtualization@lists.linux-foundation.org
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@kernel.org (at least to 3.0.y)
             ^^^- vger.kernel.org

You mean 3.3.x

> ---
>  drivers/xen/events.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> 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();
>  
> -- 
> 1.6.3.2

  reply	other threads:[~2012-11-06 16:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-06  8:08 [PATCH] xen/events: xen/events: fix RCU warning Mojiong Qiu
2012-11-06  8:08 ` Mojiong Qiu
2012-11-06 16:17 ` Konrad Rzeszutek Wilk [this message]
2012-11-06 16:17   ` Konrad Rzeszutek Wilk
2012-11-07  8:03   ` 邱模炯
2012-11-07  8:03     ` 邱模炯
  -- strict thread matches above, loose matches on Subject: below --
2012-11-06  8:08 Mojiong Qiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121106161742.GJ9966@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjqiu@tencent.com \
    --cc=qiumojiong@gmail.com \
    --cc=stable@kernel.org \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.