* [PATCH RT] convert RCU Preempt tasklet into softirq.
[not found] ` <20070607161754.GA11941@linux.vnet.ibm.com>
@ 2007-06-07 18:26 ` Steven Rostedt
2007-06-07 18:51 ` Steven Rostedt
2007-06-07 21:02 ` Paul E. McKenney
0 siblings, 2 replies; 13+ messages in thread
From: Steven Rostedt @ 2007-06-07 18:26 UTC (permalink / raw)
To: paulmck
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
Following Dipankar's lead, I converted the tasklet in rcupreempt.c into
a softirq.
I've compiled and booted with this patch, but ran no other tests.
Paul, I'm disappointed, this was so trivial I didn't get a chance to
learn anything ;-)
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Index: linux-2.6.21-rt9/include/linux/rcupreempt.h
===================================================================
--- linux-2.6.21-rt9.orig/include/linux/rcupreempt.h
+++ linux-2.6.21-rt9/include/linux/rcupreempt.h
@@ -63,7 +63,9 @@ extern void rcu_check_callbacks(int cpu,
extern void rcu_restart_cpu(int cpu);
extern long rcu_batches_completed(void);
-extern void rcu_process_callbacks(unsigned long unused);
+struct softirq_action;
+
+extern void rcu_process_callbacks(struct softirq_action *unused);
#endif /* __KERNEL__ */
#endif /* __LINUX_RCUPREEMPT_H */
Index: linux-2.6.21-rt9/kernel/rcupreempt.c
===================================================================
--- linux-2.6.21-rt9.orig/kernel/rcupreempt.c
+++ linux-2.6.21-rt9/kernel/rcupreempt.c
@@ -57,7 +57,6 @@
struct rcu_data {
raw_spinlock_t lock;
long completed; /* Number of last completed batch. */
- struct tasklet_struct rcu_tasklet;
struct rcu_head *nextlist;
struct rcu_head **nexttail;
struct rcu_head *waitlist;
@@ -255,7 +254,7 @@ void rcu_check_callbacks(int cpu, int us
spin_unlock_irqrestore(&rcu_data.lock, oldirq);
} else {
spin_unlock_irqrestore(&rcu_data.lock, oldirq);
- tasklet_schedule(&rcu_data.rcu_tasklet);
+ raise_softirq(RCU_SOFTIRQ);
}
}
@@ -279,7 +278,7 @@ void rcu_advance_callbacks(int cpu, int
spin_unlock_irqrestore(&rcu_data.lock, oldirq);
}
-void rcu_process_callbacks(unsigned long unused)
+void rcu_process_callbacks(struct softirq_action *unused)
{
unsigned long flags;
struct rcu_head *next, *list;
@@ -367,7 +366,7 @@ void __init __rcu_init(void)
rcu_data.waittail = &rcu_data.waitlist;
rcu_data.donelist = NULL;
rcu_data.donetail = &rcu_data.donelist;
- tasklet_init(&rcu_data.rcu_tasklet, rcu_process_callbacks, 0UL);
+ open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);
}
/*
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-07 18:26 ` [PATCH RT] convert RCU Preempt tasklet into softirq Steven Rostedt
@ 2007-06-07 18:51 ` Steven Rostedt
2007-06-07 20:16 ` Steven Rostedt
2007-06-07 21:02 ` Paul E. McKenney
1 sibling, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2007-06-07 18:51 UTC (permalink / raw)
To: paulmck
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, 2007-06-07 at 14:26 -0400, Steven Rostedt wrote:
> Following Dipankar's lead, I converted the tasklet in rcupreempt.c into
> a softirq.
>
> I've compiled and booted with this patch, but ran no other tests.
There might still be an issue here. With the patch I'm getting a really
slow response time on networking. But that be because of other patches I
have applied.
I'll remove those other patches and see if this is still an issue.
/me booting with noapic to avoid the IO APIC issues.
-- Steve
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-07 18:51 ` Steven Rostedt
@ 2007-06-07 20:16 ` Steven Rostedt
2007-06-08 4:16 ` Paul E. McKenney
0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2007-06-07 20:16 UTC (permalink / raw)
To: paulmck
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, 2007-06-07 at 14:51 -0400, Steven Rostedt wrote:
> There might still be an issue here. With the patch I'm getting a really
> slow response time on networking. But that be because of other patches I
> have applied.
I removed this patch and I can still get the network slowdown/hang. So
this patch is unrelated to this issue. RCU on the otherhand has not been
cleared of suspicion.
-- Steve
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-07 18:26 ` [PATCH RT] convert RCU Preempt tasklet into softirq Steven Rostedt
2007-06-07 18:51 ` Steven Rostedt
@ 2007-06-07 21:02 ` Paul E. McKenney
2007-06-08 15:27 ` Steven Rostedt
1 sibling, 1 reply; 13+ messages in thread
From: Paul E. McKenney @ 2007-06-07 21:02 UTC (permalink / raw)
To: Steven Rostedt
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, Jun 07, 2007 at 02:26:59PM -0400, Steven Rostedt wrote:
> Following Dipankar's lead, I converted the tasklet in rcupreempt.c into
> a softirq.
>
> I've compiled and booted with this patch, but ran no other tests.
I should be able to run rcutorture on it.
> Paul, I'm disappointed, this was so trivial I didn't get a chance to
> learn anything ;-)
;-)
Some nits below.
Thanx, Paul
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
>
> Index: linux-2.6.21-rt9/include/linux/rcupreempt.h
> ===================================================================
> --- linux-2.6.21-rt9.orig/include/linux/rcupreempt.h
> +++ linux-2.6.21-rt9/include/linux/rcupreempt.h
> @@ -63,7 +63,9 @@ extern void rcu_check_callbacks(int cpu,
> extern void rcu_restart_cpu(int cpu);
> extern long rcu_batches_completed(void);
>
> -extern void rcu_process_callbacks(unsigned long unused);
> +struct softirq_action;
> +
> +extern void rcu_process_callbacks(struct softirq_action *unused);
I don't understand why the above is needed -- interrupt.h is included,
and the use of rcu_process_callbacks() follows the definition.
> #endif /* __KERNEL__ */
> #endif /* __LINUX_RCUPREEMPT_H */
> Index: linux-2.6.21-rt9/kernel/rcupreempt.c
> ===================================================================
> --- linux-2.6.21-rt9.orig/kernel/rcupreempt.c
> +++ linux-2.6.21-rt9/kernel/rcupreempt.c
> @@ -57,7 +57,6 @@
> struct rcu_data {
> raw_spinlock_t lock;
> long completed; /* Number of last completed batch. */
> - struct tasklet_struct rcu_tasklet;
> struct rcu_head *nextlist;
> struct rcu_head **nexttail;
> struct rcu_head *waitlist;
> @@ -255,7 +254,7 @@ void rcu_check_callbacks(int cpu, int us
> spin_unlock_irqrestore(&rcu_data.lock, oldirq);
> } else {
> spin_unlock_irqrestore(&rcu_data.lock, oldirq);
> - tasklet_schedule(&rcu_data.rcu_tasklet);
> + raise_softirq(RCU_SOFTIRQ);
> }
> }
>
> @@ -279,7 +278,7 @@ void rcu_advance_callbacks(int cpu, int
> spin_unlock_irqrestore(&rcu_data.lock, oldirq);
> }
>
> -void rcu_process_callbacks(unsigned long unused)
> +void rcu_process_callbacks(struct softirq_action *unused)
> {
> unsigned long flags;
> struct rcu_head *next, *list;
> @@ -367,7 +366,7 @@ void __init __rcu_init(void)
> rcu_data.waittail = &rcu_data.waitlist;
> rcu_data.donelist = NULL;
> rcu_data.donetail = &rcu_data.donelist;
> - tasklet_init(&rcu_data.rcu_tasklet, rcu_process_callbacks, 0UL);
> + open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);
> }
>
> /*
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-07 20:16 ` Steven Rostedt
@ 2007-06-08 4:16 ` Paul E. McKenney
2007-06-08 15:00 ` Paul E. McKenney
0 siblings, 1 reply; 13+ messages in thread
From: Paul E. McKenney @ 2007-06-08 4:16 UTC (permalink / raw)
To: Steven Rostedt
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, Jun 07, 2007 at 04:16:09PM -0400, Steven Rostedt wrote:
> On Thu, 2007-06-07 at 14:51 -0400, Steven Rostedt wrote:
>
> > There might still be an issue here. With the patch I'm getting a really
> > slow response time on networking. But that be because of other patches I
> > have applied.
>
> I removed this patch and I can still get the network slowdown/hang. So
> this patch is unrelated to this issue. RCU on the otherhand has not been
> cleared of suspicion.
Might the slowdown be due to different kernel threads running at different
priorities? I could easily believe that changing the priority of the
kernel thread processing RCU callbacks could have a noticeable effect
on performance in some cases.
In other news, passed a set of kernbenches at this end, so starting
an rcutorture.
Thanx, Paul
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-08 4:16 ` Paul E. McKenney
@ 2007-06-08 15:00 ` Paul E. McKenney
0 siblings, 0 replies; 13+ messages in thread
From: Paul E. McKenney @ 2007-06-08 15:00 UTC (permalink / raw)
To: Steven Rostedt
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, Jun 07, 2007 at 09:16:51PM -0700, Paul E. McKenney wrote:
> On Thu, Jun 07, 2007 at 04:16:09PM -0400, Steven Rostedt wrote:
> > On Thu, 2007-06-07 at 14:51 -0400, Steven Rostedt wrote:
> >
> > > There might still be an issue here. With the patch I'm getting a really
> > > slow response time on networking. But that be because of other patches I
> > > have applied.
> >
> > I removed this patch and I can still get the network slowdown/hang. So
> > this patch is unrelated to this issue. RCU on the otherhand has not been
> > cleared of suspicion.
>
> Might the slowdown be due to different kernel threads running at different
> priorities? I could easily believe that changing the priority of the
> kernel thread processing RCU callbacks could have a noticeable effect
> on performance in some cases.
>
> In other news, passed a set of kernbenches at this end, so starting
> an rcutorture.
And rcutorture passed 8 hours on a 4-CPU Opteron box.
Thanx, Paul
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-07 21:02 ` Paul E. McKenney
@ 2007-06-08 15:27 ` Steven Rostedt
2007-06-08 19:36 ` Paul E. McKenney
0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2007-06-08 15:27 UTC (permalink / raw)
To: paulmck
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Thu, 2007-06-07 at 14:02 -0700, Paul E. McKenney wrote:
> Some nits below.
>
> Thanx, Paul
>
> > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> >
> > Index: linux-2.6.21-rt9/include/linux/rcupreempt.h
> > ===================================================================
> > --- linux-2.6.21-rt9.orig/include/linux/rcupreempt.h
> > +++ linux-2.6.21-rt9/include/linux/rcupreempt.h
> > @@ -63,7 +63,9 @@ extern void rcu_check_callbacks(int cpu,
> > extern void rcu_restart_cpu(int cpu);
> > extern long rcu_batches_completed(void);
> >
> > -extern void rcu_process_callbacks(unsigned long unused);
> > +struct softirq_action;
> > +
> > +extern void rcu_process_callbacks(struct softirq_action *unused);
>
> I don't understand why the above is needed -- interrupt.h is included,
> and the use of rcu_process_callbacks() follows the definition.
>
> > #endif /* __KERNEL__ */
> > #endif /* __LINUX_RCUPREEMPT_H */
The first time I compiled it, I forgot the ';' and got a warning there.
But the warning also included "declaring structure softirq_action in
prototype", so I fixed both the ';' and added the struct. I can try
compile without it. But I also know that adding #include <interrupt.h>
in rcupreempt.h caused issues too.
-- Steve
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-08 15:27 ` Steven Rostedt
@ 2007-06-08 19:36 ` Paul E. McKenney
2007-06-08 19:43 ` Steven Rostedt
0 siblings, 1 reply; 13+ messages in thread
From: Paul E. McKenney @ 2007-06-08 19:36 UTC (permalink / raw)
To: Steven Rostedt
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
> On Thu, 2007-06-07 at 14:02 -0700, Paul E. McKenney wrote:
>
> > Some nits below.
> >
> > Thanx, Paul
> >
> > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > >
> > > Index: linux-2.6.21-rt9/include/linux/rcupreempt.h
> > > ===================================================================
> > > --- linux-2.6.21-rt9.orig/include/linux/rcupreempt.h
> > > +++ linux-2.6.21-rt9/include/linux/rcupreempt.h
> > > @@ -63,7 +63,9 @@ extern void rcu_check_callbacks(int cpu,
> > > extern void rcu_restart_cpu(int cpu);
> > > extern long rcu_batches_completed(void);
> > >
> > > -extern void rcu_process_callbacks(unsigned long unused);
> > > +struct softirq_action;
> > > +
> > > +extern void rcu_process_callbacks(struct softirq_action *unused);
> >
> > I don't understand why the above is needed -- interrupt.h is included,
> > and the use of rcu_process_callbacks() follows the definition.
> >
> > > #endif /* __KERNEL__ */
> > > #endif /* __LINUX_RCUPREEMPT_H */
>
> The first time I compiled it, I forgot the ';' and got a warning there.
> But the warning also included "declaring structure softirq_action in
> prototype", so I fixed both the ';' and added the struct. I can try
> compile without it. But I also know that adding #include <interrupt.h>
> in rcupreempt.h caused issues too.
If I leave out both the "struct softirq_action" and the
rcu_process_callbacks() declaration,, it compiles for me.
So I guess the rcu_process_callbacks() should be declared static...
Thanx, Paul
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-08 19:36 ` Paul E. McKenney
@ 2007-06-08 19:43 ` Steven Rostedt
2007-06-08 20:00 ` Paul E. McKenney
0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2007-06-08 19:43 UTC (permalink / raw)
To: paulmck
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Fri, 2007-06-08 at 12:36 -0700, Paul E. McKenney wrote:
> On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
> > The first time I compiled it, I forgot the ';' and got a warning there.
> > But the warning also included "declaring structure softirq_action in
> > prototype", so I fixed both the ';' and added the struct. I can try
> > compile without it. But I also know that adding #include <interrupt.h>
> > in rcupreempt.h caused issues too.
>
> If I leave out both the "struct softirq_action" and the
> rcu_process_callbacks() declaration,, it compiles for me.
>
> So I guess the rcu_process_callbacks() should be declared static...
OK, I can update the patch to reflect that. Remember, I didn't learn
anything from doing this patch, so I have no idea why
rcu_procell_callbacks was global. I was just keeping to the norm. :-)
Actually, I'll make a separate patch for this change. This is a
different issue.
-- Steve
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-08 19:43 ` Steven Rostedt
@ 2007-06-08 20:00 ` Paul E. McKenney
2007-09-06 17:52 ` Clark Williams
0 siblings, 1 reply; 13+ messages in thread
From: Paul E. McKenney @ 2007-06-08 20:00 UTC (permalink / raw)
To: Steven Rostedt
Cc: john stultz, Ingo Molnar, Thomas Gleixner, Oleg Nesterov, LKML,
Dipankar Sarma, RT
On Fri, Jun 08, 2007 at 03:43:48PM -0400, Steven Rostedt wrote:
> On Fri, 2007-06-08 at 12:36 -0700, Paul E. McKenney wrote:
> > On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
>
> > > The first time I compiled it, I forgot the ';' and got a warning there.
> > > But the warning also included "declaring structure softirq_action in
> > > prototype", so I fixed both the ';' and added the struct. I can try
> > > compile without it. But I also know that adding #include <interrupt.h>
> > > in rcupreempt.h caused issues too.
> >
> > If I leave out both the "struct softirq_action" and the
> > rcu_process_callbacks() declaration,, it compiles for me.
> >
> > So I guess the rcu_process_callbacks() should be declared static...
>
> OK, I can update the patch to reflect that. Remember, I didn't learn
> anything from doing this patch, so I have no idea why
> rcu_procell_callbacks was global. I was just keeping to the norm. :-)
Hey, -I- learned something from your doing the patch -- namely that
rcu_process_callbacks() was needlessly non-static. ;-)
> Actually, I'll make a separate patch for this change. This is a
> different issue.
Sounds good!
Thanx, Paul
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-06-08 20:00 ` Paul E. McKenney
@ 2007-09-06 17:52 ` Clark Williams
2007-09-06 18:06 ` Paul E. McKenney
0 siblings, 1 reply; 13+ messages in thread
From: Clark Williams @ 2007-09-06 17:52 UTC (permalink / raw)
To: paulmck
Cc: Steven Rostedt, john stultz, Ingo Molnar, Thomas Gleixner,
Oleg Nesterov, LKML, Dipankar Sarma, RT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Paul E. McKenney wrote:
> On Fri, Jun 08, 2007 at 03:43:48PM -0400, Steven Rostedt wrote:
>> On Fri, 2007-06-08 at 12:36 -0700, Paul E. McKenney wrote:
>>> On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
>>>> The first time I compiled it, I forgot the ';' and got a warning there.
>>>> But the warning also included "declaring structure softirq_action in
>>>> prototype", so I fixed both the ';' and added the struct. I can try
>>>> compile without it. But I also know that adding #include <interrupt.h>
>>>> in rcupreempt.h caused issues too.
>>> If I leave out both the "struct softirq_action" and the
>>> rcu_process_callbacks() declaration,, it compiles for me.
>>>
>>> So I guess the rcu_process_callbacks() should be declared static...
>> OK, I can update the patch to reflect that. Remember, I didn't learn
>> anything from doing this patch, so I have no idea why
>> rcu_procell_callbacks was global. I was just keeping to the norm. :-)
>
> Hey, -I- learned something from your doing the patch -- namely that
> rcu_process_callbacks() was needlessly non-static. ;-)
>
>> Actually, I'll make a separate patch for this change. This is a
>> different issue.
>
> Sounds good!
>
Paul,
I had a test run of a kernel using Steven's patch (RCU using tasklets) going over the
weekend. It looks like it made it through running racer for 24hrs without a panic,
but I'm not entirely convinced (since my reservation of the test system expired on
Saturday and I didn't look at it until Wednesday; bad Clark, no doughnut).
I've got another test running now and I'll be able to poke around on the system
tomorrow morning to see if in fact there were no RCU related Oops'en. I'll let you
know what we find.
Clark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
iD8DBQFG4D5AHyuj/+TTEp0RAkfxAKDmGHLgTEaVrclCPQfytJZbF9hf3QCfZdct
Hjr1PgUP6U8X4dLAdd3vXQk=
=T7lw
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RT] convert RCU Preempt tasklet into softirq.
2007-09-06 17:52 ` Clark Williams
@ 2007-09-06 18:06 ` Paul E. McKenney
2007-09-07 12:30 ` BUG: unable to handle kernel paging joel silvestre
0 siblings, 1 reply; 13+ messages in thread
From: Paul E. McKenney @ 2007-09-06 18:06 UTC (permalink / raw)
To: Clark Williams
Cc: Steven Rostedt, john stultz, Ingo Molnar, Thomas Gleixner,
Oleg Nesterov, LKML, Dipankar Sarma, RT
On Thu, Sep 06, 2007 at 12:52:00PM -0500, Clark Williams wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Paul E. McKenney wrote:
> > On Fri, Jun 08, 2007 at 03:43:48PM -0400, Steven Rostedt wrote:
> >> On Fri, 2007-06-08 at 12:36 -0700, Paul E. McKenney wrote:
> >>> On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
> >>>> The first time I compiled it, I forgot the ';' and got a warning there.
> >>>> But the warning also included "declaring structure softirq_action in
> >>>> prototype", so I fixed both the ';' and added the struct. I can try
> >>>> compile without it. But I also know that adding #include <interrupt.h>
> >>>> in rcupreempt.h caused issues too.
> >>> If I leave out both the "struct softirq_action" and the
> >>> rcu_process_callbacks() declaration,, it compiles for me.
> >>>
> >>> So I guess the rcu_process_callbacks() should be declared static...
> >> OK, I can update the patch to reflect that. Remember, I didn't learn
> >> anything from doing this patch, so I have no idea why
> >> rcu_procell_callbacks was global. I was just keeping to the norm. :-)
> >
> > Hey, -I- learned something from your doing the patch -- namely that
> > rcu_process_callbacks() was needlessly non-static. ;-)
> >
> >> Actually, I'll make a separate patch for this change. This is a
> >> different issue.
> >
> > Sounds good!
> >
>
> Paul,
>
> I had a test run of a kernel using Steven's patch (RCU using tasklets) going over the
> weekend. It looks like it made it through running racer for 24hrs without a panic,
> but I'm not entirely convinced (since my reservation of the test system expired on
> Saturday and I didn't look at it until Wednesday; bad Clark, no doughnut).
>
> I've got another test running now and I'll be able to poke around on the system
> tomorrow morning to see if in fact there were no RCU related Oops'en. I'll let you
> know what we find.
Thank you for the info, Clark!
Of course, this all begs the question of why the heck switching from
tasklets to softirqs should make any difference at all...
Thanx, Paul
^ permalink raw reply [flat|nested] 13+ messages in thread
* BUG: unable to handle kernel paging...
2007-09-06 18:06 ` Paul E. McKenney
@ 2007-09-07 12:30 ` joel silvestre
0 siblings, 0 replies; 13+ messages in thread
From: joel silvestre @ 2007-09-07 12:30 UTC (permalink / raw)
To: linux-rt-users
Hi ,
is this of any use for you?
kernel is 2.6.22.1-rt9
Sep 6 07:35:11 pcazick kernel: BUG: unable to handle kernel paging
request at virtual address 28000000
Sep 6 07:35:11 pcazick kernel: printing eip:
Sep 6 07:35:11 pcazick kernel: c017a26a
Sep 6 07:35:11 pcazick kernel: *pde = 00000000
Sep 6 07:35:11 pcazick kernel: stopped custom tracer.
Sep 6 07:35:11 pcazick kernel: Oops: 0000 [#1]
Sep 6 07:35:11 pcazick kernel: PREEMPT SMP
Sep 6 07:35:12 pcazick kernel: Modules linked in: fuse snd_seq_midi
snd_seq_midi_event snd_seq_dummy nfs lockd nfs_acl sunrpc capability
commoncap evdev button ac battery ipv6 dm_snapshot dm_mirror dm_mod
snd_seq i2c_savage4 savagefb fb_ddc i2c_algo_bit snd_ice1724
snd_ice17xx_ak4xxx snd_ac97_codec ac97_bus snd_ak4114 snd_pcm snd_timer
snd_page_alloc i2c_viapro snd_pt2258 snd_i2c snd_ak4xxx_adda
snd_mpu401_uart snd_rawmidi via686a snd_seq_device i2c_isa snd shpchp
parport_pc via_agp soundcore i2c_core rt2500 parport pci_hotplug agpgart
ext3 jbd mbcache raid10 raid456 xor raid1 raid0 multipath linear md_mod
ide_disk ata_generic libata scsi_mod via82cxxx generic ide_core thermal
processor fan vga16fb vgastate
Sep 6 07:35:12 pcazick kernel: CPU: 0
Sep 6 07:35:12 pcazick kernel: EIP: 0060:[<c017a26a>] Not tainted
VLI
Sep 6 07:35:12 pcazick kernel: EFLAGS: 00010206 (2.6.22.1-rt9 #1)
Sep 6 07:35:12 pcazick kernel: EIP is at __d_lookup+0xd2/0xfa
Sep 6 07:35:12 pcazick kernel: eax: 28000000 ebx: c1720a75 ecx:
e4251084 edx: d8874c10
Sep 6 07:35:12 pcazick kernel: esi: d2e510e8 edi: 28000000 ebp:
ce5e3f04 esp: ce5e3dc4
Sep 6 07:35:12 pcazick kernel: ds: 007b es: 007b fs: 00d8 gs: 0033
ss: 0068 preempt:00000001
Sep 6 07:35:12 pcazick kernel: Process find (pid: 3451, ti=ce5e2000
task=d8874c10 task.ti=ce5e2000)
Sep 6 07:35:12 pcazick kernel: Stack: ce5e3e3c c3e5e9dc 00000009
e4251084 c97d8000 e4251084 d2e510e8 c97d8000
Sep 6 07:35:12 pcazick kernel: ce5e3f04 c01714b8 ce5e3e48
ce5e3e3c ce5e3f04 dfadbf20 e4251084 d2e510e8
Sep 6 07:35:12 pcazick kernel: c97d8000 ce5e3f04 c01731c1
c97d8009 00000000 00000000 dfadbf20 c017dba5
Sep 6 07:35:12 pcazick kernel: Call Trace:
Sep 6 07:35:12 pcazick kernel: [<c01714b8>] do_lookup+0x24/0x143
Sep 6 07:35:12 pcazick kernel: [<c01731c1>] __link_path_walk
+0x7d4/0xc12
Sep 6 07:35:12 pcazick kernel: [<c017dba5>] mntput_no_expire+0x11/0x6e
Sep 6 07:35:12 pcazick kernel: [<c01736a8>] link_path_walk+0xa9/0xb3
Sep 6 07:35:12 pcazick kernel: [<c0173643>] link_path_walk+0x44/0xb3
Sep 6 07:35:12 pcazick kernel: [<c017393a>] do_path_lookup+0x162/0x17d
Sep 6 07:35:12 pcazick kernel: [<c017275e>] getname+0x59/0x8f
Sep 6 07:35:12 pcazick kernel: [<c0174106>] __user_walk_fd+0x2f/0x45
Sep 6 07:35:12 pcazick kernel: [<c016df47>] vfs_lstat_fd+0x16/0x3d
Sep 6 07:35:12 pcazick kernel: [<c016dfb3>] sys_lstat64+0xf/0x23
Sep 6 07:35:12 pcazick kernel: [<c0103e1a>] syscall_call+0x7/0xb
Sep 6 07:35:12 pcazick kernel: =======================
Sep 6 07:35:12 pcazick kernel: Code: 6f 77 05 00 85 c0 75 16 31 f6 f6
43 04 10 75 05 90 ff 03 89 de 89 e8 e8 4d 11 13 00 eb 26 89 e8 e8 44 11
13 00 8b 3f 85 ff 74 17 <8b> 07 0f 18 00 90 8d 5f d4 8b 4c 24 0c 39 4b
38 75 e8 e9 71 ff
Sep 6 07:35:12 pcazick kernel: EIP: [<c017a26a>] __d_lookup+0xd2/0xfa
SS:ESP 0068:ce5e3dc4
Sep 7 14:15:35 pcazick kernel: BUG: unable to handle kernel paging
request at virtual address ff7eff00
Sep 7 14:15:35 pcazick kernel: printing eip:
Sep 7 14:15:35 pcazick kernel: c017a26a
Sep 7 14:15:35 pcazick kernel: *pde = 00000000
Sep 7 14:15:35 pcazick kernel: Oops: 0000 [#2]
Sep 7 14:15:35 pcazick kernel: PREEMPT SMP
Sep 7 14:15:35 pcazick kernel: Modules linked in: fuse snd_seq_midi
snd_seq_midi_event snd_seq_dummy nfs lockd nfs_acl sunrpc capability
commoncap evdev button ac battery ipv6 dm_snapshot dm_mirror dm_mod
snd_seq i2c_savage4 savagefb fb_ddc i2c_algo_bit snd_ice1724
snd_ice17xx_ak4xxx snd_ac97_codec ac97_bus snd_ak4114 snd_pcm snd_timer
snd_page_alloc i2c_viapro snd_pt2258 snd_i2c snd_ak4xxx_adda
snd_mpu401_uart snd_rawmidi via686a snd_seq_device i2c_isa snd shpchp
parport_pc via_agp soundcore i2c_core rt2500 parport pci_hotplug agpgart
ext3 jbd mbcache raid10 raid456 xor raid1 raid0 multipath linear md_mod
ide_disk ata_generic libata scsi_mod via82cxxx generic ide_core thermal
processor fan vga16fb vgastate
Sep 7 14:15:35 pcazick kernel: CPU: 0
Sep 7 14:15:35 pcazick kernel: EIP: 0060:[<c017a26a>] Not tainted
VLI
Sep 7 14:15:35 pcazick kernel: EFLAGS: 00010286 (2.6.22.1-rt9 #1)
Sep 7 14:15:35 pcazick kernel: EIP is at __d_lookup+0xd2/0xfa
Sep 7 14:15:35 pcazick kernel: eax: ff7eff00 ebx: c3700e5c ecx:
b8a04b79 edx: d1b3e740
Sep 7 14:15:35 pcazick kernel: esi: df48a388 edi: ff7eff00 ebp:
d4ddbf04 esp: d4ddbdc4
Sep 7 14:15:35 pcazick kernel: ds: 007b es: 007b fs: 00d8 gs: 0033
ss: 0068 preempt:00000001
Sep 7 14:15:35 pcazick kernel: Process find (pid: 4155, ti=d4dda000
task=d1b3e740 task.ti=d4dda000)
Sep 7 14:15:35 pcazick kernel: Stack: d4ddbe3c dee70edc 00000006
b8a04b79 d4d21000 b8a04b79 df48a388 d4d21000
Sep 7 14:15:35 pcazick kernel: d4ddbf04 c01714b8 d4ddbe48
d4ddbe3c d4ddbf04 dfadbf20 b8a04b79 df48a388
Sep 7 14:15:35 pcazick kernel: d4d21000 d4ddbf04 c01731c1
d4d21006 00000000 d4ddbe94 c032c960 00010000
Sep 7 14:15:35 pcazick kernel: Call Trace:
Sep 7 14:15:35 pcazick kernel: [<c01714b8>] do_lookup+0x24/0x143
Sep 7 14:15:35 pcazick kernel: [<c01731c1>] __link_path_walk
+0x7d4/0xc12
Sep 7 14:15:35 pcazick kernel: [<c01070f3>] timer_interrupt+0x2e/0x34
Sep 7 14:15:35 pcazick kernel: [<c0173643>] link_path_walk+0x44/0xb3
Sep 7 14:15:35 pcazick kernel: [<c017393a>] do_path_lookup+0x162/0x17d
Sep 7 14:15:35 pcazick kernel: [<c017275e>] getname+0x59/0x8f
Sep 7 14:15:35 pcazick kernel: [<c0174106>] __user_walk_fd+0x2f/0x45
Sep 7 14:15:35 pcazick kernel: [<c016df47>] vfs_lstat_fd+0x16/0x3d
Sep 7 14:15:35 pcazick kernel: [<c016dfb3>] sys_lstat64+0xf/0x23
Sep 7 14:15:35 pcazick kernel: [<c0103e1a>] syscall_call+0x7/0xb
Sep 7 14:15:35 pcazick kernel: [<c02a0000>] __ipv6_addr_type+0xc/0xb8
Sep 7 14:15:35 pcazick kernel: =======================
Sep 7 14:15:35 pcazick kernel: Code: 6f 77 05 00 85 c0 75 16 31 f6 f6
43 04 10 75 05 90 ff 03 89 de 89 e8 e8 4d 11 13 00 eb 26 89 e8 e8 44 11
13 00 8b 3f 85 ff 74 17 <8b> 07 0f 18 00 90 8d 5f d4 8b 4c 24 0c 39 4b
38 75 e8 e9 71 ff
Sep 7 14:15:35 pcazick kernel: EIP: [<c017a26a>] __d_lookup+0xd2/0xfa
SS:ESP 0068:d4ddbdc4
Le jeudi 06 septembre 2007 à 11:06 -0700, Paul E. McKenney a écrit :
> On Thu, Sep 06, 2007 at 12:52:00PM -0500, Clark Williams wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Paul E. McKenney wrote:
> > > On Fri, Jun 08, 2007 at 03:43:48PM -0400, Steven Rostedt wrote:
> > >> On Fri, 2007-06-08 at 12:36 -0700, Paul E. McKenney wrote:
> > >>> On Fri, Jun 08, 2007 at 11:27:08AM -0400, Steven Rostedt wrote:
> > >>>> The first time I compiled it, I forgot the ';' and got a warning there.
> > >>>> But the warning also included "declaring structure softirq_action in
> > >>>> prototype", so I fixed both the ';' and added the struct. I can try
> > >>>> compile without it. But I also know that adding #include <interrupt.h>
> > >>>> in rcupreempt.h caused issues too.
> > >>> If I leave out both the "struct softirq_action" and the
> > >>> rcu_process_callbacks() declaration,, it compiles for me.
> > >>>
> > >>> So I guess the rcu_process_callbacks() should be declared static...
> > >> OK, I can update the patch to reflect that. Remember, I didn't learn
> > >> anything from doing this patch, so I have no idea why
> > >> rcu_procell_callbacks was global. I was just keeping to the norm. :-)
> > >
> > > Hey, -I- learned something from your doing the patch -- namely that
> > > rcu_process_callbacks() was needlessly non-static. ;-)
> > >
> > >> Actually, I'll make a separate patch for this change. This is a
> > >> different issue.
> > >
> > > Sounds good!
> > >
> >
> > Paul,
> >
> > I had a test run of a kernel using Steven's patch (RCU using tasklets) going over the
> > weekend. It looks like it made it through running racer for 24hrs without a panic,
> > but I'm not entirely convinced (since my reservation of the test system expired on
> > Saturday and I didn't look at it until Wednesday; bad Clark, no doughnut).
> >
> > I've got another test running now and I'll be able to poke around on the system
> > tomorrow morning to see if in fact there were no RCU related Oops'en. I'll let you
> > know what we find.
>
> Thank you for the info, Clark!
>
> Of course, this all begs the question of why the heck switching from
> tasklets to softirqs should make any difference at all...
>
> Thanx, Paul
> -
> To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2007-09-07 12:45 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1181180051.18444.31.camel@localhost.localdomain>
[not found] ` <20070607041411.GB1783@linux.vnet.ibm.com>
[not found] ` <1181226138.18444.54.camel@localhost.localdomain>
[not found] ` <20070607161754.GA11941@linux.vnet.ibm.com>
2007-06-07 18:26 ` [PATCH RT] convert RCU Preempt tasklet into softirq Steven Rostedt
2007-06-07 18:51 ` Steven Rostedt
2007-06-07 20:16 ` Steven Rostedt
2007-06-08 4:16 ` Paul E. McKenney
2007-06-08 15:00 ` Paul E. McKenney
2007-06-07 21:02 ` Paul E. McKenney
2007-06-08 15:27 ` Steven Rostedt
2007-06-08 19:36 ` Paul E. McKenney
2007-06-08 19:43 ` Steven Rostedt
2007-06-08 20:00 ` Paul E. McKenney
2007-09-06 17:52 ` Clark Williams
2007-09-06 18:06 ` Paul E. McKenney
2007-09-07 12:30 ` BUG: unable to handle kernel paging joel silvestre
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).