preempt rcu bug on s390

From: Heiko Carstens
Date: Sat Feb 09 2008 - 06:34:58 EST


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):

STACK TRACE FOR TASK: 0xf84d968 (swapper)

STACK:
0 schedule+842 [0x36c956]
1 schedule_timeout+172 [0x36d0e4]
2 wait_for_common+204 [0x36c398]
3 synchronize_rcu+76 [0x567bc]
4 netlink_change_ngroups+150 [0x2b4302]
5 genl_register_mc_group+256 [0x2b6174]
6 genl_init+188 [0x534e44]
7 kernel_init+444 [0x518334]
8 kernel_thread_starter+6 [0x192a6]

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?
--
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/