Namhyung Kim (13): Fix explanation of protected write mode in DLM Fix a typo of condsitions Get rid of a duplicate 'throughout' Typo: san -> say Fix indentation in toy RCU implementations Typo: lock -> long Typo: o -> of Typo: thought -> though Typo: their -> there Typo: per-CPU -> per-thread Typo: store queue -> store buffer Get rid of a duplicate 'have' Use pageref command Paul E. McKenney (120): More validation verbiage. Grammar nits in validation chapter. Add verbiage for validation of existing code. Also note documentation for getting head around others' code. Indicate when heavy self-review process is helpful. Give example to go with number-of-tests formula. Additional verbiage for validation chapter. Add quick quiz on writeback message Apply changes noted by Peter Chubb's reading group Add limitations of formal validation to appendix. Clarify that layered locking hierarchies can be non-trivial Add note to self about getting from binomial to poisson Update FAQ to cover translations. Update package list. Add instructions on how to build PDF from git archive. Provide 3.0 and 3.1 history for Linux kernel RCU. Add status of inlining of preemptible RCU's read-side primitives. Parallel dequeue slower than single-threaded implementation Add information on Chinese translation efforts. Update atomic-instruction hardware optimizations Noun-verb agreement Quick quiz for electron drift velocity vs. electron speed Fix SMMP typo (now SMP) Fix lock-starvation example Fix wrong-thread typo. Add an RCU area-of-applicability diagram Adjust the RCU/rwlock comparison figure. Add the RCUAvailability diagram to the todo.txt list. Add maze example into perfbook code samples. Fix typo: s/each/eat/ Fix typo: s/were/where/ Add Quick Quiz about empty lock-based critical sections. Add more guidance on where to use RCU. Add a discussion of HTM Add reference to user-space RCU to TM discussion Make CELL_PAD_SIZE padding work correctly. Expand answer to empty-critical-section QQ in HTM section Introduce "lemming effect" terminology Add HTMovf.c to compute HTM success probabilities Pass pattern-report function to spread_success() and spread_failure(). Make HTMovf use adaptive approach, computing most efficient way Fix typo, do success as well as failure. Add HTMovf option to count patterns Add GPL header, add "C" to usage list Add script to print out gnuplot input for 4K cache. Generalize HTMovf4K.bash to handle different cache sizes Add ability to change cache size and line size for HTMovfNK.bash Add a Monte Carlo HTMovfMC and Makefile Add script to drive Monte Carlo HTM overflow calculation Clean up HTMovfNK.bash comments. Make mazecmp.bash able to generate rectangular mazes Add runrectmazecmp.bash to generate rectangular mazes with 250000 cells Fix label in 500-ms_seqVfg_part-cdf.eps plot. Add rectangular-maze data-reduction script Update validation chapter. Fix captions in plots for paper. Vampire projects in validation section. Additional verbiage in the Validation chapter. Add derivation of Poisson Distribution to validation chapter Fix signedness of lambda More poisson-distribution verbiage for validation. Note faster counting by non-atomic add, even with lost adds Updates for readers who don't like Quick Quizzes Update Hardware chapter for HTM announcements Yet more verbiage on Quick Quizzes Emphasize value of batching in matrix-multiply example Finish Poisson, start anti-Heisenbug. Make CodeSamples detect v2 of liburcu A bit more on anti-heisenbugs. Get rid of diagnostic change to count_nonatomic.c More on heisenbugs and anti-heisenbugs Validation sections on starting and open-source validation Validation chapter fixes. Adjust for 1000x1000 rectangular maze run. Update locking section with reference to 2PL and Doug Lea Add more info on hunting heisenbugs Update list primitives to liburcu1 Fix x-axis labels on plots Typo: bade -> bid. Clarify single-variable stores and cache coherence. Further updates to single-variable memory consistency Introduce "cache coherence" term at beginning of section Beginnings of performance validation. Add proper attribution for Rusty Scale. Fix capitalization in Rusty Scale bibliography entry. Add more material to hero/villain discussion of locking. Add more library-oriented locking hero/villain discussion Avoid needlessly rerunning pdflatex. Break up too-long code-display figure in counting chapter. Fix additional tabular vertical overflows. Add more to locking villainy WRT to single-threaded libraries Fix erroneous "good in practice" statement. Self-review updates to the locking chapter. Add citations for perf and oprofile to locking. Fix ref->pageref in quick quiz answer. Rework empty-critical-section answer Plots for HTM success probability Expand on compiler and CPU memory-ordering mischief Add TM transaction-footprint Monte Carlo data for 4K cache size Add HTM lock elision examples involving real-time techniques. Note real-time limitations of HTM, fix some typos Add more HTM failure-probability plot data Make title-page email address use mailto: format. More validation verbiage Removed unused variables from locktdeq.c Update deq discussion to match new code. Update line numbers to match new dequeue code Catch qqz.tex up with recent commits. Add README file for maze source code. Add verbiage about circulating-token lock. Update RCU applicability diagram based on recent discussions Update single-column version's bibliography Note matrix multiply as third partitioning example, humiliating parallelism Update .gitignore files to reduce git noise Create a matmul_block to compare block to interleaved matrix multiplication Fix typos in RCU Usage section. Fix memory-barrier example Fix dangling Latex label. Fix typo "their" -> "there" Add Marvin Heffler as machine owner. Vegard Nossum (1): Fix stutter in appendix on memory barriers .gitignore | 3 + CodeSamples/Makefile | 32 +- CodeSamples/SMPdesign/.gitignore | 1 + CodeSamples/SMPdesign/Makefile | 5 +- CodeSamples/SMPdesign/deqtorture.h | 36 +- CodeSamples/SMPdesign/lockdeq.c | 34 +- CodeSamples/SMPdesign/lockhdeq.c | 46 +- CodeSamples/SMPdesign/locktdeq.c | 54 +- CodeSamples/SMPdesign/matmul_block.c | 113 + CodeSamples/SMPdesign/maze/.gitignore | 19 + CodeSamples/SMPdesign/maze/Makefile | 52 + CodeSamples/SMPdesign/maze/README | 38 + CodeSamples/SMPdesign/maze/maze.c | 1018 ++++++ CodeSamples/SMPdesign/maze/maze.h | 198 ++ CodeSamples/SMPdesign/maze/maze_2seq.c | 425 +++ CodeSamples/SMPdesign/maze/maze_fg.c | 296 ++ CodeSamples/SMPdesign/maze/maze_parallel.h | 60 + CodeSamples/SMPdesign/maze/maze_part.c | 883 +++++ CodeSamples/SMPdesign/maze/maze_seq.c | 127 + CodeSamples/SMPdesign/maze/mazecmp.bash | 99 + CodeSamples/SMPdesign/maze/mazegen.bash | 19 + CodeSamples/SMPdesign/maze/mazeq.sh | 37 + CodeSamples/SMPdesign/maze/mazethread.bash | 75 + CodeSamples/SMPdesign/maze/plots.sh | 62 + CodeSamples/SMPdesign/maze/productionplots.bash | 122 + CodeSamples/SMPdesign/maze/reduce.bash | 170 + CodeSamples/SMPdesign/maze/reducemazecmp.bash | 128 + CodeSamples/SMPdesign/maze/reducemazethread.bash | 68 + CodeSamples/SMPdesign/maze/reducerectmazecmp.bash | 72 + CodeSamples/SMPdesign/maze/runmazecmp.bash | 38 + CodeSamples/SMPdesign/maze/runmazethread.bash | 40 + CodeSamples/SMPdesign/maze/runrectmazecmp.bash | 35 + CodeSamples/advsync/queuetorture.h | 18 +- CodeSamples/api.h | 2 +- CodeSamples/defer/Makefile | 2 +- CodeSamples/defer/bug_rcu_dp.c | 14 +- CodeSamples/future/.gitignore | 3 + CodeSamples/future/HTMovf.c | 249 ++ CodeSamples/future/HTMovf32KMC.eps | 3865 +++++++++++++++++++++ CodeSamples/future/HTMovf4K.eps | 2469 +++++++++++++ CodeSamples/future/HTMovf4KMC.eps | 2738 +++++++++++++++ CodeSamples/future/HTMovfMC.c | 88 + CodeSamples/future/HTMovfMCNK.bash | 44 + CodeSamples/future/HTMovfMCNK.bash.16K.4.64.out | 257 ++ CodeSamples/future/HTMovfMCNK.bash.32K.1.64.out | 513 +++ CodeSamples/future/HTMovfMCNK.bash.32K.2.64.out | 513 +++ CodeSamples/future/HTMovfMCNK.bash.32K.4.64.out | 513 +++ CodeSamples/future/HTMovfMCNK.bash.32K.8.64.out | 486 +++ CodeSamples/future/HTMovfMCNK.bash.4K.1.32.out | 129 + CodeSamples/future/HTMovfMCNK.bash.4K.1.64.out | 65 + CodeSamples/future/HTMovfMCNK.bash.4K.2.64.out | 65 + CodeSamples/future/HTMovfMCNK.bash.4K.4.64.out | 65 + CodeSamples/future/HTMovfMCNK.bash.4K.8.64.out | 65 + CodeSamples/future/HTMovfMCNK.bash.8K.2.64.out | 129 + CodeSamples/future/HTMovfNK.bash | 43 + CodeSamples/future/HTMovfNK.bash.4K.1.64.out | 65 + CodeSamples/future/HTMovfNK.bash.4K.2.64.out | 65 + CodeSamples/future/HTMovfNK.bash.4K.4.64.out | 65 + CodeSamples/future/HTMovfNK.bash.4K.8.64.out | 65 + CodeSamples/future/HTMovfx86MC.eps | 3047 ++++++++++++++++ CodeSamples/future/HTMovfx86SMC.eps | 2348 +++++++++++++ CodeSamples/future/Makefile | 27 + CodeSamples/future/plots.sh | 124 + FAQ.txt | 50 + Makefile | 12 +- SMPdesign/SMPdesign.tex | 29 +- SMPdesign/partexercises.tex | 221 +- advsync/memorybarriers.tex | 62 +- appendix/ack/ack.tex | 1 + appendix/appendix.tex | 2 +- appendix/formal/formal.tex | 6 + appendix/primitives/primitives.tex | 2 +- appendix/rcuhist/RCUinLinux.tex | 87 +- appendix/rcuimpl/rcutree.tex | 4 +- appendix/whymb/whymemorybarriers.tex | 125 +- count/count.tex | 158 +- cpu/hwfreelunch.tex | 34 + cpu/overheads.tex | 2 +- cpu/overview.tex | 11 +- debugging/debugging.tex | 1336 +++++++- defer/RCUApplicability.eps | 193 + defer/RCUApplicability.fig | 28 + defer/rcuapi.tex | 2 +- defer/rcuusage.tex | 89 +- defer/rwlockRCUupdate.eps | 13 +- defer/rwlockRCUupdate.fig | 48 +- defer/seqlock.tex | 4 +- defer/toyrcu.tex | 10 +- easy/easy.tex | 61 +- future/HTMtable.tex | 116 + future/HTMtableRCU.tex | 147 + future/cpu.tex | 2 +- future/future.tex | 4 +- future/htm.tex | 1096 ++++++ future/tm.tex | 6 +- glossary.tex | 12 + intro/intro.tex | 106 +- legal.tex | 2 +- locking/locking-existence.tex | 6 +- locking/locking.tex | 753 ++++- owned/owned.tex | 11 +- perfbook-1c.bbl | 338 ++- perfbook.bbl | 298 ++- perfbook.tex | 6 +- qqz.tex | 964 +++++- todo.txt | 20 + utilities/runlatex.sh | 58 + 107 files changed, 28583 insertions(+), 498 deletions(-) create mode 100644 CodeSamples/SMPdesign/matmul_block.c create mode 100644 CodeSamples/SMPdesign/maze/.gitignore create mode 100644 CodeSamples/SMPdesign/maze/Makefile create mode 100644 CodeSamples/SMPdesign/maze/README create mode 100644 CodeSamples/SMPdesign/maze/maze.c create mode 100644 CodeSamples/SMPdesign/maze/maze.h create mode 100644 CodeSamples/SMPdesign/maze/maze_2seq.c create mode 100644 CodeSamples/SMPdesign/maze/maze_fg.c create mode 100644 CodeSamples/SMPdesign/maze/maze_parallel.h create mode 100644 CodeSamples/SMPdesign/maze/maze_part.c create mode 100644 CodeSamples/SMPdesign/maze/maze_seq.c create mode 100755 CodeSamples/SMPdesign/maze/mazecmp.bash create mode 100644 CodeSamples/SMPdesign/maze/mazegen.bash create mode 100644 CodeSamples/SMPdesign/maze/mazeq.sh create mode 100755 CodeSamples/SMPdesign/maze/mazethread.bash create mode 100644 CodeSamples/SMPdesign/maze/plots.sh create mode 100644 CodeSamples/SMPdesign/maze/productionplots.bash create mode 100644 CodeSamples/SMPdesign/maze/reduce.bash create mode 100644 CodeSamples/SMPdesign/maze/reducemazecmp.bash create mode 100644 CodeSamples/SMPdesign/maze/reducemazethread.bash create mode 100644 CodeSamples/SMPdesign/maze/reducerectmazecmp.bash create mode 100644 CodeSamples/SMPdesign/maze/runmazecmp.bash create mode 100644 CodeSamples/SMPdesign/maze/runmazethread.bash create mode 100644 CodeSamples/SMPdesign/maze/runrectmazecmp.bash create mode 100644 CodeSamples/future/.gitignore create mode 100644 CodeSamples/future/HTMovf.c create mode 100644 CodeSamples/future/HTMovf32KMC.eps create mode 100644 CodeSamples/future/HTMovf4K.eps create mode 100644 CodeSamples/future/HTMovf4KMC.eps create mode 100644 CodeSamples/future/HTMovfMC.c create mode 100644 CodeSamples/future/HTMovfMCNK.bash create mode 100644 CodeSamples/future/HTMovfMCNK.bash.16K.4.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.32K.1.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.32K.2.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.32K.4.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.32K.8.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.4K.1.32.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.4K.1.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.4K.2.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.4K.4.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.4K.8.64.out create mode 100644 CodeSamples/future/HTMovfMCNK.bash.8K.2.64.out create mode 100644 CodeSamples/future/HTMovfNK.bash create mode 100644 CodeSamples/future/HTMovfNK.bash.4K.1.64.out create mode 100644 CodeSamples/future/HTMovfNK.bash.4K.2.64.out create mode 100644 CodeSamples/future/HTMovfNK.bash.4K.4.64.out create mode 100644 CodeSamples/future/HTMovfNK.bash.4K.8.64.out create mode 100644 CodeSamples/future/HTMovfx86MC.eps create mode 100644 CodeSamples/future/HTMovfx86SMC.eps create mode 100644 CodeSamples/future/Makefile create mode 100644 CodeSamples/future/plots.sh create mode 100644 defer/RCUApplicability.eps create mode 100644 defer/RCUApplicability.fig create mode 100644 future/HTMtable.tex create mode 100644 future/HTMtableRCU.tex create mode 100644 future/htm.tex create mode 100644 utilities/runlatex.sh