Re: [GIT PULL] RCU changes for v3.3

From: Paul E. McKenney
Date: Fri Mar 09 2012 - 10:59:08 EST


On Wed, Mar 07, 2012 at 10:49:26AM -0500, Josh Boyer wrote:
> On Wed, Mar 7, 2012 at 10:27 AM, Paul E. McKenney
> <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> > On Wed, Mar 07, 2012 at 09:09:39AM -0500, Josh Boyer wrote:
> >> On Wed, Mar 7, 2012 at 6:44 AM, Sergey Senozhatsky
> >> <sergey.senozhatsky@xxxxxxxxx> wrote:
> >> > Hello,
> >> > I just hit the same problem.
> >> >
> >> > Is this patch scheduled for 3.3 until release or will land during 3.4
> >> > merge window?
> >>
> >> There are 3 patches in Paul's 3.4 queue, and another 9 of Steven Rostedt's
> >> that fix this.  They'll wind up in 3.4.
> >>
> >> I looked at reverting the patch that adds this new warning and it doesn't
> >> trivially revert.
> >
> > What are you based on?  I should be able to disable the warning for
> > you easily enough.
>
> 3.3. I think I tried reverting 00f49e5729af602deb559b0cf293a00b625e8636 and
> it failed. Then I locally commented out the WARN_ONCE in the functions which
> got rid of that, but we still get a 'suspicious RCU usage' warning when
> running powertop. I gave up after that, since it all goes away if we disable
> the debugging options and you have fixes queued for 3.4.

How about the following?

Thanx, Paul

------------------------------------------------------------------------

rcu: hack to disable RCU idle checking

Not for inclusion -- for mainline the correct approach is to fix things
so that RCU is not invoked from CPUs that RCU believes to be idle.
Use the upcoming RCU_NONIDLE() macro for this, or the new tracing
functions designed for use from idle.

Not-signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>

diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c
index 977296d..0829314 100644
--- a/kernel/rcutiny.c
+++ b/kernel/rcutiny.c
@@ -169,7 +169,7 @@ void rcu_irq_enter(void)
*/
int rcu_is_cpu_idle(void)
{
- return !rcu_dynticks_nesting;
+ return false;
}
EXPORT_SYMBOL(rcu_is_cpu_idle);

diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 6c4a672..397cca8 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -572,12 +572,7 @@ void rcu_nmi_exit(void)
*/
int rcu_is_cpu_idle(void)
{
- int ret;
-
- preempt_disable();
- ret = (atomic_read(&__get_cpu_var(rcu_dynticks).dynticks) & 0x1) == 0;
- preempt_enable();
- return ret;
+ return false;
}
EXPORT_SYMBOL(rcu_is_cpu_idle);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/