From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: paulmck@linux.vnet.ibm.com
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: WARNING: at kernel/rcutree.c:1550 __rcu_process_callbacks+0x46f/0x4b0()
Date: Fri, 20 Jul 2012 20:27:10 +0530 [thread overview]
Message-ID: <500971C6.4040204@linux.vnet.ibm.com> (raw)
In-Reply-To: <20120720143657.GC2721@linux.vnet.ibm.com>
On 07/20/2012 08:06 PM, Paul E. McKenney wrote:
> On Fri, Jul 20, 2012 at 04:11:00PM +0530, Srivatsa S. Bhat wrote:
>> On 07/19/2012 10:45 PM, Paul E. McKenney wrote:
>>> On Thu, Jul 19, 2012 at 05:39:30PM +0530, Srivatsa S. Bhat wrote:
>>>> Hi Paul,
>>>>
>>>> While running a CPU hotplug stress test on v3.5-rc7+
>>>> (mainline commit 8a7298b7805ab) I hit this warning.
>>>> I haven't tried to debug this yet...
>>>>
>>>> Line number 1550 maps to:
>>>>
>>>> WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
>>>>
>>>> inside rcu_do_batch().
>>>
>>> Hello, Srivatsa,
>>>
>>> I believe that you need commit a16b7a69 (Prevent __call_rcu() from
>>> invoking RCU core on offline CPUs), which is currently in -tip, queued
>>> for 3.6. Please see below for the patch.
>>>
>>> Does this help?
>>
>> Yes, that fixed it, thanks! :-)
>> Sorry for the noise...
>
> May I add your Tested-by?
Of course, go ahead! :-)
Regards,
Srivatsa S. Bhat
>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> rcu: Prevent __call_rcu() from invoking RCU core on offline CPUs
>>>
>>> The __call_rcu() function will invoke the RCU core, for example, if
>>> it detects that the current CPU has too many callbacks. However, this
>>> can happen on an offline CPU that is on its way to the idle loop, in
>>> which case it is an error to invoke the RCU core, and the excess callbacks
>>> will be adopted in any case. This commit therefore adds checks to
>>> __call_rcu() for running on an offline CPU, refraining from invoking
>>> the RCU core in this case.
>>>
>>> Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
>>> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
>>> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
>>>
>>> diff --git a/kernel/rcutree.c b/kernel/rcutree.c
>>> index a4a9c91..ceaa959 100644
>>> --- a/kernel/rcutree.c
>>> +++ b/kernel/rcutree.c
>>> @@ -1904,11 +1904,11 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
>>> * If called from an extended quiescent state, invoke the RCU
>>> * core in order to force a re-evaluation of RCU's idleness.
>>> */
>>> - if (rcu_is_cpu_idle())
>>> + if (rcu_is_cpu_idle() && cpu_online(smp_processor_id()))
>>> invoke_rcu_core();
>>>
>>> - /* If interrupts were disabled, don't dive into RCU core. */
>>> - if (irqs_disabled_flags(flags)) {
>>> + /* If interrupts were disabled or CPU offline, don't invoke RCU core. */
>>> + if (irqs_disabled_flags(flags) || cpu_is_offline(smp_processor_id())) {
>>> local_irq_restore(flags);
>>> return;
>>> }
>>>
next prev parent reply other threads:[~2012-07-20 14:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-19 12:09 WARNING: at kernel/rcutree.c:1550 __rcu_process_callbacks+0x46f/0x4b0() Srivatsa S. Bhat
2012-07-19 17:15 ` Paul E. McKenney
2012-07-20 10:41 ` Srivatsa S. Bhat
2012-07-20 14:36 ` Paul E. McKenney
2012-07-20 14:57 ` Srivatsa S. Bhat [this message]
2012-09-12 12:36 ` WARNING: at kernel/rcutree.c:1558 rcu_do_batch+0x386/0x3a0(), during CPU hotplug Srivatsa S. Bhat
2012-09-12 15:31 ` Paul E. McKenney
2012-09-13 6:30 ` Michael Wang
2012-09-13 12:47 ` Srivatsa S. Bhat
2012-09-14 4:33 ` Michael Wang
2012-09-26 9:35 ` Srivatsa S. Bhat
2012-09-27 2:59 ` Michael Wang
2012-09-27 19:06 ` Srivatsa S. Bhat
2012-09-13 8:35 ` Srivatsa S. Bhat
2012-09-14 11:47 ` Fengguang Wu
2012-09-14 12:18 ` Srivatsa S. Bhat
2012-09-14 12:25 ` Peter Zijlstra
2012-09-14 12:32 ` Fengguang Wu
2012-09-14 12:34 ` Srivatsa S. Bhat
2012-09-14 12:28 ` Fengguang Wu
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=500971C6.4040204@linux.vnet.ibm.com \
--to=srivatsa.bhat@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.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.