)]}'
{
  "log": [
    {
      "commit": "5eb99e219a9dd83119a6d159c59544f7c8e3d9b0",
      "tree": "80081e3f39d09661a6afd7792686db2a6e643906",
      "parents": [
        "7d816c3b1fb606ca2dc3bc26b86f7e9a8de57fa1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:21:07 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:21:07 2026 -0700"
      },
      "message": "CodeSamples/defer: Remove obsolete {seq,}perf.sh scripts\n\nIf you want to see it, do a \"git checkout\" of the v2026.06.21a tag.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "7d816c3b1fb606ca2dc3bc26b86f7e9a8de57fa1",
      "tree": "b314230e9a73ac2939ebb55f77185d719ba1f1f6",
      "parents": [
        "d28fca79e970fa3f1eaee19d0b8c4e03ac70bc5f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:18:42 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:18:42 2026 -0700"
      },
      "message": "CodeSamples/defer/data: Clean up old data\n\nIf you want to see it, do a \"git checkout\" of the v2026.06.21a tag.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "d28fca79e970fa3f1eaee19d0b8c4e03ac70bc5f",
      "tree": "0b5cc0548d70b97b31e5bf18f543829ba8862d1a",
      "parents": [
        "97fc70daf85421bcbd9846a324864f801db1743f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:07:02 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 16:07:02 2026 -0700"
      },
      "message": "CodeSamples/defer/rcudelay.sh: Build kernel only once\n\nUse the --build-only argument to kvm.sh and then use kvm-again.sh to\nre-run that same kernel for multiple runs, thus avoiding the overhead\nof repeated builds.  (Yes, the \"make\" facility does reduce the overhead\nof repeated builds, but it cannot eliminate it.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "97fc70daf85421bcbd9846a324864f801db1743f",
      "tree": "9948543cbd69346836fcefef3cc58a9146dc9f45",
      "parents": [
        "9621a051bb13178146d4919f507db7d7953587c9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 12:44:20 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 12:44:20 2026 -0700"
      },
      "message": "CodeSamples/defer/rcudelay.sh: Specify Linux-kernel repo\n\nSpecifying the pathname of the Linux-kernel repo on the command line\nallows the script to use functions.bash to get CPU information.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "9621a051bb13178146d4919f507db7d7953587c9",
      "tree": "80503c50be4e4b688d24d75dcd99be99f366fccf",
      "parents": [
        "6f11f0105323aebe7dd5fe9a5d3ba545cd05a5c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:47:19 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:47:19 2026 -0700"
      },
      "message": "CodeSamples/defer/seqperf.sh: Mark potentially obsolete\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "6f11f0105323aebe7dd5fe9a5d3ba545cd05a5c5",
      "tree": "07ab3fa905c4a03c610a33cbc3e74965ba9261ea",
      "parents": [
        "a4d4fb7dc94b085ad5f2c68a9796acd56120e7cb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:43:46 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:43:46 2026 -0700"
      },
      "message": "CodeSamples/defer/reduce_route.sh: Clarify run instructions\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a4d4fb7dc94b085ad5f2c68a9796acd56120e7cb",
      "tree": "55ba64392adc10365221098f0f848b2db4235a08",
      "parents": [
        "a2ad7fc2b61fd0524716e78702e262c296bb2bfa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:41:56 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:41:56 2026 -0700"
      },
      "message": "CodeSamples/defer/reduce_rcuscale.sh: Clarify run instructions\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a2ad7fc2b61fd0524716e78702e262c296bb2bfa",
      "tree": "86b37bfe4633f1265a793631273a9719cd54b75b",
      "parents": [
        "528a95f99c385520771dae530659f8abbe6cc2c8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:40:14 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Oct 23 11:41:42 2026 -0700"
      },
      "message": "CodeSamples/defer/rcuscale.sh: Automate default CPU selection\n\nAlso give the Linux-kernel repo as an argument instead of running\nin that repo to give access to functions.bash.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "528a95f99c385520771dae530659f8abbe6cc2c8",
      "tree": "d90e98fda0890c74e06a65cd109fa4659b6e9d5d",
      "parents": [
        "ac0655a217b232d8cb4dcc4d49ecfb5cf1b633fa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:55:43 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 14:04:02 2026 -0700"
      },
      "message": "CodeSamples/defer/rcudelay.sh: Update from refperf to refscale\n\nIn a moment of weakness, I agreed to rename the Linux-kernel refperf.c\nfile to refscale.c in directory kernel/rcu.  Account for this weakness\nover here in perfbook.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "ac0655a217b232d8cb4dcc4d49ecfb5cf1b633fa",
      "tree": "972ca332b8003e4305467fc8fdcc8ce5c7303ce1",
      "parents": [
        "ce5d4a91be553d81a83ed6b8514d1bc1ba0d728a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:47:11 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:49:21 2026 -0700"
      },
      "message": "CodeSamples/defer/rcudelay.sh: Automate default CPU selection\n\nBy default, do each power-of-ten number of CPUs that fits into\nthe running system.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "ce5d4a91be553d81a83ed6b8514d1bc1ba0d728a",
      "tree": "1f801f6991cc440c24b69306c52413d9ba9be890",
      "parents": [
        "3106042541f49291485b569e59b78bef6eefffc4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:34:30 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:34:30 2026 -0700"
      },
      "message": "CodeSamples/defer/perf_route.sh: Modernize and CPU-automate\n\nUse bash for-loop ranges and adapt the data collection to the number of\nCPUs actually present.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "3106042541f49291485b569e59b78bef6eefffc4",
      "tree": "7c62f27891716b30830dc288a5375e571586b15f",
      "parents": [
        "c8b52b5cf9dc8e3641c717a87278063e0c4f5a6c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:03:12 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 22 13:03:12 2026 -0700"
      },
      "message": "CodeSamples/defer/perf.sh: Mark potentially obsolete\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "c8b52b5cf9dc8e3641c717a87278063e0c4f5a6c",
      "tree": "98169388047bbf4b55c10dd9bc9ed9c43f44f3f5",
      "parents": [
        "2189e058e2377b148d0b71d6c421853c6343c917"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 16:54:59 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 16:54:59 2026 -0700"
      },
      "message": "defer: Expand on waiting for pre-existing readers\n\nAs in explicitly state that it is not necessary to wait on new readers.\nAlso do a little wordsmithing while in the area.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "2189e058e2377b148d0b71d6c421853c6343c917",
      "tree": "8f0850fb90421c5134b9a6ddd369d6eb7bde32db",
      "parents": [
        "ebbeb9eeac344a47fea25c6acf478a51e0b1fb45"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 10:56:47 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 16:07:22 2026 -0700"
      },
      "message": "CodeSamples/functions.bash: Switch from cpuinfo to lscpu\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "ebbeb9eeac344a47fea25c6acf478a51e0b1fb45",
      "tree": "fc6ff26c404dcf479bbe1790b9a212020a313c36",
      "parents": [
        "7c6151207c2e37f4855ad09bb3a225011c979f3d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 09:15:58 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Oct 21 09:15:58 2026 -0700"
      },
      "message": "CodeSamples/functions.bash: Make power2inc always do last CPU\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "7c6151207c2e37f4855ad09bb3a225011c979f3d",
      "tree": "a125b8223e47af8423e8849b29a731923f8da8b1",
      "parents": [
        "a7c58055ad3f79446788657c63ca81a440bf9f3b"
      ],
      "author": {
        "name": "Kunwu Chan",
        "email": "kunwu.chan@gmail.com",
        "time": "Wed Aug 19 11:24:32 2026 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Oct 01 16:10:50 2026 -0700"
      },
      "message": "datastruct/hash: Simplify hashtorture initial insertion\n\nCommit 1314f0a0 (\"datastruct/hash: Speed up hashtorture initial\ninsertions\") replaced random element placement with a linear scan\nguarded by:\n\n        if (elperupdater / 2 - j \u003c\u003d elperupdater - i || random() % 2)\n\nThe left disjunct is always true along the loop execution.  The loop\nmaintains the invariant i \u003d\u003d j, starting from i \u003d\u003d j \u003d\u003d 0.  The guard\ntherefore reduces to elperupdater / 2 \u003c\u003d elperupdater, and each forced\ninsertion increments both i and j.  Thus random() % 2 is never\nevaluated, and the loop has inserted the first elperupdater / 2\nelements consecutively since 2020.\n\nSimplify both perftest_updater_init() and zoo_updater_init() to plain\nfor loops, drop the unused counter j and random.h include, and update\nthe comment to describe the actual deterministic behavior.\n\nThis does not change the test behavior exercised since 2020.  The\nrandomized initial population was the only stochastic element in this\ninitialization path, while the concurrent update loop is a deterministic\nround-robin over each updater\u0027s elements.  The perfbook description of\nhashtorture (\"RCU-Protected Hash Table Validation\") lists invariant\nverification, concurrent-corruption detection, resize correctness,\nand performance-data collection as the documented coverage; none is\ndescribed as depending on the initial key distribution.\n\nSigned-off-by: Kunwu Chan \u003ckunwu.chan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a7c58055ad3f79446788657c63ca81a440bf9f3b",
      "tree": "36728ad5ed94b32c663f132847153620b6b4bd89",
      "parents": [
        "e441bab8119af5f822345c44194516c73139cabb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Sep 03 19:55:46 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Sep 03 19:55:46 2026 -0700"
      },
      "message": "defer/rcu.tex: Emphasize wait-for-old-readers used in combination\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "e441bab8119af5f822345c44194516c73139cabb",
      "tree": "b9958f3df3cd0d2b9bd644f9b57428642a62dbda",
      "parents": [
        "854fac213d1f9228dd0e552b7359fe9be8ff8025"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 16:46:58 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 16:50:03 2026 -0700"
      },
      "message": "defer/rcuintro.tex: Move core RCU API table to beginning of section\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "854fac213d1f9228dd0e552b7359fe9be8ff8025",
      "tree": "9d77a82a115923d0cf053414fd7b9a39f6b02a98",
      "parents": [
        "0e9d5d5a16acbb942fecf110f81497223b44697e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 16:27:40 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 16:30:47 2026 -0700"
      },
      "message": "defer/rcu.tex: Wordsmith QQ.23 RCU as rwlock replacement\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "0e9d5d5a16acbb942fecf110f81497223b44697e",
      "tree": "e79261eb598cfc11d81f20b87e499ac0933e31c6",
      "parents": [
        "4c2d274854e4ae91ee942b901624e63719d58c2e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 13:13:01 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 13:13:01 2026 -0700"
      },
      "message": "defer/rcuintro.tex: Clarify purpose of call_rcu() in table\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "4c2d274854e4ae91ee942b901624e63719d58c2e",
      "tree": "955189d118f511fa65dbc6726579087d0fd500a1",
      "parents": [
        "72f47cd9a88ed03897102b9e177b157ec32155e3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 10:21:40 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 10:21:40 2026 -0700"
      },
      "message": "defer/rcuintro.tex: Wordsmith insertion/deletion primitives\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "72f47cd9a88ed03897102b9e177b157ec32155e3",
      "tree": "6eacbd0fb3698a1b4c84a8c3686ccd39ccf4eb50",
      "parents": [
        "628d0e71bb55681d3af65afec3ace967355d2275"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 10:20:57 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Sep 02 10:20:57 2026 -0700"
      },
      "message": "defer/rcu.tex: Wordsmith RCU preamble\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "628d0e71bb55681d3af65afec3ace967355d2275",
      "tree": "1b6c6b252af05488b19e714de76ff3a0fa882008",
      "parents": [
        "33cd37a37e169accabc795728125a162093e84c4"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Sun Aug 02 19:34:28 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Aug 02 10:53:24 2026 -0700"
      },
      "message": "toosloftrade: Fix up sentence structure\n\nSigned off by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "33cd37a37e169accabc795728125a162093e84c4",
      "tree": "f2e53cc3ba9fb1731e637ac522334081c3e06217",
      "parents": [
        "6fa444b92d1158310a43074b6d680055e93fbbca"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Sun Aug 02 19:32:46 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Aug 02 10:53:24 2026 -0700"
      },
      "message": "toolsoftrade: Apply scheme of enhanced \\clnref (2nd batch)\n\nFollowing commit e3dcd91d7351 (\"Enhance \\clnref for multi-part listing\nand employ it\"), apply the enhanced scheme in listings converted since.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "6fa444b92d1158310a43074b6d680055e93fbbca",
      "tree": "e8ff07f0a3703d6ac8e1de40ab355ddeac71161f",
      "parents": [
        "4c69e8910b5f646c3fe9846f812b3dee6f37caeb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jul 19 21:30:16 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jul 19 21:30:16 2026 -0700"
      },
      "message": "toolsoftrade: Correct line number: s/5/A5/\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "4c69e8910b5f646c3fe9846f812b3dee6f37caeb",
      "tree": "068ffc6025fdf5711afb941d01d25a65a96e7da4",
      "parents": [
        "0f73486d5f424fe0f18232fdc1bf480b00e25ece"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 18:13:06 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 15:40:20 2026 -0700"
      },
      "message": "datastruct/existence: link the uperf tests against jemalloc, not tcmalloc\n\nThe two *_uperf targets link -ltcmalloc unconditionally.  On a box that does not\nhave gperftools installed, that link fails, and since existence_3hash_uperf is\nthe third of the ten programs in PROGS, make stops there: two of the ten get\nbuilt.  A hardcoded -l on an optional dependency turns one missing package into\na directory that does not build.\n\nThe allocator itself is not optional, and the NOTE above these rules has said so\nsince 2015.  Both tests allocate and free an existence group, along with the keys\nand elements it commits, on every rotation on every updater thread, so glibc\nmalloc\u0027s arena contention limits them well before the technique under test does.\nOn a two-socket 96-core (384-hardware-thread) AMD EPYC 9654, at the default\nparameters, ns/rotation as the median of five two-second runs:\n\n\tupdaters               1      8     32     96    192\n\t3hash, glibc        1804   2541   3822   7504  20019\n\t3hash, jemalloc     1387   2211   2563   3635   5498\n\t                   1.30x  1.15x  1.49x  2.06x  3.64x\n\n\t3skiplist, glibc    3547  13868  28616  39992  68691\n\t3skiplist, jemalloc 3389  13205  27178  35237  52335\n\t                   1.05x  1.05x  1.05x  1.13x  1.31x\n\nSo use pkg-config to find jemalloc and link against it when it is installed, fall\nback to glibc malloc when it is not -- with a note at build time, because the\nnumbers above are what that fallback costs -- and let MALLOC override either\nchoice, including back to tcmalloc for anyone who has it:\n\n\tmake MALLOC\u003d-ltcmalloc\n\tmake MALLOC\u003d\t\t# glibc malloc\n\nThis subsumes the NOTE\u0027s -I/-L/--rpath recipe for a jemalloc installed under a\nhome directory, so the NOTE is rewritten to describe what the rules now do.\n\nLinking jemalloc also defines USE_JEMALLOC, under which both tests set\npercpu_arena:percpu through jemalloc\u0027s application-defined malloc_conf symbol, so\nthat linking is all it takes.  That is the closest analogue of the per-CPU caches\ntcmalloc was providing here, which keeps the default build close to what these\ntests used to measure.  It is not where the speedup comes from, and I would\nrather say so than imply otherwise: the updaters are pinned by run_on(), so\njemalloc\u0027s default thread-bound arenas are already CPU-stable, and percpu_arena\nmeasures as a wash against them across the sweep above (0.98x-1.07x, no trend),\nat identical peak RSS.  It is what one wants if the pinning ever goes away, and\nMALLOC_CONF in the environment still overrides it, so\nMALLOC_CONF\u003dpercpu_arena:disabled measures exactly that.\n\nThe other eight programs in this directory are unchanged.  They are correctness\ntests rather than update-rate benchmarks, and keep the system allocator.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "0f73486d5f424fe0f18232fdc1bf480b00e25ece",
      "tree": "9a6846d2a8f1b20f1340d15a4f37a5447a4d69ca",
      "parents": [
        "43a37b36c27ce74e9e46886f2b3b9afe919b3065"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:45 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "lib/random: catch unseeded and out-of-range Park-Miller state\n\n52fb4630 (\"CodeSamples/lib: Avoid degenerate seeds in Park-Miller RNG\") made an\nunseeded thread harmless by defaulting randseed to 1 rather than 0, so that\nmyrandom() could not sit in the absorbing state.  That fixes the pathology, but\nit turns a thread that forgot to seed into a thread that silently draws the\nsame sequence as every other thread that forgot to seed.  That is a quiet\nfailure, and an easy one to introduce: randseed is __thread, so seeding main()\ndoes not seed the workers, and every harness that spawns threads has to\nremember to seed each one.\n\nIt is also a failure with teeth.  Earlier in this series, seeding\nexistence_3skiplist_uperf\u0027s updaters is worth 1.24x at 8 updaters and 1.42x at\n32, because correlated tower heights make the updaters reach into the upper\nskiplist levels in lockstep and contend there together.  The benchmark gives no\nhint that anything is wrong.  It just runs slower.\n\nSo make the failure loud instead.  Return randseed to being zero-initialized,\nand have myrandom() reject any state outside the recurrence\u0027s [1, 2^31 - 2]:\nzero, which is what an unseeded thread has, and which is the absorbing state;\n2^31 - 1, which is a fixed point that returns the same value forever; and\nanything else a stray write might leave behind.  One range check covers them\nall.\n\nThis is why the preceding patches seed the threads in\nexistence_3skiplist_uperf, skiplisttorture, routetorture, singleton and\nlogtorture: with this patch, an unseeded draw aborts, so every thread that\ndraws must seed first.  I built every program under CodeSamples that uses this\ngenerator and ran each across its modes; with those patches in place, none of\nthe 150 program/mode combinations trips this check.  (logtorture only trips\nunder --stresstest, not --smoketest, which is what makes this class of bug\nworth catching mechanically.)\n\nThe check costs nothing measurable.  Rotations in 1 s in\nexistence_3skiplist_uperf, best of 5, unchecked vs checked: 1454948 vs 1457950\nat 8 updaters, 2656892 vs 2683963 at 32.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "43a37b36c27ce74e9e46886f2b3b9afe919b3065",
      "tree": "403b4def58896e7161ff29cb52f282eb27301fff",
      "parents": [
        "bb6e9d34ef34c3da7e2eb41928b2fc82b6f7e81b"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:44 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/log: seed the RNG per thread in logtorture\n\nSame defect as skiplisttorture: main() calls srandom(time(NULL)), randseed is\n__thread, and the stresstest workers never seed, so stresstest_reader() draws\nits lookup indices from the default sequence -- the same one in every reader.\n\nSeed each thread with setrandom_thread(), offsetting the updaters past the\nreaders as in skiplisttorture.\n\nThis one only shows up under --stresstest; --smoketest never reaches the draw,\nwhich is why it is easy to miss.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "bb6e9d34ef34c3da7e2eb41928b2fc82b6f7e81b",
      "tree": "cedc1a0286ea8094746ebc56ff5c577d29326c78",
      "parents": [
        "b775924981c43ffcf05a72a7caf519d54928f612"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:43 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "defer: seed the RNG in singleton\u0027s updater\n\nsingleton never calls srandom(), so singleton_updater() draws from an unseeded\ngenerator.  There is only the one drawing thread, so nothing here runs in\nlockstep with anything else, but the thread still needs a valid seed -- and the\nlast patch in this series makes an unseeded draw fatal.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "b775924981c43ffcf05a72a7caf519d54928f612",
      "tree": "4d24192f3e3de11a864b0cb3fca75a29e25a2732",
      "parents": [
        "472cd61527ca92dec4c5212c03f669cf862ceb0e"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:42 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "defer: seed the RNG per thread in routetorture\n\nroutetorture never calls srandom() at all, so every thread that draws --\nperftest_reader() picking lookup keys, stresstest_updater() picking IDs to add\nand to delete -- runs from the default seed and draws the same sequence as\nevery other such thread.\n\nSeed each thread with setrandom_thread().  The reader and updater phases each\nnumber their threads from zero and never run together, so myid is unique within\na run.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "472cd61527ca92dec4c5212c03f669cf862ceb0e",
      "tree": "c73f83ac86c12b5df60574433e7ac8fb1b6607f2",
      "parents": [
        "a24f0b72924d38842cd2a410b4fca33816020ae0"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:41 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/skiplist: seed the RNG per thread in skiplisttorture\n\nskiplisttorture\u0027s main() calls srandom(time(NULL)), but randseed is __thread,\nso that seeds only main().  The stresstest workers never seed, so they all\nstart from the same default and draw the identical sequence: every updater\npicks the same elements to pre-populate, requests the same balance levels, and\nbuilds its towers to the same heights, in the same order.  The\nsrandom(time(NULL)) does not even randomize the workers, since the threads that\ndo the drawing never see it.\n\nSeed each thread with setrandom_thread().  Readers and updaters number\nthemselves separately -- both start at zero -- so offset the updaters past the\nreaders to keep every thread\u0027s stream distinct.\n\nThe readers do not draw today.  Seed them anyway, so that \"every thread owns\nits stream\" is a property of the harness rather than a fact about which\nfunctions happen to call random() this year.\n\nThis is the same defect fixed earlier in this series for\nexistence_3skiplist_uperf, and it affects both skiplist and skiplist_glock.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a24f0b72924d38842cd2a410b4fca33816020ae0",
      "tree": "fa5f39c4de802bfb7798e52ca64be4591a1910f0",
      "parents": [
        "5c0c3c537d1a91397854e6e8577a458fd830ee11"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:40 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/existence: add --groupobjs to decouple commit width from nobjects\n\nThis is a benchmarking convenience, not a fix.  Nothing is wrong with the\ncurrent behavior; this only adds a knob.\n\nBoth benchmarks commit an entire rotation as a single existence group, so the\nwidth of the atomic commit is tied to nobjects, which is in turn tied to\n--updatespacing.  There is no way to hold the commit width fixed while varying\nthe number of keys, or vice versa: changing either one changes both.\n\nThat coupling is awkward when comparing the existence technique against\nanother multi-item-update mechanism, since the two engines then differ in the\nnumber of keys moved and in the atomicity width at the same time, and the two\neffects cannot be separated.\n\nAdd --groupobjs N, which chunks a rotation into groups of N objects, each\ncommitted as its own existence group.  N must be a non-negative multiple of 3\nso that every group holds whole three-cycles.  The default of 0 commits the\nwhole rotation as one group, which is exactly the historical behavior, so this\npatch does not change the meaning of any existing command line.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "5c0c3c537d1a91397854e6e8577a458fd830ee11",
      "tree": "61bfce692784cbf4143cb7830851764259f38dc9",
      "parents": [
        "975ad82b9a7e6ee579cb70c1172d30f646581f5c"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:39 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/existence: reject --nreaders instead of hanging\n\nBoth existence_3hash_uperf.c and existence_3skiplist_uperf.c accept a\n--nreaders argument and carry nlookups / nlookupfails in struct perftest_attr,\nbut no reader threads are ever created: perftest() creates nupdaters threads\nand nothing else.  The startup barrier, however, waits for all of them:\n\n\twhile (atomic_read(\u0026nthreads_running) \u003c nreaders + nupdaters)\n\t\tpoll(NULL, 0, 1);\n\nso any --nreaders N with N greater than zero spins there forever.  The option\nis undocumented -- usage() does not list it -- and nlookups / nlookupfails are\nzeroed and then neither incremented nor printed, so the reader support appears\nto be vestigial rather than half-finished.\n\nThe default is 0, so this never bites in normal use; it only bites someone who\ndiscovers the option in the source and tries it, which is how I found it.\n\nMake the option fail fast with a clear message rather than hang.  Deleting the\nscaffolding outright (the nreaders variable, the parse arm, the barrier term,\nand the two unused counters) is the obvious alternative, but that presumes\nreader threads are not wanted later, which is not my call to make.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "975ad82b9a7e6ee579cb70c1172d30f646581f5c",
      "tree": "1c5dca344a35ebc9fbfa1295fe914e6c3d92a064",
      "parents": [
        "59f17d1dbfca869240fd2b105d65afcf3fb1b5e2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:38 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/existence: rotate every resident key, not the first third\n\nThe rotate loops in existence_3skiplist_uperf.c and existence_3hash_uperf.c\nare bounded by nobjects, but every array they index is sized 3 * nobjects:\n\n\tfor (i \u003d 0; i \u003c nobjects; i +\u003d 3) {\n\nnobjects is the per-table object count, nobjects \u003d (updatespacing - 16) / 3,\nand the population loop assigns key i to array element i % 3.  So the arrays\nhold 3 * nobjects keys, and every other site in both files -- the two\ncalloc()s, the population loop, the copy-back in perftest_child() -- is\nbounded by 3 * nobjects.  Only the rotate loop applies the per-table count to\na global index.\n\nA rotation therefore moves 3 * ceil(nobjects / 3) keys instead of\n3 * nobjects.  At the default --updatespacing 32 (nobjects \u003d 5) that is 6 of\nthe 15 keys resident in each updater\u0027s key range.\n\nThe other 9 are not merely skipped, they are dropped.  The copy-back\n\n\tfor (i \u003d 0; i \u003c 3 * nobjects; i++)\n\t\tsei[i] \u003d seo[i];\n\nruns over the full 3 * nobjects, and seo[] is calloc()\u0027d once, so after the\nfirst rotation the entries the rotate loop never wrote are overwritten with\nNULLs.  Nothing dereferences them afterwards -- the rotate loop\u0027s highest\nindex always sits below where the NULLs begin -- so those 9 objects remain in\nthe structure for the rest of the run: populated, traversed by lookups, never\nmoved, never freed.  It is silent and never crashes.\n\nThe loop also overruns its own stated bound: with nobjects \u003d 5 it runs\ni \u003d 0, 3 and touches indices 0 through 5, one past nobjects.  It stays in\nbounds only because the arrays are three times larger than the bound.\n\nAdding\n\n\tfor (i \u003d 0; i \u003c 3 * nobjects; i++)\n\t\tBUG_ON(!sei[i]);\n\nat the top of the rotate function aborts on the second rotation before this\npatch, and is silent after it.\n\nWidening the bound is safe: the three-cycle is well formed for any i that is\na multiple of 3, since indices i, i + 1 and i + 2 live in structures 0, 1 and\n2.  That is the property the stride-3 loop already relies on, and it holds for\nevery such i up to 3 * nobjects.\n\nFound while using these two benchmarks as the reference point for a comparison\nagainst an RCU multi-word-CAS engine.  Normalizing both sides per key moved is\nwhat surfaced it: the existence benchmarks were doing 2.5x less mutation work\nper rotation than the reported key count implied, and were amortizing one\nexistence_group allocation, flip and call_rcu() over 6 key moves rather than\n15.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "59f17d1dbfca869240fd2b105d65afcf3fb1b5e2",
      "tree": "0a05bad91feb5422cffaa207f5848e7d7f440ea7",
      "parents": [
        "191d4100b8687394a1fb2e5d3dee1e4617e9a172"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:37 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "datastruct/existence: seed the RNG per thread in existence_3skiplist_uperf\n\nSince 52fb4630 (\"CodeSamples/lib: Avoid degenerate seeds in Park-Miller RNG\")\nrandseed defaults to 1 rather than 0, so myrandom() is no longer stuck in the\nabsorbing state and random_level() produces a proper geometric distribution.\nThanks for that.\n\nBut randseed is __thread, and existence_3skiplist_uperf never seeds, so every\nupdater starts from the same default and draws exactly the same sequence.\nEvery updater builds its towers to the same heights, in the same order, at the\nsame time.\n\nThis is not a distribution problem: the marginal distribution is geometric for\nany starting offset, as it must be, since all seeds lie on the same Park-Miller\ncycle.  Sampling 200000 draws from the default seed and from two thread seeds\ngives P(level \u003d 0..3) \u003d 0.497 0.252 0.126 0.063 either way, against the\nexpected 0.500 0.250 0.125 0.062.  The problem is that the updaters are\nperfectly correlated with one another.\n\nThat correlation costs real throughput, because tower height decides how far up\nthe skiplist an insertion reaches, and hence which predecessors it locks.  When\nevery updater draws the same height at the same moment, they all reach into the\nupper levels together and contend there in lockstep, instead of spreading that\ncontention out.  Rotations in 1 s, best of 5, on a 2-socket x86 box, this patch\nalone on top of HEAD:\n\n\tupdaters      1        8       32\n\tunseeded    725539  1169565  1924559\n\tseeded      733495  1444955  2739499\n\tspeedup      1.01x    1.24x    1.42x\n\nA single updater is a tie, which is the control: with one thread there is\nnobody to be correlated with, and the seed only picks a different offset into\nthe same cycle.  The gap then widens with the updater count, which is the\nsignature of a cross-thread effect rather than a per-thread one.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "191d4100b8687394a1fb2e5d3dee1e4617e9a172",
      "tree": "08e1acc1d56e62aef87411f47349931b3ab7f0e7",
      "parents": [
        "1a3403da1fc6f4cc0e720ad31d7e4c30e36c96a3"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Tue Jul 14 16:39:36 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jul 14 14:00:44 2026 -0700"
      },
      "message": "lib/random: add setrandom_thread()\n\nrandseed is __thread, so every thread that draws must seed itself: seeding one\nthread does not seed the others.  Several torture harnesses get this wrong, and\nthe patches that follow fix them.  Give them one obvious way to do it, rather\nthan having each open-code the same reasoning.\n\nSeeding needs more care than it looks.  All seeds lie on the same Park-Miller\ncycle, so a seed only chooses a starting offset, and adjacent offsets are not\nas independent as they appear: 16807 * even is even, and callers such as\nrandom_level() in skiplist.h count trailing 1-bits, so seeding thread i with\ni + 1 would hand every even-seeded thread the same parity on its first draw --\ndeterministically, for half the threads.  Scaling the ID by a large odd\nconstant spreads them.\n\nThe seed depends only on the ID, so runs stay reproducible, which is what a\nbenchmark wants.  A caller that prefers variation across runs can still call\nsetrandom() with a seed of its own choosing.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "1a3403da1fc6f4cc0e720ad31d7e4c30e36c96a3",
      "tree": "cb3d93a2175cb1976920b43dc0f9247d93ba55d7",
      "parents": [
        "de2c8340ffe9177a21b8097d3a4773863652531c"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Mon Jul 13 18:57:33 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jul 13 08:37:59 2026 -0700"
      },
      "message": "toolsoftrade: Minor fixes\n\n  - Add \"()\" to function name.\n  - Fill in line counts for potential infinite loop.\n  - Typo (\"as as exemplified ...\" -\u003e \"as is exemplified ...\").\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "de2c8340ffe9177a21b8097d3a4773863652531c",
      "tree": "d2c42294051ea09cf0769d69e3966b1300625e5d",
      "parents": [
        "e3dcd91d735157e3b9db0e88ccb3733c54cf6b00"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Mon Jul 13 18:56:23 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jul 13 08:37:59 2026 -0700"
      },
      "message": "Adjust position of hyperlink targets of line lebels in Verbatim{T|N}\n\nWith hyperref.sty prior to v7.01q (2026-04-24), hyperlink targets\nin VerbatimT go one line below where they are expected to be.\n\nAs a matter of fact, with latest hyperref.sty, hyperlink targets\nin VerbatimN go one line above where they should be.  This is\nbecause VerbatimN env has a mitigation for old hyperref.sty.\nIt does wrong thing with latest hyperref.sty.\n\nFix these minor compatibility issues by making the tweak conditional\nto old hyperref.sty for both VerbatimN and VerbatimT envs.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "e3dcd91d735157e3b9db0e88ccb3733c54cf6b00",
      "tree": "0a6dfb2b30e99262f42cd515b01a169d184f1535",
      "parents": [
        "0a8e9fb0d555123d826ce6fadee83a97d6713136"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Mon Jul 13 18:52:41 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jul 13 08:37:59 2026 -0700"
      },
      "message": "Enhance \\clnref for multi-part listing and employ it\n\nLine counts in multi-part listings are printed in the form of \"A1\"\nand \"B2\".  While \\clnref{} prints \"line 1\" and \"line 2\", rather\nthan \"line A1\" and \"line B2\".\n\nTo make \\clnref{} able to put prefix strings in line counts, define\na macro \"\\lnpref\" and add it in the definition of \"\\lnref{}\".\n\nFor ease of setting \\lnpref in the middle of a paragraph, provide\n\\setlnpref{}, which prevents extra white spaces around it.\n\"\\setlnpref{A}\" inside a \"fcvref\" env will set \"A\" to \\lnpref.\nIt may be used multiple times in a \"fcvref\" env for switching to\nother prefix(es).  It has no effect outside of said \"fcvref\" env.\n\n\\lnpref is not related to \\myfvline of VerbatimT env.\nIn other words, you need to do \\setlnpref{} every time in\nfront of \\clnref{}.\n\nApply the new scheme in multi-part listings added up to commit\n688d07e98e61 (\"toolsoftrade: Wordsmith shenanigans QQ and add\nanother\").\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "0a8e9fb0d555123d826ce6fadee83a97d6713136",
      "tree": "a1a6e7bbc50833f7d422511a9e548f93c5d79ad1",
      "parents": [
        "5fa9e33570b14bc460ae59c3177563478ba93d75"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jul 12 15:12:57 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jul 12 15:12:57 2026 -0700"
      },
      "message": "toolsoftrade: Upgrade store-to-load-transformation example\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "5fa9e33570b14bc460ae59c3177563478ba93d75",
      "tree": "40aa210b6dd313bde852435e521abb8e11ccd4ac",
      "parents": [
        "90dbd43448cabd155df399313811566928ef3e8a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 16:43:24 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 21:00:09 2026 -0700"
      },
      "message": "CodeSamples/lib: Add stupid test to random.c\n\nJust dump 20 samples with specified seed, defaulting to zero.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "90dbd43448cabd155df399313811566928ef3e8a",
      "tree": "9533345e691582dc4eec155cca7fe2d5fee79a3b",
      "parents": [
        "52fb4630c734de344be1cf4c6ce29fc6e6a1ebdc"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Jul 11 10:10:12 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 16:42:23 2026 -0700"
      },
      "message": "CodeSamples/lib: Correct myrandom() output-range comment\n\nThe Park-Miller generator operates in the multiplicative group of\nintegers modulo 2^31 - 1, so myrandom() can produce neither 0 nor\n0x7fffffff: its output is uniform on [1, 2^31 - 2], not on\n[0, 2^31 - 1] as the comment claims.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "52fb4630c734de344be1cf4c6ce29fc6e6a1ebdc",
      "tree": "22870865ab5e3ec4b16a82e0b29a8619ee9b4af4",
      "parents": [
        "5a4543f6f03bee3a55efd68968b1a63bd9e29084"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Jul 11 10:08:51 2026 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 16:42:06 2026 -0700"
      },
      "message": "CodeSamples/lib: Avoid degenerate seeds in Park-Miller RNG\n\nThe Park-Miller recurrence x[n+1] \u003d 16807 * x[n] mod (2^31 - 1) has\nan absorbing state at zero: any state congruent to zero modulo\n2^31 - 1 causes myrandom() to return 0x7fffffff on every subsequent\ncall.  This degenerate state is reachable in two ways:\n\n1. A thread that never calls setrandom() starts from the\n   zero-initialized thread-local randseed.  The torture tests seed\n   only the thread that calls srandom(), so all other threads draw\n   from the constant stream.\n\n2. setrandom() is passed a seed congruent to zero modulo 2^31 - 1\n   (0, 0x7fffffff, or 0xfffffffe).  For example, maze.c passes the\n   user-specified --seed value straight through, so \"--seed 0\"\n   produces a constant \"random\" stream.\n\nFix this by initializing the per-thread randseed to the canonical\nPark-Miller seed of 1, and by reducing setrandom()\u0027s argument\nmodulo 2^31 - 1, mapping a zero result to 1.\n\nVerified against the published Park-Miller check value: starting\nfrom seed 1, the 10,000th draw is 1043618065.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "5a4543f6f03bee3a55efd68968b1a63bd9e29084",
      "tree": "08529b3f5f62a9ee60d48704e19f31fdee32f89b",
      "parents": [
        "7fa508a69ec89353fad112112fb8491217d8f4fd"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 11:30:35 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jul 11 11:30:35 2026 -0700"
      },
      "message": "toolsoftrade: Add QQ on usefulness of barrier()\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "7fa508a69ec89353fad112112fb8491217d8f4fd",
      "tree": "671870e09af17bbe496f311e747f64ed8f27b183",
      "parents": [
        "f6e5f39174cef4fa6af582c361c7fe6b3b81a2e1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 20:24:34 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 20:24:34 2026 -0700"
      },
      "message": "toolsoftrade: Upgrade invented-store example\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "f6e5f39174cef4fa6af582c361c7fe6b3b81a2e1",
      "tree": "bc87b78500381ef5becbe42a74eb74485ed88c0e",
      "parents": [
        "688d07e98e61cf9f9b0a75a57ac36ee208818890"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 17:17:26 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 17:17:26 2026 -0700"
      },
      "message": "toolsoftrade: Upgrade store-fusing and code-reordering examples\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "688d07e98e61cf9f9b0a75a57ac36ee208818890",
      "tree": "a2911a00c9364165e5e041735cf26127592b9680",
      "parents": [
        "9d2f18f8af072e1ee1a8c3c86c6635d031a07e08"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 10:52:09 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 10:52:09 2026 -0700"
      },
      "message": "toolsoftrade: Wordsmith shenanigans QQ and add another\n\n\"Load fusing\" vs. \"Load merging\"\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "9d2f18f8af072e1ee1a8c3c86c6635d031a07e08",
      "tree": "88d953894e68c7da390aa8c1a9e2723ca3fbc6bf",
      "parents": [
        "ab4f4d1f2971f0d5deb3df48b87a700c9bc9371f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 10:51:25 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 10:51:25 2026 -0700"
      },
      "message": "Bibliography update\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "ab4f4d1f2971f0d5deb3df48b87a700c9bc9371f",
      "tree": "2647709c9501fcb180a1512c26285b257823dd24",
      "parents": [
        "a1d3bc7e6f7746cb4a2983f3b66302d3ea163545"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jul 09 21:37:48 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jul 10 07:34:14 2026 -0700"
      },
      "message": "toolsoftrade: Upgrade infinite and finite load-fusing listings\n\nWhile in the area, also improve the lead-in wording of the\n\"Shared-Variable Shenanigans\" section.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a1d3bc7e6f7746cb4a2983f3b66302d3ea163545",
      "tree": "fb3361ebe7f147c19a935471bf87ade23040e034",
      "parents": [
        "bebee9a32027c17c485634e093462d5ef68f32ef"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Sun Jun 28 19:11:46 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jun 28 08:44:34 2026 -0700"
      },
      "message": "toolsoftrade: Fix off-by-one error WRT Listing 4.14\u0027s line count\n\nThere is no such line \"B4\" there.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "bebee9a32027c17c485634e093462d5ef68f32ef",
      "tree": "8a7056323b6c44eb15e7fe1e3d15bd42d2699126",
      "parents": [
        "f7fdd691fd80b87b08719f1faad5059105712f37"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Sun Jun 28 19:10:31 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sun Jun 28 08:44:34 2026 -0700"
      },
      "message": "toolsoftrade: Fix up conventions around VerbatimT\n\nAfter the convention introduced in commit b29ee7777f33 (\"Redefine\nline count format at the beginning of VerbatimT env\"), redefine\n\\myfvline in front of \\begin{VerbatimT}.\n\nThis restores custom form of line counts in Listing 4.14 such\nas \"A1\", \"B2\", \"C3\", etc.\n\nRemove \\fvset{} which is now redundant as well.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "f7fdd691fd80b87b08719f1faad5059105712f37",
      "tree": "791602c6f91555e2f5147b65e08ca95f8dbe0f95",
      "parents": [
        "b29ee7777f331f0f602adf05056e32818dacef76"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Jun 24 15:45:01 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jun 27 10:28:04 2026 -0700"
      },
      "message": "toolsoftrade: Combine Listings 4.14 and 4.15\n\nCombine Listing 4.14 (\"Living Dangerously Early 1990s Style\") and 4.15\n(\"C Compilers Can Invent Loads\"), adding a portion giving the READ_ONCE()\nsolution.  Also reference this combined listing in the \"Load tearing\"\nparagraph.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "b29ee7777f331f0f602adf05056e32818dacef76",
      "tree": "4b6ed0ad2180fbb58ec5c5cf6ff17ee49037df4f",
      "parents": [
        "2436714e3ec8b1813031b08d4ccf9d8acef457ec"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Fri Jun 26 20:41:56 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jun 26 10:35:16 2026 -0700"
      },
      "message": "Redefine line count format at the beginning of VerbatimT env\n\nLine count format in multi-part listings is customized by\nredefining fancyvrb\u0027s \\theFancyVerbLine macro.\n\nHowever, its definition is common to Verbatim and its derivative\nenvs such as VerbatimL, VerbatimN, VerbatimU, etc.\n\nCurrently, to make a definition local to a specific snippet,\nit needs to be enclosed by \"{ ... }\" with its counterpart\nVerbatimT env, which may be error prone.\n\nInstead, add the definition to the VerbatimT env:\n\n  \\AtBeginEnvironment{VerbatimT}{%\n    \\renewcommand{\\theFancyVerbLine}{\\rmfamily\\tiny \\myfvline}}\n\n, where \\myfvline can be defined in front of \\begin{VerbatimT}:\n\n  \\renewcommand{\\myfvline}{A\\arabic{FancyVerbLine}}  % A1, A2, ...\n  \\begin{VerbatimT}\n    ...\n  \\end{VerbatimT}\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "2436714e3ec8b1813031b08d4ccf9d8acef457ec",
      "tree": "722e209f8f79a4fe4a83216cf8592bd1507d931d",
      "parents": [
        "a9d5892eab1e41da0c12b0b093db1ce0fb06f7d3"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Fri Jun 26 20:34:47 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jun 26 10:35:16 2026 -0700"
      },
      "message": "Define macros for multi-part listings in preamble\n\nPaul said he has a plan to add listings similar to Listings 9.13\nand 9.14 [1].\n\nMove local definitions in rcuintro.tex for such multi-part listings\ninto preamble so that they can be used elsewhere.  Note that\n\"VerbatimT\" and \"adjustwidth\" envs have vertical spacing tweaks\napplied.\n\nLink: https://lore.kernel.org/perfbook/abeb5ab5-9c0f-4948-bfcb-392c7b77c6db@paulmck-laptop/ [1]\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "a9d5892eab1e41da0c12b0b093db1ce0fb06f7d3",
      "tree": "4cd2e63cc9a0164aa1f052597de5e444861a5b0d",
      "parents": [
        "0b46edda984457c49e89cb1677c9c47f5872686b"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:31:08 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "Update rcu-test-ratio for Linux v7.1\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "0b46edda984457c49e89cb1677c9c47f5872686b",
      "tree": "563146dc9de4b7a31f591824492d76658800fb95",
      "parents": [
        "6ebd254ea007cb9e4dd113ec93baed5f55acbf60"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:30:08 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "defer/rcufundamental: Fix typo (\"cannot not return\")\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "6ebd254ea007cb9e4dd113ec93baed5f55acbf60",
      "tree": "a63533e1d508044aa7b1d32d98ba2535ed964be8",
      "parents": [
        "2181e06ce68b6342304a300de1a3dae8251ad051"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:28:56 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "defer/rcuintro: More tweaks for Listings 9.13 and 9.14\n\nTo make text parts in those floating listings easier to distinguish\nfrom those of main contents, fine tune their appearance by:\n\n   1) Use \\footnotesize,\n   2) Widen margins, and\n   3) Tweak vertical spaces above/below framed code snippets.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "2181e06ce68b6342304a300de1a3dae8251ad051",
      "tree": "650b1d119b20b77c97e322b0dfb99bed7b7c3c64",
      "parents": [
        "15f6c11f17c0442a23f7c61023051052047b1dd6"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:26:29 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "defer/rcuintro: Tweak Listings 9.13 and 9.14 by employing fancyvrb\n\nFor better consistency in presenting code snippets, employ\nfancyvrb\u0027s Verbatim env.  Automate line counting as well.\n\nWhile here, do \"s/-/--/\" for \"lines~C1-C3\" as well.\n\n(Line number labeling/referencing might be automated in the\nfuture ...)\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "15f6c11f17c0442a23f7c61023051052047b1dd6",
      "tree": "cd501ec91c1174776d522b51dc949174fae16850",
      "parents": [
        "e429569a147ed4e5d360d7eccd3849d578687595"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:22:45 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "Stop loading braket.sty\n\nIt was needed for a section removed back in commit 972946a5298a\n(\"future/QC: Remove quantum-computing section\").  Comment it out.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "e429569a147ed4e5d360d7eccd3849d578687595",
      "tree": "3b6ec86cfba8a2fc930e223d71b991fb01dc24e8",
      "parents": [
        "d7c24ba666e292263b36954f8d07974422f3e034"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Tue Jun 23 19:21:35 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 23 08:14:52 2026 -0700"
      },
      "message": "runlatex.sh: Cope with missing cleveref.sty\n\nSince commit 1bc3abddbf59 (\"Stop using \"cleveref\" with LaTeX2e\n\u003c2024-11-01\u003e and later\"), building perfbook doesn\u0027t need cleveref.\n\nWarning on old cleveref can be skipped now.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "d7c24ba666e292263b36954f8d07974422f3e034",
      "tree": "4ac30a73f6ed1f1a3faf5193b418e73913a1a5c3",
      "parents": [
        "60647818e1cd44707cf1ab4028bdf8dbb3aa5fdb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jun 20 17:35:54 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Sat Jun 20 17:35:54 2026 -0700"
      },
      "message": "defer/updates: Add note that Tiny RCU has super-fast updates\n\nNot that this is particularly useful, but still...\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "60647818e1cd44707cf1ab4028bdf8dbb3aa5fdb",
      "tree": "0142dc4d9ed3e88a7649c59a334ae37af8848f2a",
      "parents": [
        "204351bf7ec22271c2420b6bd1ddd99b392b72d1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 21:10:10 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 21:10:10 2026 -0700"
      },
      "message": "defer/hazptr: Add diagram illustrating hazard pointers\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "204351bf7ec22271c2420b6bd1ddd99b392b72d1",
      "tree": "9dce81664acdb43109a70a99ba0ad35d927fede5",
      "parents": [
        "f7c83bba3ba0c860ef7dc405f47cc495bf68be18"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:52:49 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:52:49 2026 -0700"
      },
      "message": "defer/whichtochoose: RCU/hazptr refinements and combinations\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "f7c83bba3ba0c860ef7dc405f47cc495bf68be18",
      "tree": "25443185e94931de9d7fbe5068898e905863c9cf",
      "parents": [
        "faffac9410691ba0c09ff25d86e812e6434e9566"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:42:42 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:42:42 2026 -0700"
      },
      "message": "defer/hazptr: Add further hazard-pointer standardization\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "faffac9410691ba0c09ff25d86e812e6434e9566",
      "tree": "a9e45f9166f34bae7992a6deb47f2416bbdf917d",
      "parents": [
        "75427df991cc1a26bbcd5d57a3e69144cf91b575"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:37:50 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:37:50 2026 -0700"
      },
      "message": "together/applyrcu: Add \"RCU Conversion Guide\"\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "75427df991cc1a26bbcd5d57a3e69144cf91b575",
      "tree": "1ec038515aa09ee0ffaa3b1bcf10a122e6de994c",
      "parents": [
        "2ef713447ad0ed5c686975103b40f0e761df427f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 19:26:44 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 20:33:48 2026 -0700"
      },
      "message": "together/hazptr: Add \"Hazard-Pointer Conversion Guide\"\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "2ef713447ad0ed5c686975103b40f0e761df427f",
      "tree": "3c5665f44519cb9a644485568ca53806355ec278",
      "parents": [
        "01f4802a946cbe45d73ff948d175d988faea84b7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 18:54:49 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 19:08:15 2026 -0700"
      },
      "message": "defer: Random self-review improvements\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "01f4802a946cbe45d73ff948d175d988faea84b7",
      "tree": "87f2d73190936fb3add7683bbd3bc4711deeb55e",
      "parents": [
        "04729b233edbc679e910fd84a354a4424dc45841"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 17:28:15 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 17:28:15 2026 -0700"
      },
      "message": "together/applyrcu: Add a \"Fresh and Consistent Data\" section\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "04729b233edbc679e910fd84a354a4424dc45841",
      "tree": "82ed2a7600f434fb12fce8c437cc949939d2d24f",
      "parents": [
        "309370220891c8acc5a700d4a6dad9a57b7d1a69"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 14:12:35 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 14:12:35 2026 -0700"
      },
      "message": "CodeSamples/defer: Fix route_cacm_c11.c comment-only \"else\"\n\nIn C, \"else\" clauses must have a statement.  A comment won\u0027t do.\nSo create a do_something_with() function so that -\u003eroute_entry_lock\nis released.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "309370220891c8acc5a700d4a6dad9a57b7d1a69",
      "tree": "a843237e46a0ca88d704b3893f177dadcdef5d8c",
      "parents": [
        "d7921eedef0948cc618a4151845e03db5df7b0ac"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 14:09:42 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 14:09:42 2026 -0700"
      },
      "message": "CodeSamples/defer: Modify route_cacm.c for fresh data\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "d7921eedef0948cc618a4151845e03db5df7b0ac",
      "tree": "e8e3cf76a3c8ade49f2df518d96247d6c513380b",
      "parents": [
        "024b5031cd1ad99f9d21cc10adc6d9666f6c0444",
        "35b2cb996eaa4b92287b3679ecea15f7212b13ae"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 13:37:16 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 13:37:16 2026 -0700"
      },
      "message": "Merge /media/paulmck/365B-2A86/perfbook.2026.06.18-13.36.19.35b2cb996eaa.bundle\n\nPull in some old and (almost) forgotten upstairs work.\n"
    },
    {
      "commit": "35b2cb996eaa4b92287b3679ecea15f7212b13ae",
      "tree": "d311bd412af645b91c54fc84ea6030cb958ef0dd",
      "parents": [
        "713faccf703a91bba15071500c6cac0646eb6d93"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 13:35:19 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 13:35:19 2026 -0700"
      },
      "message": "CodeSamples/defer: Modify route_cacm_c11.c for fresh data\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "024b5031cd1ad99f9d21cc10adc6d9666f6c0444",
      "tree": "c30ef241cfec4dab6fb274449feac2a6a538bcba",
      "parents": [
        "b06f7fda3952d65c5a10bc8ebc9f8e272637f746"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 12:02:17 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 12:02:17 2026 -0700"
      },
      "message": "count: Clarify Section 5.1 laws-of-physics discussion\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "b06f7fda3952d65c5a10bc8ebc9f8e272637f746",
      "tree": "d9c3213c2ee51081ca1d38d99ad7f716ac7d104c",
      "parents": [
        "6489a0c6429a76dee1290b4f16ba95de677ae88f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 12:00:08 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 12:02:04 2026 -0700"
      },
      "message": "cpu/hwfreelunch: Clarify Section 3.3 discussion\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "6489a0c6429a76dee1290b4f16ba95de677ae88f",
      "tree": "acc36f6ee91f63b49abd3bfe26facc577eab848e",
      "parents": [
        "bbe824f9ed6c267e1278c91b6c484d21c5117c8e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 09:33:39 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 18 09:40:36 2026 -0700"
      },
      "message": "defer/rcuintro: Add specific examples to Section 9.5.1.1\n\nThis commit specific code fragments demonstrating the need for the\nrcu_dereference() and rcu_assign_pointer() functions.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "bbe824f9ed6c267e1278c91b6c484d21c5117c8e",
      "tree": "8986e9119845829b10b56f59ada4cfb07dd922ee",
      "parents": [
        "fd38a7596bcb562901f2b74e9001ee726adde666"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Jun 17 16:58:44 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Jun 17 16:58:44 2026 -0700"
      },
      "message": "memorder/memorder: Clarify Section 15.3.7.2 discussion\n\nEmphasize that although smp_mb() is expensive, it is sometimes needed.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "fd38a7596bcb562901f2b74e9001ee726adde666",
      "tree": "f29cb6b23511d91b1271855379d00666d0831716",
      "parents": [
        "5d674b920cb45762169cfa9c7cd9402aa779e9d3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Jun 17 16:09:38 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed Jun 17 16:09:38 2026 -0700"
      },
      "message": "defer/rcufundamental: Clarify Section 9.5.2.2 discussion\n\nGo into more detail, including the role of memory accesses in determining\nordering, in order to provide more clarity to the discussion of waiting\nfor pre-existing RCU readers.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "5d674b920cb45762169cfa9c7cd9402aa779e9d3",
      "tree": "87d6e23b46d9d202460dc8aa41d1d493763ea1ce",
      "parents": [
        "cfdfeac334012fdbcbc0e55506c848314e98f4a3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jun 12 07:43:01 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jun 12 07:43:01 2026 -0700"
      },
      "message": "debugging: Add formal-verification forward reference\n\nWe work hard to make bugs reproduce more quickly, but in some special\ncases, formal verification can find these bugs deterministically.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "cfdfeac334012fdbcbc0e55506c848314e98f4a3",
      "tree": "ac469be97c2b3c94ecb25310081a7dcc03a1ba54",
      "parents": [
        "f126e42560fb70dc2353b4a67650d7840d423122"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue Jun 09 12:44:25 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Fri Jun 12 07:25:08 2026 -0700"
      },
      "message": "locking: Explain why C++ .lock() doesn\u0027t do address order\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "f126e42560fb70dc2353b4a67650d7840d423122",
      "tree": "3d438c8b380743ac3884c6326e36565c614ed574",
      "parents": [
        "1bc3abddbf592e3859c236c771b6dab4ba02a2a7"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:26:28 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "memorder: Fix use of \\cpagerefrange{}{}\n\nIn this case, \\cpageref{label1,,label2,,label3} is the right construct\nto suit the wording of \", respectively\".  The use of \",,\" as separators\nis to prevent range of pages rendered as \"pages M--N\".\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "1bc3abddbf592e3859c236c771b6dab4ba02a2a7",
      "tree": "a61034fa69bba3fba7db23b14b58f527f45f6302",
      "parents": [
        "f044bfd9c47ad877dfa51a2ea5ec300f9d233149"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:24:44 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "Stop using \"cleveref\" with LaTeX2e \u003c2024-11-01\u003e and later\n\nSince LaTeX2e \u003c2024-11-01\u003e release, \"cleveref\" has experienced\nquite a few behavior changes.\n\nIt turns out that it is possible to emulate cleveref\u0027s and its\nderivative commands we have in the preamble by using \"zref-clever\".\n\nQuote from zref-clever\u0027s documentation [1]:\n\n  ... And the package’s name makes it clear that the core of the\n  envisaged feature set is that of cleveref, even though the attempt\n  was less one of replicating functionality per se than that of\n  having it as a successful point of reference, from where we could\n  then try to tap into zref’s potential. Indeed, although there is a\n  significant intersection, the features of zref-clever are neither\n  a superset nor a subset of those of cleveref.\n\nSo, here is my first attempt of the transition.  There can still be\nsome missing pieces, but the resulting cross-refs look mostly the\nsame.\n\nAs there is no use of fixcleveref.ltx any more, remove it.\n\nLinks: https://mirrors.ctan.org/macros/latex/contrib/zref-clever/zref-clever-doc.pdf [1]\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "f044bfd9c47ad877dfa51a2ea5ec300f9d233149",
      "tree": "51acf6f0ea8476d34dd6a80072af79b8f01d31bc",
      "parents": [
        "2903e59282c1d6dcb4a58179d66295cd4d73162e"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:17:58 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "Get rid of \"arydshln\"\n\nLoading both \"arydshln\" and \"tabularx\" has started causing fatal\nerrors since the release of LaTeX2e \u003c2026-06-01\u003e.\n\narydshln wants to modify some of essential commands defined in\ntabular related packages in a dangerous way, which conflicts with\nrecent changes in LaTeX2e and those packages.\n\nAs arydshln hasn\u0027t seen any updates since February 2019, and\nperfbook has *only* one table with dashed rules under datastruct/\n(with a couple of examples in style guide ignored), getting rid\nof arydshln should be the way forward.\n\nWhile at it, remove most of example tables in style guide.\nThey are not relevant anymore as their counterparts in the main\nmatter have had retouches themselves.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "2903e59282c1d6dcb4a58179d66295cd4d73162e",
      "tree": "897723e49b7e1ef1fae98a702ba27a02d18cff0b",
      "parents": [
        "8ba62c5e0d9fe7fa2fcfb985586ef527de43b650"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:15:49 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "precheck-tentative.sh: Allow \"v4.4a\" style revision of lineno.sty\n\nEarly pre-releases of lineno.sty used \"v4.33b\" and v4.4b\", and\nhotfix releases used \"v4.4a\", \"v4.31a\", and so on.\n\nCope with such form of revisions.\n\n\"sort -V\" has no idea of exact ordering of those minor releases,\nbut it should be good enough for testing \"\u003e\u003d v5.7\".\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nFixes: c9ef5ee4f94a (\"precheck-tentative.sh: Detect premature versions of \"lineno\" and \"microtype\"\")\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "8ba62c5e0d9fe7fa2fcfb985586ef527de43b650",
      "tree": "aa22d4767e9026d555def4b5d47a264513a14a5a",
      "parents": [
        "86d59e39ee1e7fd8fe3ad5fa3951a0d1301d2980"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:14:07 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "runlatex.sh: \"iconv -l\" rather than \"iconv --list\"\n\n\"--list\" option may not be recognized by non-GNU \"iconv\".\nUse \"-l\", which should be portable (POSIX).\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nFixes: 6e2558c71bb6 (\"Cope with iconv without ISO~8859-1 support\")\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "86d59e39ee1e7fd8fe3ad5fa3951a0d1301d2980",
      "tree": "523cfd1a2f9889b535389b7fe42621f44d5ac2fd",
      "parents": [
        "15b4ca760b07bac138b9e0f6467e6733ecc656dc"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Thu Jun 04 19:11:15 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu Jun 04 10:25:15 2026 -0700"
      },
      "message": "memorder: Fix typo (\"`\" --\u003e \" \")\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "15b4ca760b07bac138b9e0f6467e6733ecc656dc",
      "tree": "076d5e4bd2ab6a0eaa1b9bc2efd000f46ee89a0d",
      "parents": [
        "e9a73971cc2c826a83391f4f378b15434541043a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jun 01 11:12:54 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jun 01 11:50:57 2026 -0700"
      },
      "message": "memorder: Add an \"SRCU\" section to \"Higher-Level Primitives\"\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "e9a73971cc2c826a83391f4f378b15434541043a",
      "tree": "140d1335606acb827da0cb9b62b123d82a30461d",
      "parents": [
        "8063bf8b802524cd5d4074e56ed3212dddcb142f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu May 28 17:56:50 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Mon Jun 01 11:50:29 2026 -0700"
      },
      "message": "memorder: Add \"Asymmetric Memory Barriers\" section\n\nAnd add it to the \"Higher-Level Primitives\" section.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "8063bf8b802524cd5d4074e56ed3212dddcb142f",
      "tree": "94a85b249b30ad98d5719f3fc73e5e9b5ae4bc8c",
      "parents": [
        "302264fa5220f1aa08017e894d7e67d896b7d38e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 27 16:45:09 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 27 16:45:09 2026 -0700"
      },
      "message": "memorder: Tie memory-barrier pairing to Figure 15.3\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "302264fa5220f1aa08017e894d7e67d896b7d38e",
      "tree": "f8c1e7652f5daf239d271d79d15d7e60201b2d65",
      "parents": [
        "0d0ebe687e11cfd37e3a2ff6e0ca29570c14728a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 27 15:41:50 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 27 15:41:50 2026 -0700"
      },
      "message": "memorder: Fix s/Linux-kernel/Linux kernel/ typo\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "0d0ebe687e11cfd37e3a2ff6e0ca29570c14728a",
      "tree": "94e76de82bbd92ca7e1f7e37c62d969533792d20",
      "parents": [
        "ae053a595c6a043e59465f8e95c2036222a109d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue May 19 18:15:46 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue May 19 18:15:46 2026 -0700"
      },
      "message": "defer/rcuapi.tex: Add \"RCU in Userspace Applications?\"\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "ae053a595c6a043e59465f8e95c2036222a109d8",
      "tree": "be8616040fa5d6ce683f17b37077d9f338e02d10",
      "parents": [
        "713faccf703a91bba15071500c6cac0646eb6d93"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue May 19 17:09:35 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Tue May 19 17:09:35 2026 -0700"
      },
      "message": "Bibliography update\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "713faccf703a91bba15071500c6cac0646eb6d93",
      "tree": "0c2b388d6939f55d00aacee1e678047e2d0d7f72",
      "parents": [
        "82dd3ab1629a9e93ea60eb5623a44705d485d3ce"
      ],
      "author": {
        "name": "Kunwu Chan",
        "email": "kunwu.chan@linux.dev",
        "time": "Thu May 07 17:50:11 2026 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Thu May 07 10:14:38 2026 -0700"
      },
      "message": "precheck-tentative.sh: Make array.sty probing fail-fast and deterministic\n\nOn systems where kpsewhich cannot resolve array.sty, the script fed an\nempty path into the version-parsing pipeline and then compared an empty\narray_req_ver against latex_ver in the non-pdflatex-dev path. The\nresult depended on environment and produced no actionable error.\n\nThis is reproducible by overriding kpsewhich to return nothing for\narray.sty while keeping other lookups intact.\n\nAdd a guard before parsing array.sty, set array_req_ver only when the\nfile exists, fail fast with a clear diagnostic when it does not, and\ncorrect the warning text typo (\"arary.sty\" -\u003e \"array.sty\").\n\nFixes: 4cad3dd1174a (\"precheck-tentative.sh: Fail early with suggestions for Fedora 44\")\n\nSigned-off-by: Kunwu Chan \u003ckunwu.chan@gmail.com\u003e\nAcked-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "82dd3ab1629a9e93ea60eb5623a44705d485d3ce",
      "tree": "5cbc18f298925952587ce08b195f1f8703e9bc35",
      "parents": [
        "c3fa45dc77d6f4b18247ced665f9f85d4559b6c1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 11:38:07 2026 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 11:38:07 2026 -0700"
      },
      "message": "formal/formal.tex: Update for Linux kernel v7.0\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "c3fa45dc77d6f4b18247ced665f9f85d4559b6c1",
      "tree": "a6dce4bf2efd2d16df813a3a1951eb0cdbad2fa2",
      "parents": [
        "90c14a1d4651a3ee65d9a7b782de59c3ced8259c"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:47:08 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:30 2026 -0700"
      },
      "message": "FAQ-BUILD: Add needed packages for Fedora 44\n\nUnder Fedora 44, a couple of essential packages for perfbook are\nmissing after installing distro packages for Fedora listed in #5.\nLooks like there were some changes in dependency of TeX Live\npackages.\n\nMissing packages belong to texlive-collection-fontsrecommended\nand texlive-collection-pstricks.\n\nAdd them in the Fedora list.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "90c14a1d4651a3ee65d9a7b782de59c3ced8259c",
      "tree": "2bb8536f1dee8703a40817973f055d75f46a1047",
      "parents": [
        "4cad3dd1174a2ac44db7a47d3e545c37b183bf66"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:46:11 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:30 2026 -0700"
      },
      "message": "precheck.sh: Add check of missing LaTeX packages for Fedora 44\n\nDue to changes in dependency of Fedora TeX Live packages, existing\nlist of packages in FAQ-BUILD.txt can fail to install some of\nrequired LaTeX packages for perfbook.\n\nAdd checks for their existence in precheck.sh.\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "4cad3dd1174a2ac44db7a47d3e545c37b183bf66",
      "tree": "b46665a1153d5f2ec22afee1e47c99b0ef7e7a02",
      "parents": [
        "861fc518c27b5530cee63a4179ae826f19b42f17"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:45:06 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:30 2026 -0700"
      },
      "message": "precheck-tentative.sh: Fail early with suggestions for Fedora 44\n\nHere is an example of aborting message you will see under Fedora 44 from\nsimple \"make\":\n\n    #### array.sty requires a later release of LaTeX2e.     ####\n    #### arary.sty requires LaTeX2e \u003c2026-06-01\u003e,           ####\n    #### while your LaTeX2e is \u003c2025-11-01\u003e.                ####\n    #### Check your TeX Live installation.  (Known issue under Fedora 44).\n    #### 1st option is to downgrade array.sty to v2.6n.\n    #### 2nd option is to install texlive-latex-base-dev and\n    ####     say \u0027make LATEX\u003dpdflatex-dev\u0027.\n    #### As a last resort, \u0027make WARNEXIT\u003d0\u0027 would ignore such \u0027LaTeX Warning:\u0027\n    ####     messages and complete iteration of latex runs (if you are lucky).\n    make: *** [Makefile:300: perfbook.aux] Error 1\n\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "861fc518c27b5530cee63a4179ae826f19b42f17",
      "tree": "527162428716e4d6a45d06c3da0e606d346dc154",
      "parents": [
        "c9ef5ee4f94ac294d80fc82ff28250b9d5bc4cb9"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:44:06 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:30 2026 -0700"
      },
      "message": "runlatex.sh: Add WARNEXIT variable to make \"LaTeX Warning:\" in .log be ignored\n\nIn testing Fedora 44\u0027s TeX Live packages, a warning in .log files\ncaused build failures with this message:\n\n    LaTeX Warning: You have requested release `2026/06/01\u0027 of LaTeX,\n                   but only release `2025-11-01\u0027 is available.\n\n    Package: array 2026/01/25 v2.7a Tabular extension package (FMi)\n    \\col@sep\u003d\\dimen149\n    ### Incompatible package(s) detected. See perfbook.log for details. ###\n\nThe root cause of this is mismatching LaTeXe2 and array.sty versions\ncontained in Fedora 44\u0027s texlive-base and texlive-tools packages.\n\nThis was reported at Fedora bugzilla [1], without getting much\nattention of its maintainer.\n\nAs a tentative measure, add a fall-through mode in runlatex.sh which\ncan be enabled by saying:\n\n    make WARNEXIT\u003d0\n\nLink: https://bugzilla.redhat.com/show_bug.cgi?id\u003d2447682 [1]\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "c9ef5ee4f94ac294d80fc82ff28250b9d5bc4cb9",
      "tree": "9057650738ec61ee022eeba317b186bb6d767d2b",
      "parents": [
        "6e2558c71bb6579a8c6f131396766ed70fc84e31"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:43:03 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:29 2026 -0700"
      },
      "message": "precheck-tentative.sh: Detect premature versions of \"lineno\" and \"microtype\"\n\nLaTeX2e \"\u003c2025-06-01\u003e Patch Level 1\" and later changed the way\noutput hooks are applied to column/page breaks.\nAs a result, loading pre-v5.7 lineno.sty breaks chapter/section\ntitles printed in the header area of twocolumn builds.\nlineno.sty v5.7 has restored compatibility with recent LaTeX2e\nreleases and v5.9 has fixed its regression of potential infinite\nloop [1].\n\nhyperref.sty has made a change in a way it loses compatibility\nwith microtype.sty \u003cv3.2c [2].\n\nUnfortunately, Ubuntu LTS (26.04) and Fedora 44 were released\nwith such premature versions at their initial releases.\n\nAs a tentative measure, add a script named precheck-tentative.sh,\nwhich detects said premature packages and suggests their upgrades.\n\nLink: https://ctan.org/ctan-ann/id/aa3GMRDWA8OxUAGc@prptp [1]\nLink: https://github.com/schlcht/microtype/issues/64 [2]\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "6e2558c71bb6579a8c6f131396766ed70fc84e31",
      "tree": "c69c274323bd5349828dacd2afd1521c0370c84a",
      "parents": [
        "d6437b9dbcacd5e6a7172c58ebb2ee375061357c"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:41:59 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:29 2026 -0700"
      },
      "message": "Cope with iconv without ISO~8859-1 support\n\nIt turns out that assuming ISO-8859-1 available in \"iconv\" was\nwrong, for example, under openSUSE/leap 15.6.\nFallback to plain \"cat\" in case that is not the case.\n\nFixes: 00361e8bb1e5 (\"Convert *.log files into UTF-8 encoding\")\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    },
    {
      "commit": "d6437b9dbcacd5e6a7172c58ebb2ee375061357c",
      "tree": "7f3a8bc8ee76ba594a9ae3e0ca3903abf71c98d4",
      "parents": [
        "adc94399ae250306d0256ef3b8938fa3094b8039"
      ],
      "author": {
        "name": "Akira Yokosawa",
        "email": "akiyks@gmail.com",
        "time": "Wed May 06 20:40:12 2026 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@kernel.org",
        "time": "Wed May 06 09:50:29 2026 -0700"
      },
      "message": "Apply hotfix for cleveref against recent LaTeX2e\n\nIt turned out that cleveref has been suffering from (yet another)\ncompatibility issue against LaTeX2e since \u003c2024-11-01\u003e release.\n\nAs can be seen in the closing paragraph of Section 1.1 in CI-built\nPDFs at:\n\n     https://gitlab.com/linux-kernel/perfbook/-/artifacts\n\n, chapters in Appendix are printed as \"Section C\" and \"Section E\",\nrather than \"Appendix C\" and \"Appendix E\".\n\nApply a hotfix based on a suggestion from Ulrike Fischer [1].\n\nLink: https://github.com/latex3/latex2e/issues/2049#issuecomment-4302720865 [1]\nSigned-off-by: Akira Yokosawa \u003cakiyks@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@kernel.org\u003e\n"
    }
  ],
  "next": "adc94399ae250306d0256ef3b8938fa3094b8039"
}
