Skip to content

RFC preemptible RCU

Paul E. McKenney linux-rt-users lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest3 of 4 patches 7 repliesIn review

3 of 4 patches are in this archive. The cover letter announces 4.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4RCU: Fix barrierskernel/rcuclassic.c kernel/rcupdate.c+11 -10 replies
3/4RCU: preemptible RCUinclude/linux/interrupt.h include/linux/rcuclassic.h include/linux/rcupdate.h +8 more+1337 -34 replies
4/4RCU: synchronize_sched() without migrationinclude/linux/rcuclassic.h include/linux/rcupdate.h include/linux/rcupreempt.h +4 more+154 -1462 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/4 RFC] preemptible RCU

Hello!

This patchset is an update of that posted by Dipankar last January
(http://lkml.org/lkml/2007/1/15/133). This is work in progress, not yet ready for inclusion. It passes rcutorture on i386, x86_64, and ppc64 boxes as well as kernbench, so should be safe for experimentation. As with Dipankar's previous post, this variant of preemptible rcu_read_lock() and rcu_read_unlock may be invoked from NMI/SMI handlers, and do not contain any heavyweight atomic operations or memory barriers (although they do still momentarily disable IRQs). This patchset features a fully parallel grace-period computation, which will become increasingly important with upcoming multicore/multi-threaded CPUs. In addition, this patchset provides a preemptible-RCU variant of synchronize_sched() that avoids the previous deadlock with CPU hotplug -- this variant may eventually prove unnecessary, but is offered in the spirit of separating concerns.

Next steps: (1) Integrate with CPU hotplug. (2) Re-merge RCU priority boosting. (3) Fix some naming issues. Longer term work includes optimized dyntick operation and eliminating the interrupt disabling in rcu_read_lock() and rcu_read_unlock().

Thanx, Paul