RCU changes for v4.5
Subsystems (12)
Linus,
Please pull the latest core-rcu-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus
# HEAD: 3104fb3dd45bb47ff1382d1c079c251710ddcae3 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
The changes in this cycle were:
- Adding transitivity uniformly to rcu_node structure ->lock acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)
- Documentation updates, including RCU requirements.
- Expedited grace-period changes.
- Miscellaneous fixes.
- Linked-list fixes, courtesy of KTSAN.
- Torture-test updates.
- Late-breaking fix to sysrq-generated crash.
One thing I should note is that these pieces of documentation are fairly large files:
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++
and are written in HTML, not the usual .txt style. I hope they are fine.
Thanks,
Ingo
------------------>
Alexey Kardashevskiy (2):
rcu: Fix comment for rcu_dereference_raw_notrace
list: Add lockless list traversal primitives
Ani Sinha (1):
sysrq: Fix warning in sysrq generated crash.
Chris Metcalf (1):
Documentation/memory-barriers.txt: Fix ACCESS_ONCE thinko
Paul E. McKenney (40):
list: Use WRITE_ONCE() when adding to lists and hlists
list: Use READ_ONCE() when testing for empty lists
rcu: Add transitivity to remaining rcu_node ->lock acquisitions
rcu: Short-circuit synchronize_sched_expedited() if only one CPU
rcu: Clarify role of ->expmaskinitnext
rcu: Move smp_mb() from rcu_seq_snap() to rcu_exp_gp_seq_snap()
rcu: Invert sync_rcu_exp_select_cpus() "if" statement
rcu: Reduce expedited GP memory contention via per-CPU variables
rcu: Make expedited grace periods resolve stall-warning ties
rcu: Add more diagnostics to expedited stall warning messages.
rcu: Add rcu_normal kernel parameter to suppress expediting
rcu: Wire up rcu_end_inkernel_boot()
rcu: Allow expedited grace periods to be disabled at init
rcu: Move lock_class_key to local scope
rcu: Simplify rcu_sched_qs() control flow
rcu: Remove lock-acquisition loop from rcu_read_unlock_special()
rcu: Fix obsolete rcu_bootup_announce_oddness() comment
rcu: Avoid tick_nohz_active checks on NOCBs CPUs
rcu: Stop disabling interrupts in scheduler fastpaths
list: Use WRITE_ONCE() when initializing list_head structures
documentation: Record RCU requirements
Documentation: Record bottom-bit-zero guarantee for ->next
documentation: Cover requirements controlling stall warnings
documentation: Composability analogies
documentation: Expand on scheduler/RCU deadlock requirements
documentation: Clarify RCU memory barriers and requirements
documentation: Update RCU requirements based on expedited changes
rcutorture: Add batch number to script printout
rcutorture: Flag nonexistent RCU GP kthread
rcutorture: Dump stack when GP kthread stalls
rcutorture: Default grace period to three minutes, allow override
rcutorture: Print symbolic name for rcu_torture_writer_state
rcutorture: Print symbolic name for ->gp_state
torture: Abbreviate console error dump
torture: Place console.log files correctly from the get-go
rcu: Remove TINY_RCU bloat from pointless boot parameters
rcu: Eliminate unused rcu_init_one() argument
rcu: Make cpu_needs_another_gp() be bool
rcu: Don't redundantly disable irqs in rcu_irq_{enter,exit}()
rcu: Make rcu_gp_init() be bool rather than int
Paul Gortmaker (1):
kernel: Make rcu/tree_trace.c explicitly non-modular
Peter Zijlstra (2):
rcu: Create transitive rnp->lock acquisition functions
rcu: Move wakeup out from under rnp->lockPetko Manolov (1):
list: Introduces generic list_splice_tail_init_rcu()
Yang Shi (1):
rcutorture: Remove CONFIG_RCU_USER_QS from rcutorture selftest doc
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytes .../Design/Requirements/GPpartitionReaders1.svg | 374 +++ .../RCU/Design/Requirements/RCUApplicability.svg | 237 ++ .../Design/Requirements/ReadersPartitionGP1.svg | 639 +++++ .../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++ Documentation/RCU/Design/htmlqqz.sh | 108 + Documentation/kernel-parameters.txt | 29 +- Documentation/memory-barriers.txt | 8 +- drivers/tty/sysrq.c | 6 + include/linux/list.h | 14 +- include/linux/list_bl.h | 2 +- include/linux/list_nulls.h | 2 +- include/linux/rculist.h | 105 +- include/linux/rcupdate.h | 21 +- include/linux/rcutiny.h | 8 + include/linux/rcutree.h | 4 +- include/linux/tracepoint.h | 4 +- init/main.c | 2 + kernel/ksysfs.c | 26 +- kernel/rcu/rcutorture.c | 24 +- kernel/rcu/srcu.c | 2 +- kernel/rcu/tree.c | 313 ++- kernel/rcu/tree.h | 61 +- kernel/rcu/tree_plugin.h | 66 +- kernel/rcu/tree_trace.c | 39 +- kernel/rcu/update.c | 22 +- kernel/sched/core.c | 6 +- lib/list_debug.c | 2 +- .../selftests/rcutorture/bin/kvm-test-1-run.sh | 9 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 22 +- .../selftests/rcutorture/bin/parse-console.sh | 41 +- .../testing/selftests/rcutorture/doc/TINY_RCU.txt | 1 - .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 4 - 34 files changed, 7552 insertions(+), 287 deletions(-) create mode 100644 Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png create mode 100644 Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg create mode 100644 Documentation/RCU/Design/Requirements/RCUApplicability.svg create mode 100644 Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg create mode 100644 Documentation/RCU/Design/Requirements/Requirements.html create mode 100644 Documentation/RCU/Design/Requirements/Requirements.htmlx create mode 100755 Documentation/RCU/Design/htmlqqz.sh
Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png new file binary +0 -0
Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg new file +374 -0
374 lines not on this page · raw message
Documentation/RCU/Design/Requirements/RCUApplicability.svg new file +237 -0
237 lines not on this page · raw message
Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg new file +639 -0
639 lines not on this page · raw message
Documentation/RCU/Design/Requirements/Requirements.html new file +2897 -0
1,750 lines not on this page · raw message
Documentation/RCU/Design/Requirements/Requirements.htmlx new file +2741 -0
2,741 lines not on this page · raw message
Documentation/RCU/Design/htmlqqz.sh new file +108 -0
108 lines not on this page · raw message
include/linux/rculist.h +85 -20
105 lines not on this page · raw message
kernel/rcu/tree.c +170 -143
313 lines not on this page · raw message
kernel/rcu/tree.h +57 -4
61 lines not on this page · raw message
kernel/rcu/tree_plugin.h +27 -39
66 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh +3 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/bin/kvm.sh +16 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/bin/parse-console.sh +35 -6
41 lines not on this page · raw message
tools/testing/selftests/rcutorture/doc/TINY_RCU.txt +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt +0 -4
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Quoted 26 lines · Ingo Molnar
Linus,
Please pull the latest core-rcu-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus # HEAD: 3104fb3dd45bb47ff1382d1c079c251710ddcae3 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcuThe changes in this cycle were:
- Adding transitivity uniformly to
rcu_nodestructure ->lock acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)- Documentation updates, including RCU requirements.
- Expedited grace-period changes.
- Miscellaneous fixes.
- Linked-list fixes, courtesy of KTSAN.
- Torture-test updates.
- Late-breaking fix to sysrq-generated crash.
Quoted 7 lines
One thing I should note is that these pieces of documentation are fairly large files:
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
For whatever it is worth, the reason for this unconventional choice was that attempts to do the diagrams in ASCII art failed miserably. And attempts to do ASCII art for the upcoming documentation of the data structures failed even more miserably.
Thanx, Paul
Quoted 9 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Not to mention the PNG image:
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytes
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
Quoted 8 lines
Quoted 4 lines
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Not to mention the PNG image:
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytes
Most diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.
Thoughts?
Thanx, Paul
Quoted 11 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 12 lines · Paul E. McKenney
Quoted 11 lines · Geert Uytterhoeven
Quoted 9 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Quoted 8 lines
Quoted 3 lines
Not to mention the PNG image:
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytesMost diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.
Thoughts?
Too late, it's in git history...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 16 lines · Geert Uytterhoeven
Quoted 14 lines · Paul E. McKenney
Quoted 13 lines · Geert Uytterhoeven
Quoted 9 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Not to mention the PNG image:
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytesMost diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.
Thoughts?
Too late, it's in git history...
There is always "git rm". Or is your concern instead the size of the .git/objects directory?
Thanx, Paul
Quoted 22 lines · Paul E. McKenney
Quoted 21 lines · Geert Uytterhoeven
Quoted 19 lines · Paul E. McKenney
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
Quoted 8 lines
Quoted 4 lines
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Not to mention the PNG image:
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytesMost diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
Thoughts?
Too late, it's in git history...
There is always "git rm". Or is your concern instead the size of the .git/objects directory?
My only remark is that if we don't want PNGs, they shouldn't enter git history, as "git rm" doesn't really remove them. So we can't get rid of the existing ones, but we can still think about if we want (no) more of them...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 26 lines · Geert Uytterhoeven
Quoted 24 lines · Paul E. McKenney
Quoted 23 lines · Geert Uytterhoeven
Quoted 20 lines · Paul E. McKenney
Quoted 6 lines · Geert Uytterhoeven
Quoted 5 lines · Ingo Molnar
Please pull the latest core-rcu-for-linus git tree from:
One thing I should note is that these pieces of documentation are fairly large files:
Quoted 8 lines
Quoted 4 lines
.../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++and are written in HTML, not the usual .txt style. I hope they are fine.
Not to mention the PNG image:
Quoted 1 line
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytesMost diagrams will be .svg. But if the .png is too objectionable, it would not be too big a deal to remove it.
Thoughts?
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
Too late, it's in git history...
There is always "git rm". Or is your concern instead the size of the .git/objects directory?
My only remark is that if we don't want PNGs, they shouldn't enter git history, as "git rm" doesn't really remove them. So we can't get rid of the existing ones, but we can still think about if we want (no) more of them...
Fair enough! For whatever it is worth, we do have a number of .pbm, .ppm, and .pdf files.
Thanx, Paul