Akira Yokosawa (70): memorder: Put \FloatBarrier in front of Section 15.3 memorder: Fix typo formal: Update RCU-test-ratio table as of v6.0 memorder: Fix a line number reference error Stick to mfirstuc v2.07 locking: Adjust coding style of rec_tree_itr.c snippet cpu: Add end-of-sentence markers CodeSamples: Add -fcommon to GCC_ARGS CodeSamples/locking: Add rec_tree_itr to .gitignore Replace "egrep" with "grep -E" in scripts SMPdesign: Fix typo Load amsmath before fvextra (for lineno v5.0) advsync/rt: Fold long list in \cite{} formal: Update RCU-test-ratio table as of v6.1 docker: bionic: Rollback glossaries-extra manually Stick to LaTeX2e glossaries packages Redefine \epigraph to avoid boilerplate \emph{} epigraph: Emphasize quoted text and book titles Use Biolinum font family for epigraph toolsoftrade: Fix staccato of 'than' run{first}latex.sh: Set default of LATEX variable properly FAQ-BUILD.txt: Add libertine in the list of fonts autodate.sh: Add graceful fallback of commitid-only mode for shallow clone gitlab-ci.yml: Add Liberation font families for PDF build cpu: Add a QQz citing table E.1 cpu: Add a QQz on table E.1 cpu: Improve layout and consistency of Tables 3.1, E.1, and E.2 cpu: Use 'on-core' rather than 'in-core' cpu: Add page reference to Table E.1 in QQz 3.8 toolsoftrade: Fix QQz macro in QQz series formal: Update RCU-test-ratio table as of v6.2 memorder: Fix PowerPC's rmb() requirement Use /usr/bin/env in shebang of perl scripts extractqqz.sh: Allow alternative command name for 'sed' Makefile: Use multiple '-e' flags for non-GNU sed compatibility autodate.sh: Add code for BSD-flavor date command autodate.sh: Allow alternative command name for 'date' Makefile: Use portable egrep pattern (enclose '{' in '[]') Makefile: Move CREFPAIR check into cleverefcheck.sh FAQ-BUILD.txt: Add Q&A on building under non-GNU/Linux systems Use fig2dev as fallback to fig2eps Add precheck.sh FAQ-BUILD: Mention precheck Stop using 'which' command in build scripts FAQ-BUILD.txt: Remove fig2ps from necessary packages Makefile: Remove 'SHELL = /bin/bash' FAQ-BUILD.txt: Remove /bin/bash from list of requirements autodate.sh: Allow alternative name for sed precheck.sh: Test sed against repeat patterns \+ and \? Fix warning of missing font shape Stop loading fixltx2e parallel-latex-regress.sh: Pass WHICH=which to reference Makefile docker: Cope with change in latexpand-v1.3.tar.gz from gitlab count: Correct grammar in QQz 5.50 memorder: Use desctiption list for PowerPC terminology memorder: Remove \FloatBarrier in front of Section 15.2.8 toolsoftrade: Use description list toolsoftrade: Add section titles of 'API Members' formal/spinhint: Don't use \qco{} for long message formal/ppcmem: Use \qco{} as intended Add acronyms of LKMM and KCSAN CodeSamples/count: Adjust coding style count: Adjust scaling factor of Listing 5.18 Tweak TOC width params precheck.sh: Export LC_TIME CodeSample/formal/rcutorture.sh: Ignore Makefile and Kconfig* Update rcu-test.dat as of v6.3, using updated rcutorture.sh CodeSamples/formal/data/plot.sh: Tweak plot params Update plot of RCU-test-ratio as of v6.3 defer/rcuapi: Tweak Table E.3 Alan Huang (16): CodeSamples/count: Add necessary partial memory barriers CodeSamples/count: Weaken full memory in count_stat_eventual.c CodeSamples/count: Remove unnecessary memory barriers CodeSamples/defer: Fix hazard torture defer/whichtochoose: Make paragraph consistent with table defer/rcuusage: Make Figure 9.29 more accurate datastruct: Update the number of CPUs datastruct: Make the figure consistent with the page datastruct: Remove outdated content datastruct: Fix typo formal: Fix references CodeSample/count: Use plain access instead of WRITE_ONCE together: Remove wrong content together: Fix the description of state traversal CodeSample/count: Update the places where READ_ONCE is used advsync: Fix typos Elad Lahav (6): locking: Warn about state preservation when releasing and re-acquiring locks locking: Fix small typo locking: Now with more danger! RCU fundamentals: Fix tense: s/enabled/enables/ RCU fundamentals: Use reader is access_route() not read_gptr() RCU fundamentals: Remove redundant "are" Leonardo Bras (7): Add utilities/gitlab-ci.yml for pdf generation and testing on Gitlab. Codesamples/depends.mk : Replace non-portable uname '-p' with '-m' CodeSamples: Add check target to CodeSamples/ and count/ Makefiles utilities/gitlab-ci.yml: Add 'make check' on test_codesamples utilities/gitlab-ci: Change base machine type to 2-cpu to fix "make check" utilities/gitlab-ci: Fix gitlab-ci due to Arch Linux deprecating texlive-most utilities/gitlab-ci: Remove custom build of fig2ps Patrick Pan (2): memorder: Correct the transformed Listing 15.30 code memorder: The Listing 15.35 exists clause is never satisfied Paul E. McKenney (91): utilities/toarxiv: Add a few new-to-arxiv files locking: Fix "an pointer" typo defer/rcurelated: Add Timothy Harris's time-based RCU CodeSamples/defer: Record antecedent for rcu_ts.c locking: Avoid over-claiming for futexes locking: Expand on fork()/exec() locking issues summary: Later concurrency expert cpu: Add section on thermal throttling cartoons: Add evidence of thermal distress Codesamples/defer: Make rcuscale.sh use kvm_again.sh count: Explain that increments are spread across counters advsync/rt: Ask the dinosaurs about bigger hammers appendix/whymb: Note store to memory in SB/MB example toolsoftrade: Add QQ about task-local storage in Linux kernel QAfter: Add a timeskew checker QAfter: Avoid roundoff and take more measurements howto: Provide alternative https-based git URL QAfter: Add backwards-time checks to timeskew QAfter: Fix CLOCK_MONOTONIC normalization QAfter: Add timeskewsummary.sh script to summarize timeskew output QAfter: Add timeskewhist.sh script to create timeskew histogram QAfter: Add timeskew output and resulting histogram QAfter: Add actual data to multiple-clocks discussion QAfter: Fix type s/getttime/gettime/ Bibliography update QAfter: Cite Frederic's nohz_full TSC blog post advsync/rt: Cite Frederic Weisbecker's nohz_full TSC series howto: Add more guidance for Sorin et al. count: Approximate limit counters might not exceed memorder: Add section for transitive intuitions memorder: Add figure for intuitive locking memorder: Add figure for intuitive release-acquire chains memorder: Tie advanced rules of thumb to intuitions memorder: Self-review of "Memory-Model Intuitions" SMPdesign/beyond: Add quick quizzes about maze solution Bibliography update howto: Add Mara Bos's Rust Concurrency book Revert "cpu: Add a QQz citing table E.1" Bibliography update defer/rcu: Include Butler Lampson RCU assessment todo.txt: Tentative plan for memory-model development Merge tag 'for-paul-portable-build' of https://github.com/akiyks/perfbook into HEAD Merge commit 'c29c59539a033c1d10324faa0f997a0ae562af4c' count: Update signal-theft memory ordering QQ toolsoftrade: Store-to-load transformations s/statment/statement/ defer/rcurelated: Add QQ on Kung and Lehman issues locking/locking-existence: Mark Listing 7.10 as buggy defer/rcurelated: Add QQ about divergent RCU terminology defer/rcurelated: Wordsmith QQ 9.69 on Kung and Lehman defer/rcuusage: Add Quick Quiz on existance-guarantee techniques memorder: Self-review of chapter lead-in text memorder: Add Intel Core 2 Architecture diagram memorder: Add simplified Intel Core 2 Architecture diagram memorder: Add text for Intel_Core2_arch diagrams memorder: Self-review of Section 15.1 lead-in memorder: Update Intel_Core2_arch-simplified borders memorder: Straggling Section 15.1 lead-in change memorder: Add Section 15.1.3 paragraph on handlers memorder: Self-review of Section 15.2 memorder: Self-review of Section 15.3 memorder: Self-review Section 15.4 glossary: Combinatorial explosion and implosion memorder: Section 15.5 self-review memorder: Section 15.6 self-review memorder: Add section demonstrating R on PowerPC memorder: Self-review of section demonstrating R on PowerPC memorder: Switch screenshots from .jpg to .png memorder: Remove \FloatBarrier memorder: Add RCU intuitions section defer/rcu: Wordsmith Butler Lampson RCU classification defer: Add lead-in list of mysteries defer: Add lead-in list of problems defer/rcuusage: Clarify grey dashed lines in Figure 9.29 defer/rcuusage: Fix Figure 9.29 arrow direction defer/rcuusage: Add QQ on new Figure 9.29 GP start toolsoftrade: Improve invented-stores example datastruct: Add lead-in list of complications treewide: Use "chp:" consistently as chapter label prefix debugging: Minor wordsmithing of first time working rcuapi: Add QQ on synchronize_rcu() vs. rcu_barrier() rt: Fix typos s/millisecond/microsecond/ s/subtlely/subtly/ spinhint: Add clarifying step to QRCU by-hand proof defer/rcuintro: Self-review defer/rcufundamental: Self review defer/rcuusage: Add rcu_sync as phased state change example defer/rcurelated: Add LWN articles for userspace RCU defer/rcuapi: Add special case for rcu_barrier() together/applyrcu: Note possibility of lost counts locking: Use hand-over-hand locking for protocol-stack example Revert "together/applyrcu: Note possibility of lost counts" utilities/torelease: Add ebook PDF to final list SeongJae Park (37): defer/rcuintro: Clearly point the QSBR described section defer/rcufundamental: Add non-breaking spaces defer/rcuapi: Add missed unbreakable spaces defer/rcuapi: Use \co{} for boolean return value defer/seqlock: Use \co{} for boolean return value defer/rcuusage: Call paragraphs paragraphs, not sections defer/rcuusage: Provide the reference to synchronous RCU update-side primitives defer/rcuusage: Add a missed unbreakable space defer/rcuusage: Add missing '()' for 'rcu_dereference()' defer/rcuusage: Fix wrong function name: s/timer_stop/nmi_stop/ defer/rcurelated: Remove unopen closing parentheses defer/whichtochoose: Fix a wrongly positioned unbreakable space defer/whichtochoose: Remove an unnecessary space. datastruct: Remove unnecessary space datastruct: Enclose NULL with \co{} datastruct: Put \cref{} content in a single line datastruct: Add missed unbreakable spaces debugging: Use \co{} for rcutorture debugging: Use \qco{} for 'time' output examples debugging: Use \co{} and \qco{} for 'git' and 'Fixes:', respectively debugging: Remove unnecessary space in a sentence debugging: Remove redundant following sections introduction formal/formal: Drop cppmem from 'Special-Purpose State-Space Search' section explanation formal/spinhint: Use \qco{} instead of ``\co{}'' formal/spinhint: Enclose example code snippets with \co{} formal/spinhint: Do not call 2013 paper as recent formal/dyntickrcu: Quote 'trail' file consistently formal/dyntickrcu: Use \qco{} instead of ``\co{}'' formal/ppcmem: Use uppercase 'S' for Spin formal/ppcmem: Use \qco{} instead of ``\co{}'' formal/ppcmem: Add missed non-breakable spaces formal/ppcmem: Enclose example code snippets with \co{} formal/ppcmem: s/powerpc/PowerPC/ on sentences formal/ppcmem: Fix label name for Fail1: together/refcnt: Use \tco{} for code quoting together/seqlock: Use term 'sequence lock' consistently together/refcnt: Use \qco{} for code quoting Zhouyi Zhou (1): memorder: Fix a typo in Listing 15.25's caption CodeSamples/Makefile | 3 + CodeSamples/SMPdesign/maze/reduce.bash | 16 +- CodeSamples/api-pthreads/QAfter/.gitignore | 1 + CodeSamples/api-pthreads/QAfter/Makefile | 5 +- CodeSamples/api-pthreads/QAfter/timeskew.1.out | 3601 ++++++++++++++++++++ CodeSamples/api-pthreads/QAfter/timeskew.c | 197 ++ CodeSamples/api-pthreads/QAfter/timeskewhist.eps | 3175 +++++++++++++++++ CodeSamples/api-pthreads/QAfter/timeskewhist.sh | 56 + CodeSamples/api-pthreads/QAfter/timeskewsummary.sh | 94 + CodeSamples/count/Makefile | 3 + CodeSamples/count/count_end_rcu.c | 6 +- CodeSamples/count/count_lim.c | 5 +- CodeSamples/count/count_lim_atomic.c | 5 +- CodeSamples/count/count_lim_sig.c | 35 +- CodeSamples/count/count_stat_eventual.c | 9 +- CodeSamples/count/count_tstat.c | 3 +- CodeSamples/datastruct/Issaquah/Makefile | 2 + CodeSamples/datastruct/hash/Makefile | 2 + CodeSamples/defer/Makefile | 2 + CodeSamples/defer/hazptr.h | 2 +- CodeSamples/defer/hazptrtorture.h | 5 +- CodeSamples/defer/rcu_ts.c | 6 + CodeSamples/defer/rcudelay.sh | 2 +- CodeSamples/defer/rcuscale.sh | 18 +- CodeSamples/depends.mk | 2 +- CodeSamples/formal/data/RCU-test-ratio.eps | 3031 ++++++++-------- CodeSamples/formal/data/plot.sh | 8 +- CodeSamples/formal/data/rcu-test.dat | 100 +- CodeSamples/formal/rcutorture.sh | 2 +- CodeSamples/locking/.gitignore | 1 + CodeSamples/locking/Makefile | 5 +- CodeSamples/locking/rec_tree_itr.c | 106 + FAQ-BUILD.txt | 88 +- Makefile | 78 +- SMPdesign/SMPdesign.tex | 41 +- SMPdesign/beyond.tex | 25 +- SMPdesign/criteria.tex | 6 +- SMPdesign/partexercises.tex | 12 +- a2ping-rule.mk | 2 +- ack.tex | 2 +- advsync/advsync.tex | 6 +- advsync/rt.tex | 30 +- appendix/questions/after.tex | 2 +- appendix/questions/ordering.tex | 2 +- appendix/questions/parallelfaster.tex | 2 +- appendix/questions/questions.tex | 4 +- appendix/questions/time.tex | 42 +- appendix/styleguide/styleguide.tex | 2 +- appendix/toyrcu/toyrcu.tex | 4 +- appendix/whymb/whymemorybarriers.tex | 16 +- bib/RCU.bib | 9 + bib/os.bib | 21 + bib/realtime.bib | 60 + bib/refs.bib | 12 + bib/swtools.bib | 22 + cartoons/r-2022-Thermal-throttling.svg | 1181 +++++++ count/count.tex | 80 +- cpu/cpu.tex | 4 +- cpu/hwfreelunch.tex | 2 +- cpu/overheads.tex | 187 +- cpu/overview.tex | 41 +- cpu/swdesign.tex | 4 +- datastruct/datastruct.tex | 125 +- debugging/debugging.tex | 61 +- defer/RCUspacetime.svg | 58 +- defer/defer.tex | 32 +- defer/hazptr.tex | 4 +- defer/linux-RCU.eps | 363 +- defer/rcu.tex | 7 +- defer/rcuapi.tex | 97 +- defer/rcufundamental.tex | 43 +- defer/rcuintro.tex | 32 +- defer/rcurelated.tex | 116 +- defer/rcuusage.tex | 72 +- defer/refcnt.tex | 4 + defer/seqlock.tex | 16 +- defer/updates.tex | 4 +- defer/whichtochoose.tex | 10 +- docker/Dockerfile | 4 +- docker/Dockerfile.bionic | 15 + docker/Dockerfile.fedora | 4 +- easy/easy.tex | 10 +- epstopdf-rule.mk | 2 +- formal/axiomatic.tex | 36 +- formal/dyntickrcu.tex | 14 +- formal/formal.tex | 8 +- formal/ppcmem.tex | 28 +- formal/sat.tex | 2 +- formal/spinhint.tex | 21 +- formal/stateless.tex | 2 +- future/cpu.tex | 2 +- future/formalregress.tex | 2 +- future/fp.tex | 2 +- future/future.tex | 2 +- future/htm.tex | 2 +- future/tm.tex | 2 +- glossary.tex | 11 +- glsdict.tex | 2 + howto/howto.tex | 24 +- intro/intro.tex | 12 +- locking/locking-existence.tex | 10 +- locking/locking.tex | 116 +- memorder/Intel_Core2_arch-simplified.svg | 1579 +++++++++ memorder/Intel_Core2_arch.svg | 1499 ++++++++ memorder/PPCMEM0.png | Bin 0 -> 84732 bytes memorder/PPCMEM1.png | Bin 0 -> 259807 bytes memorder/PPCMEMfinal.png | Bin 0 -> 268195 bytes memorder/locktrans.svg | 783 +++++ memorder/memorder.tex | 947 ++++- memorder/relacqtrans.svg | 667 ++++ owned/owned.tex | 14 +- perfbook-lt.tex | 49 +- qqz.sty | 18 +- summary.tex | 13 +- todo.txt | 47 + together/applyrcu.tex | 18 +- together/count.tex | 2 +- together/hazptr.tex | 2 +- together/refcnt.tex | 10 +- together/seqlock.tex | 4 +- together/together.tex | 2 +- toolsoftrade/toolsoftrade.tex | 194 +- utilities/autodate.sh | 85 +- utilities/checkfcv.pl | 2 +- utilities/cleverefcheck.pl | 2 +- utilities/cleverefcheck.sh | 23 + utilities/divideqqz.pl | 2 +- utilities/extpagegroup.pl | 2 +- utilities/extractqqz.sh | 17 +- utilities/fcvextract.pl | 2 +- utilities/gen_snippet_d.pl | 2 +- utilities/gitextractcontrib.sh | 2 +- utilities/gitlab-ci.yml | 32 + utilities/mpostcheck.sh | 4 +- utilities/parallel-latex-regress.sh | 2 +- utilities/precheck.sh | 92 + utilities/qqzreorder.pl | 2 +- utilities/reorder_ltms.pl | 2 +- utilities/runfirstlatex.sh | 2 +- utilities/runlatex.sh | 2 +- utilities/toarxiv.sh | 3 +- utilities/torelease.sh | 2 +- utilities/verbboxcheck.pl | 2 +- 143 files changed, 17463 insertions(+), 2541 deletions(-) create mode 100644 CodeSamples/api-pthreads/QAfter/timeskew.1.out create mode 100644 CodeSamples/api-pthreads/QAfter/timeskew.c create mode 100644 CodeSamples/api-pthreads/QAfter/timeskewhist.eps create mode 100644 CodeSamples/api-pthreads/QAfter/timeskewhist.sh create mode 100644 CodeSamples/api-pthreads/QAfter/timeskewsummary.sh create mode 100644 CodeSamples/locking/rec_tree_itr.c create mode 100644 cartoons/r-2022-Thermal-throttling.svg create mode 100644 memorder/Intel_Core2_arch-simplified.svg create mode 100644 memorder/Intel_Core2_arch.svg create mode 100644 memorder/PPCMEM0.png create mode 100644 memorder/PPCMEM1.png create mode 100644 memorder/PPCMEMfinal.png create mode 100644 memorder/locktrans.svg create mode 100644 memorder/relacqtrans.svg create mode 100644 utilities/gitlab-ci.yml create mode 100755 utilities/precheck.sh