Re: [PATCH -tip-rcu] Make rcutorture more vicious: invoke RCU readers from irq handlers (timers)

From: Paul E. McKenney
Date: Thu Jun 26 2008 - 11:48:52 EST


On Thu, Jun 26, 2008 at 09:22:39AM +0200, Ingo Molnar wrote:
>
> * Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
>
> > This patch allows torturing RCU from irq handlers (timers, in this
> > case). A new module parameter irqreader enables such additional
> > torturing, and is enabled by default. Variants of RCU that do not
> > tolerate readers being called from irq handlers (e.g., SRCU) ignore
> > irqreader.
> >
> > (No failures observed, but only short tests thus far. And no failures
> > observed thus far from about 10 hours of running stock rcutorture in
> > parallel with 170 kernel builds on a two-CPU machine.)
>
> applied to tip/core/rcu - thanks Paul.
>
> > +static int irqreader = 1; /* RCU readers from irq (timers). */
>
> Good - this means that in bzImage type of tests (built-in rcutorture, no
> modules) this new test variant will be activated by default, right?

Ah, I knew I was forgetting to test something...

OK, checked it out by booting with rcutorture.stat_interval=100 so that
I can see the statistics. I enabled rcutorture after the machine booted
with "echo 1 > /proc/sys/kernel/rcutorture_runnable". Then I saw the
following in dmesg:

rcu-torture: rtc: ffffffff8098b9a0 ver: 16961 tfle: 0 rta: 16961 rtaf: 0 rtf: 16922 rtmbe: 0 nt: 121139
rcu-torture: Reader Pipe: 93315610 6300 0 0 0 0 0 0 0 0 0
rcu-torture: Reader Batch: 93315670 6240 0 0 0 0 0 0 0 0 0
rcu-torture: Free-Block Circulation: 16960 16960 16960 16960 16959 16951 16943 16936 16928 16922 0

The "nt: 121139" is the count of the number of times that an RCU read-side
critical section has been invoked from an rcutorture timer handler.

So yes, it does work. ;-)

Thanx, Paul
--
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/