Messages in this thread | | | Date | Sun, 10 Feb 2008 14:01:50 +0100 | From | Heiko Carstens <> | Subject | Re: preempt rcu bug on s390 |
| |
> > > > Using CONFIG_PREEMPT_RCU and CONFIG_NO_IDLE_HZ on s390 my system always > > > > gets stuck when running with more than one cpu. > > > > When booting with four cpus I get all four cpus caught withing cpu_idle > > > > and not advancing anymore. However there is the init process which is > > > > waitung for synchronize_rcu() to complete (lcrash output): > > > > > > > > If I change the code so that timer ticks won't be disabled everything > > > > runs fine. So my guess is that rcu_needs_cpu() doesn't do the right > > > > thing for the rcu preemptible case. > > > > > > > > Kernel version is git head of today. > > > > > > > > Any ideas? > > > > > > Does this tree have http://lkml.org/lkml/2008/1/29/208 applied? > > > > > > If not, could you please check it out? > > > > It's not applied, however it doesn't change anything. Also the patch > > is tied to the dynticks implementation which is differently from > > s390's nohz implementation. > > I had to add the patch below so it would make at least some sense. > > But it doesn't fix the problem. > > OK, I was afraid of that. ;-) > > Does s390 start out in nohz mode? The reason I ask is that it feels like > an off-by-one error for the dynticks_progress_counter.
Actually I forgot to add a few ifdefs to make the code do something :) That just reveals that we have a conflict with the dynticks implementation and s390's nohz that shows up in what rcu_irq_enter/exit assume. I didn't patch s390 and common code so it will work, but I think the patch you mentionened will fix the problem I reported. So I guess we should either convert s390 to use the generic dynticks implementation or disable preemptible rcu on s390 until we converted our code.
Thanks for helping debugging this!
| |