)]}'
{
  "log": [
    {
      "commit": "04e7e951532b390b16feb070be9972b8fad2fc57",
      "tree": "d1d18c2febd422428fad0746afd23c2fd84684d8",
      "parents": [
        "1e1a689f10a27a4fe1ab9b4c6db04fa7232746a5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jul 16 15:06:40 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:02 2012 +0200"
      },
      "message": "rcu: Switch task\u0027s syscall hooks on context switch\n\nClear the syscalls hook of a task when it\u0027s scheduled out so that if\nthe task migrates, it doesn\u0027t run the syscall slow path on a CPU\nthat might not need it.\n\nAlso set the syscalls hook on the next task if needed.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "2b1d5024e17be459aa6385763ca3faa8f01c52d9",
      "tree": "45d1ea5872eea69b7f0443086d98ddbcbc221b94",
      "parents": [
        "9a0c6fef423528ba5b62aa31b29aabf689eb8f70"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:30 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:44:04 2012 +0200"
      },
      "message": "rcu: Settle config for userspace extended quiescent state\n\nCreate a new config option under the RCU menu that put\nCPUs under RCU extended quiescent state (as in dynticks\nidle mode) when they run in userspace. This require\nsome contribution from architectures to hook into kernel\nand userspace boundaries.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "19dd1591fc379f1d89f39cd99cbbe97433baa3c3",
      "tree": "9c298c4c0f38e68f53c2e4a13080fbec1282953f",
      "parents": [
        "adf5091e6ccaa02905e7a28f9ff44f46c7f4c230"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jun 04 16:42:35 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:44:01 2012 +0200"
      },
      "message": "rcu: New rcu_user_enter_after_irq() and rcu_user_exit_after_irq() APIs\n\nIn some cases, it is necessary to enter or exit userspace-RCU-idle mode\nfrom an interrupt handler, for example, if some other CPU sends this\nCPU a resched IPI.  In this case, the current CPU would enter the IPI\nhandler in userspace-RCU-idle mode, but would need to exit the IPI handler\nafter having exited that mode.\n\nTo allow this to work, this commit adds two new APIs to TREE_RCU:\n\n- rcu_user_enter_after_irq(). This must be called from an interrupt between\nrcu_irq_enter() and rcu_irq_exit().  After the irq calls rcu_irq_exit(),\nthe irq handler will return into an RCU extended quiescent state.\nIn theory, this interrupt is never a nested interrupt, but in practice\nit might interrupt softirq, which looks to RCU like a nested interrupt.\n\n- rcu_user_exit_after_irq(). This must be called from a non-nesting\ninterrupt, interrupting an RCU extended quiescent state, also\nbetween rcu_irq_enter() and rcu_irq_exit(). After the irq calls\nrcu_irq_exit(), the irq handler will return in an RCU non-quiescent\nstate.\n\n[ Combined with \"Allow calls to rcu_exit_user_irq from nesting irqs.\" ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "adf5091e6ccaa02905e7a28f9ff44f46c7f4c230",
      "tree": "14a9a14c07870063a2fdfb23fa7b4c54adca4502",
      "parents": [
        "593d1006cdf710ab3469c0c37c184fea0bc3da97"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jun 28 11:20:21 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:43:50 2012 +0200"
      },
      "message": "rcu: New rcu_user_enter() and rcu_user_exit() APIs\n\nRCU currently insists that only idle tasks can enter RCU idle mode, which\nprohibits an adaptive tickless kernel (AKA nohz cpusets), which in turn\nwould mean that usermode execution would always take scheduling-clock\ninterrupts, even when there is only one task runnable on the CPU in\nquestion.\n\nThis commit therefore adds rcu_user_enter() and rcu_user_exit(), which\nallow non-idle tasks to enter RCU idle mode.  These are quite similar\nto rcu_idle_enter() and rcu_idle_exit(), respectively, except that they\nomit the idle-task checks.\n\n[ Updated to use \"user\" flag rather than separate check functions. ]\n\n[ paulmck: Updated to drop exports of new functions based on Josh\u0027s patch\n  getting rid of the need for them. ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@linaro.org\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b4270ee356e5ecef5394ab80c0a0301c1676b7f0",
      "tree": "d600c6dcea20363414220b9b369832af97a8a090",
      "parents": [
        "1e3fd2b38cea41f5386bf23440f2cbdd74cf13d0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jul 31 10:12:48 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:49 2012 -0700"
      },
      "message": "rcu: Permit RCU_NONIDLE() to be used from interrupt context\n\nThere is a need to use RCU from interrupt context, but either before\nrcu_irq_enter() is called or after rcu_irq_exit() is called.  If the\ninterrupt occurs from idle, then lockdep-RCU will complain about such\nuses, as they appear to be illegal uses of RCU from the idle loop.\nIn other environments, RCU_NONIDLE() could be used to properly protect\nthe use of RCU, but RCU_NONIDLE() currently cannot be invoked except\nfrom process context.\n\nThis commit therefore modifies RCU_NONIDLE() to permit its use more\nglobally.\n\nReported-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5cf05ad758c30d17ff23c2be346b5de982bc2121",
      "tree": "884adcc248b81628ffea41916655d41efb934042",
      "parents": [
        "c701d5d9b384ff03ceb232ef21236364d784a411"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 17 15:12:45 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 06:01:49 2012 -0700"
      },
      "message": "rcu: Fix broken strings in RCU\u0027s source code.\n\nAlthough the C language allows you to break strings across lines, doing\nthis makes it hard for people to find the Linux kernel code corresponding\nto a given console message.  This commit therefore fixes broken strings\nthroughout RCU\u0027s source code.\n\nSuggested-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSuggested-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "02a0677b0be545a07ffb15a13419efd7c82881e0",
      "tree": "90a5e0699269465c16cc4e247bc5980d0655c3e6",
      "parents": [
        "ff015030c939f0bec68fa9b8898da3aaa7fe55ea",
        "72472a02a9c4507ef54d03d71bb253c26015f52c",
        "cfca927972e31a5b3da49bf641c525732ff3c357",
        "9d2ad24306f2fafc3612e5a216aab31f9e56e879"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:59:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:59:30 2012 -0700"
      },
      "message": "Merge branches \u0027bigrtm.2012.07.04a\u0027, \u0027doctorture.2012.07.02a\u0027, \u0027fixes.2012.07.06a\u0027 and \u0027fnh.2012.07.02a\u0027 into HEAD\n\nbigrtm: First steps towards getting RCU out of the way of\n\ttens-of-microseconds real-time response on systems compiled\n\twith NR_CPUS\u003d4096.  Also cleanups for and increased concurrency\n\tof rcu_barrier() family of primitives.\ndoctorture: rcutorture and documentation improvements.\nfixes:  Miscellaneous fixes.\nfnh: RCU_FAST_NO_HZ fixes and improvements.\n"
    },
    {
      "commit": "4fa3b6cb1bc8c14b81b4c8ffdfd3f2500a7e9367",
      "tree": "97699d9c5f5330f1fc1c39dda5be49f2d5157525",
      "parents": [
        "e84c48ae3024ac2f14ed1c3671e5ea37c60fb838"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 05 15:53:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:43 2012 -0700"
      },
      "message": "rcu: Fix qlen_lazy breakage\n\nCommit d8169d4c (Make __kfree_rcu() less dependent on compiler choices)\ncreated a macro out of an inline function in order to avoid build\nbreakage for certain combinations of gcc flags.  Unfortunately, it also\nconverted a kfree_call_rcu() to a call_rcu(), which made the rcu_data\nstructure\u0027s -\u003eqlen_lazy field lose counts.  This commit therefore changes\nthe call_rcu() back to kfree_call_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "62fde6edf12b60fddb13a3f0a779c8be0bb7447e",
      "tree": "2fa26e28ce311acb29c60f1595235240be6e7d97",
      "parents": [
        "28f5c693d03530eb15c5354f758b789189b98c37"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 22 22:10:24 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Make __call_rcu() handle invocation from idle\n\nAlthough __call_rcu() is handled correctly when called from a momentary\nnon-idle period, if it is called on a CPU that RCU believes to be idle\non RCU_FAST_NO_HZ kernels, the callback might be indefinitely postponed.\nThis commit therefore ensures that RCU is aware of the new callback and\nhas a chance to force the CPU out of dyntick-idle mode when a new callback\nis posted.\n\nReported-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "28f5c693d03530eb15c5354f758b789189b98c37",
      "tree": "91f226e7afdceb3d62ba51505883dc260619c99e",
      "parents": [
        "2a3fa843b555d202e682bf08c65ee1a4a93c79cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 25 14:25:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Remove function versions of __kfree_rcu and __is_kfree_rcu_offset\n\nCommit d8169d4c (Make __kfree_rcu() less dependent on compiler choices)\nadded cpp macro versions of __kfree_rcu() and __is_kfree_rcu_offset(),\nbut failed to remove the old inline-function versions.  This commit does\nthis cleanup.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "2a3fa843b555d202e682bf08c65ee1a4a93c79cf",
      "tree": "b7db689ab83f041319b80493b12a8f7ecc79ad0f",
      "parents": [
        "e9023c4061054cbf59c5288068118a4d0b152f01"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 21 11:58:36 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Consolidate tree/tiny __rcu_read_{,un}lock() implementations\n\nThe CONFIG_TREE_PREEMPT_RCU and CONFIG_TINY_PREEMPT_RCU versions of\n__rcu_read_lock() and __rcu_read_unlock() are identical, so this commit\nconsolidates them into kernel/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "e9023c4061054cbf59c5288068118a4d0b152f01",
      "tree": "0bd37bdc925686170b4329eca61962f1df4d3687",
      "parents": [
        "e5c1f444d28b1a9eaf9c3927041db0414f684ef4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:51:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Remove return value from rcu_assign_pointer()\n\nThe return value from rcu_assign_pointer() is not used, and using it\nwould be quite ugly, for example:\n\n\tq \u003d rcu_assign_pointer(global_p, p);\n\nTo prevent this sort of ugliness from spreading, this commit wraps\nrcu_assign_pointer() in a do-while loop.\n\nReported-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nReported-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "d1b88eb9e3bccaa43fb5d1bde1cbe210b3434731",
      "tree": "0cb3f4f8b8b9234c306a738d41233db9d8ee709c",
      "parents": [
        "d36cc701b28983ea2c8d80afe68aae5452aea3bf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:42:30 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Remove return value from RCU_INIT_POINTER()\n\nThe return value from RCU_INIT_POINTER() is not used, and using it\nwould be quite ugly, for example:\n\n\tq \u003d RCU_INIT_POINTER(global_p, p);\n\nTo prevent this sort of ugliness from appearing, this commit wraps\nRCU_INIT_POINTER() in a do-while loop.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "172708d002e0a2aca032b04fe6f2b8525c29244a",
      "tree": "5245232b443036a68ffb2cccdadd797678aeb0c7",
      "parents": [
        "1d1fb395f6dbc07b36285bbedcf01a73b57f7cb5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:23:45 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:22 2012 -0700"
      },
      "message": "rcu: Add a gcc-style structure initializer for RCU pointers\n\nRCU_INIT_POINTER() returns a value that is never used, and which should\nbe abolished due to terminal ugliness:\n\n\tq \u003d RCU_INIT_POINTER(global_p, p);\n\nHowever, there are two uses that cannot be handled by a do-while\nformulation because they do gcc-style initialization:\n\n\tRCU_INIT_POINTER(.real_cred, \u0026init_cred),\n\tRCU_INIT_POINTER(.cred, \u0026init_cred),\n\nThis usage is clever, but not necessarily the nicest approach.\nThis commit therefore creates an RCU_POINTER_INITIALIZER() macro that\nis specifically designed for gcc-style initialization.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "cba6d0d64ee53772b285d0c0c288deefbeaf7775",
      "tree": "b2d3de62d15a77d23708c1af6f188c86f0d87fb9",
      "parents": [
        "6887a4131da3adaab011613776d865f4bcfb5678"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 07:08:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 11:39:19 2012 -0700"
      },
      "message": "Revert \"rcu: Move PREEMPT_RCU preemption to switch_to() invocation\"\n\nThis reverts commit 616c310e83b872024271c915c1b9ab505b9efad9.\n(Move PREEMPT_RCU preemption to switch_to() invocation).\nTesting by Sasha Levin \u003clevinsasha928@gmail.com\u003e showed that this\ncan result in deadlock due to invoking the scheduler when one of\nthe runqueue locks is held.  Because this commit was simply a\nperformance optimization, revert it.\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\n"
    },
    {
      "commit": "dc36be4419311fd57becdf54bfeef6bd04a6741d",
      "tree": "179d34f4e56861b66142dd6c39dac1af1e1e10d9",
      "parents": [
        "b1420f1c8bfc30ecf6380a31d0f686884834b599",
        "048a0e8f5e1d94c01a5fc70f5b2f2fd2f4527326",
        "9dd8fb16c36178df2066387d2abd44d8b4dca8c8",
        "9fab97876af844c2abb7c39300bff34025926565"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 11 10:14:09 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 11 10:14:21 2012 -0700"
      },
      "message": "Merge branches \u0027barrier.2012.05.09a\u0027, \u0027fixes.2012.04.26a\u0027, \u0027inline.2012.05.02b\u0027 and \u0027srcu.2012.05.07b\u0027 into HEAD\n\nbarrier:  Reduce the amount of disturbance by rcu_barrier() to the rest of\n    \tthe system.  This branch also includes improvements to\n    \tRCU_FAST_NO_HZ, which are included here due to conflicts.\nfixes:  Miscellaneous fixes.\ninline:  Remaining changes from an abortive attempt to inline\n    \tpreemptible RCU\u0027s __rcu_read_lock().  These are (1) making\n    \texit_rcu() avoid unnecessary work and (2) avoiding having\n    \tpreemptible RCU record a blocked thread when the scheduler\n    \tdeclines to do a context switch.\nsrcu:\tLai Jiangshan\u0027s algorithmic implementation of SRCU, including\n    \tcall_srcu().\n"
    },
    {
      "commit": "9dd8fb16c36178df2066387d2abd44d8b4dca8c8",
      "tree": "330ac5704044c12bcc94ec6bf96dbb27d1057f5d",
      "parents": [
        "616c310e83b872024271c915c1b9ab505b9efad9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Apr 13 12:54:22 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 02 14:48:27 2012 -0700"
      },
      "message": "rcu: Make exit_rcu() more precise and consolidate\n\nWhen running preemptible RCU, if a task exits in an RCU read-side\ncritical section having blocked within that same RCU read-side critical\nsection, the task must be removed from the list of tasks blocking a\ngrace period (perhaps the current grace period, perhaps the next grace\nperiod, depending on timing).  The exit() path invokes exit_rcu() to\ndo this cleanup.\n\nHowever, the current implementation of exit_rcu() needlessly does the\ncleanup even if the task did not block within the current RCU read-side\ncritical section, which wastes time and needlessly increases the size\nof the state space.  Fix this by only doing the cleanup if the current\ntask is actually on the list of tasks blocking some grace period.\n\nWhile we are at it, consolidate the two identical exit_rcu() functions\ninto a single function.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nConflicts:\n\n\tkernel/rcupdate.c\n"
    },
    {
      "commit": "616c310e83b872024271c915c1b9ab505b9efad9",
      "tree": "1339bc7b3bef920b4641a5af2f182e9dfa2a6632",
      "parents": [
        "66f75a5d028beaf67c931435fdc3e7823125730c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Mar 27 16:02:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 02 14:43:23 2012 -0700"
      },
      "message": "rcu: Move PREEMPT_RCU preemption to switch_to() invocation\n\nCurrently, PREEMPT_RCU readers are enqueued upon entry to the scheduler.\nThis is inefficient because enqueuing is required only if there is a\ncontext switch, and entry to the scheduler does not guarantee a context\nswitch.\n\nThe commit therefore moves the enqueuing to immediately precede the\ncall to switch_to() from the scheduler.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d8169d4c369e8aa2fda10df705a4957331b5a4db",
      "tree": "ce8a08d5bd1a58f5e4703f39b2cc2033a8b03994",
      "parents": [
        "c9336643e1440f4dfc89ad4ac6185813619abb8c"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Thu Apr 19 11:44:39 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:51 2012 -0700"
      },
      "message": "rcu: Make __kfree_rcu() less dependent on compiler choices\n\nCurrently, __kfree_rcu() is implemented as an inline function, and\ncontains a BUILD_BUG_ON() that malfunctions if __kfree_rcu() is compiled\nas an out-of-line function.  Unfortunately, there are compiler settings\n(e.g., -O0) that can result in __kfree_rcu() being compiled out of line,\nresulting in annoying build breakage.  This commit therefore converts\nboth __kfree_rcu() and __is_kfree_rcu_offset() from inline functions to\nmacros to prevent such misbehavior on the part of the compiler.\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ed2d265d1266736bd294332d7f649003943ae36e",
      "tree": "860e5b7bb72933e4a9abacdc2f2d75a0e6254e32",
      "parents": [
        "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
        "6c03438edeb5c359af35f060ea016ca65671c269"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "message": "Merge tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/bug.h\u003e cleanup from Paul Gortmaker:\n \"The changes shown here are to unify linux\u0027s BUG support under the one\n  \u003clinux/bug.h\u003e file.  Due to historical reasons, we have some BUG code\n  in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in\n  linux/kernel.h predates the addition of linux/bug.h, but old code in\n  kernel.h wasn\u0027t moved to bug.h at that time.  As a band-aid, kernel.h\n  was including \u003casm/bug.h\u003e to pseudo link them.\n\n  This has caused confusion[1] and general yuck/WTF[2] reactions.  Here\n  is an example that violates the principle of least surprise:\n\n      CC      lib/string.o\n      lib/string.c: In function \u0027strlcat\u0027:\n      lib/string.c:225:2: error: implicit declaration of function \u0027BUILD_BUG_ON\u0027\n      make[2]: *** [lib/string.o] Error 1\n      $\n      $ grep linux/bug.h lib/string.c\n      #include \u003clinux/bug.h\u003e\n      $\n\n  We\u0027ve included \u003clinux/bug.h\u003e for the BUG infrastructure and yet we\n  still get a compile fail! [We\u0027ve not kernel.h for BUILD_BUG_ON.] Ugh -\n  very confusing for someone who is new to kernel development.\n\n  With the above in mind, the goals of this changeset are:\n\n  1) find and fix any include/*.h files that were relying on the\n     implicit presence of BUG code.\n  2) find and fix any C files that were consuming kernel.h and hence\n     relying on implicitly getting some/all BUG code.\n  3) Move the BUG related code living in kernel.h to \u003clinux/bug.h\u003e\n  4) remove the asm/bug.h from kernel.h to finally break the chain.\n\n  During development, the order was more like 3-4, build-test, 1-2.  But\n  to ensure that git history for bisect doesn\u0027t get needless build\n  failures introduced, the commits have been reorderd to fix the problem\n  areas in advance.\n\n\t[1]  https://lkml.org/lkml/2012/1/3/90\n\t[2]  https://lkml.org/lkml/2012/1/17/414\"\n\nFix up conflicts (new radeon file, reiserfs header cleanups) as per Paul\nand linux-next.\n\n* tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  kernel.h: doesn\u0027t explicitly use bug.h, so don\u0027t include it.\n  bug: consolidate BUILD_BUG_ON with other bug code\n  BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n  bug.h: add include of it to various implicit C users\n  lib: fix implicit users of kernel.h for TAINT_WARN\n  spinlock: macroize assert_spin_locked to avoid bug.h dependency\n  x86: relocate get/set debugreg fcns to include/asm/debugreg.\n"
    },
    {
      "commit": "7ccaba5314caf3a2b1052edb3146ccc969b4d466",
      "tree": "b2d2c6a0c188794bf334b163bd89d827c84c1462",
      "parents": [
        "10db4e1e4e9a910a26b94045660e5ba7e7c71419"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@suse.com",
        "time": "Fri Mar 23 15:01:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:31 2012 -0700"
      },
      "message": "consolidate WARN_...ONCE() static variables\n\nDue to the alignment of following variables, these typically consume\nmore than just the single byte that \u0027bool\u0027 requires, and as there are a\nfew hundred instances, the cache pollution (not so much the waste of\nmemory) sums up.  Put these variables into their own section, outside of\nany half way frequently used memory range.\n\nDo the same also to the __warned variable of rcu_lockdep_assert().\n(Don\u0027t, however, include the ones used by printk_once() and alike, as\nthey can potentially be hot.)\n\nSigned-off-by: Jan Beulich \u003cjbeulich@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "8a2ecf474d3ee8dd5d001490349e422cec52f39f",
      "tree": "aa706d632a059dd10d9305cc6abbea5889a839d9",
      "parents": [
        "29e37d814188ac8d60f2120583704d3ef6d634b4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 02 15:42:04 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:13 2012 -0800"
      },
      "message": "rcu: Add RCU_NONIDLE() for idle-loop RCU read-side critical sections\n\nRCU, RCU-bh, and RCU-sched read-side critical sections are forbidden\nin the inner idle loop, that is, between the rcu_idle_enter() and the\nrcu_idle_exit() -- RCU will happily ignore any such read-side critical\nsections.  However, things like powertop need tracepoints in the inner\nidle loop.\n\nThis commit therefore provides an RCU_NONIDLE() macro that can be used to\nwrap code in the idle loop that requires RCU read-side critical sections.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Deepthi Dharwar \u003cdeepthi@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bde23c6892878e48f64de668660778991bc2fb56",
      "tree": "50d3ed77d58acc9098a2030be66728bc8c59f63e",
      "parents": [
        "7129d383d9f46eb8276bee5fb46df63f09a70130"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Feb 01 10:30:46 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:09 2012 -0800"
      },
      "message": "rcu: Convert WARN_ON_ONCE() in rcu_lock_acquire() to lockdep\n\nThe WARN_ON_ONCE() in rcu_lock_acquire() results in infinite recursion\non S390, and also doesn\u0027t print very much information.  Remove this.\n\nUpdated patch to add lockdep-RCU assertions to RCU\u0027s read-side primitives.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c0d6d01bffdce19fa19baad6cb8cc3eed7bfd6f5",
      "tree": "ea4c20ddc87b94d7bef2402fe6dbe3186be263c2",
      "parents": [
        "24cd7fd0eaa0d9f5e197ff77a83b006a86696068"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jan 23 12:41:26 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:03 2012 -0800"
      },
      "message": "rcu: Check for illegal use of RCU from offlined CPUs\n\nAlthough it is legal to use RCU during early boot, it is anything\nbut legal to use RCU at runtime from an offlined CPU.  After all, RCU\nexplicitly ignores offlined CPUs.  This commit therefore adds checks\nfor runtime use of RCU from offlined CPUs.\n\nThese checks are not perfect, in particular, they can be subverted\nthrough use of things like rcu_dereference_raw().  Note that it is not\npossible to put checks in rcu_read_lock() and friends due to the fact\nthat these primitives are used in code that might be used under either\nRCU or lock-based protection, which means that checking rcu_read_lock()\ngets you fat piles of false positives.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5e1ee6e1016763812018bf5c5e966992821dc47e",
      "tree": "f2acb5d76a39da392d1f43e5c78a5ffc1482ef71",
      "parents": [
        "50406b98b6372e7de21d903d2cf3914e9d64e094"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jan 12 17:21:20 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:46 2012 -0800"
      },
      "message": "rcu: Note that rcu_access_pointer() can be used for teardown\n\nThere is no convenient expression for rcu_deference_protected()\nwhen it is used in tearing down multilinked structures following\na grace period.  For example, suppose that an element containing an\nRCU-protected pointer to a second element is removed from an enclosing\nRCU-protected data structure, then the write-side lock is released,\nand finally synchronize_rcu() is invoked to wait for a grace period.\nThen it is necessary to traverse the pointer in order to free up the\nsecond element.  But we are not in an RCU read-side critical section\nand we are holding no locks, so the usual rcu_dereference_check() and\nrcu_dereference_protected() primitives are not appropriate.  Neither\nis rcu_dereference_raw(), as it is intended for use in data structures\nwhere the user defines the locking design (for example, list_head).\n\nSo this responsibility is added to rcu_access_pointer()\u0027s list, and\nthis commit updates rcu_assign_pointer()\u0027s header comment accordingly.\n\nSuggested-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "50406b98b6372e7de21d903d2cf3914e9d64e094",
      "tree": "d53077fbca12714e1af5f9982e08efb923a550c6",
      "parents": [
        "c44e2cddacc2cf299186bad5697d738ea19668b7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 12 13:49:19 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:46 2012 -0800"
      },
      "message": "rcu: Make rcu_sleep_check() also check rcu_lock_map\n\nAlthough it is OK to be preempted in an RCU read-side critical section\nfor TREE_PREEMPT_RCU, it is definitely not OK to be preempted, block,\nor might_sleep() within an RCU read-side critical section for TREE_RCU.\nUnfortunately, rcu_might_sleep() currently only checks for RCU-bh and\nRCU-sched read-side critical sections.  This commit therefore makes\nrcu_might_sleep() check for RCU read-side critical sections, but only\nin TREE_RCU builds.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "486e259340fc4c60474f2c14703e3b3634bb58ca",
      "tree": "70a58702194588fa0773463523f72c682785d040",
      "parents": [
        "0bb7b59d6e2b8440cd7097097dd4bbfc4d76ed07"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jan 06 14:11:30 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:25 2012 -0800"
      },
      "message": "rcu: Avoid waking up CPUs having only kfree_rcu() callbacks\n\nWhen CONFIG_RCU_FAST_NO_HZ is enabled, RCU will allow a given CPU to\nenter dyntick-idle mode even if it still has RCU callbacks queued.\nRCU avoids system hangs in this case by scheduling a timer for several\njiffies in the future.  However, if all of the callbacks on that CPU\nare from kfree_rcu(), there is no reason to wake the CPU up, as it is\nnot a problem to defer freeing of memory.\n\nThis commit therefore tracks the number of callbacks on a given CPU\nthat are from kfree_rcu(), and avoids scheduling the timer if all of\na given CPU\u0027s callbacks are from kfree_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3842a0832a1d6eb0b31421f8810a813135967512",
      "tree": "67aff02fde9c32e647d7b3c4cea948d7867f664d",
      "parents": [
        "f0e7c19db8798b4b991a2c71911e71f5dfdb348f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 28 10:42:42 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:06 2011 -0800"
      },
      "message": "rcu: Document same-context read-side constraints\n\nThe intent is that a given RCU read-side critical section be confined\nto a single context.  For example, it is illegal to invoke rcu_read_lock()\nin an exception handler and then invoke rcu_read_unlock() from the\ncontext of the task that received the exception.\n\nSuggested-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d8ab29f8be918b34a1ccd174569a53f0eb04b0a5",
      "tree": "397799eee7eecc96c98f866db1536a19f863b513",
      "parents": [
        "00f49e5729af602deb559b0cf293a00b625e8636"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Oct 07 18:22:03 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:32 2011 -0800"
      },
      "message": "rcu: Remove one layer of abstraction from PROVE_RCU checking\n\nSimplify things a bit by substituting the definitions of the single-line\nrcu_read_acquire(), rcu_read_release(), rcu_read_acquire_bh(),\nrcu_read_release_bh(), rcu_read_acquire_sched(), and\nrcu_read_release_sched() functions at their call points.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "00f49e5729af602deb559b0cf293a00b625e8636",
      "tree": "3e3d5162d8a62bf6aa91b546f5760512637e6cf6",
      "parents": [
        "0464e937485f15d2add78e3b0f498469f4e6600d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 18:22:02 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:31 2011 -0800"
      },
      "message": "rcu: Warn when rcu_read_lock() is used in extended quiescent state\n\nWe are currently able to detect uses of rcu_dereference_check() inside\nextended quiescent states (such as the RCU-free window in idle).\nBut rcu_read_lock() and friends can be used without rcu_dereference(),\nso that the earlier commit checking for use of rcu_dereference() and\nfriends while in RCU idle mode miss some error conditions.  This commit\ntherefore adds extended quiescent state checking to rcu_read_lock() and\nfriends.\n\nUses of RCU from within RCU-idle mode are totally ignored by\nRCU, hence the importance of these checks.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "e6b80a3b0994ea6c3d876d72464f2debbfcfeb05",
      "tree": "207337c207fecf2e05e52ffb3003831d240529fd",
      "parents": [
        "a0f8eefb127f5be07628954f310a7fc8c82b2fc3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 16:25:18 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:30 2011 -0800"
      },
      "message": "rcu: Detect illegal rcu dereference in extended quiescent state\n\nReport that none of the rcu read lock maps are held while in an RCU\nextended quiescent state (the section between rcu_idle_enter()\nand rcu_idle_exit()). This helps detect any use of rcu_dereference()\nand friends from within the section in idle where RCU is not allowed.\n\nThis way we can guarantee an extended quiescent window where the CPU\ncan be put in dyntick idle mode or can simply aoid to be part of any\nglobal grace period completion while in the idle loop.\n\nUses of RCU from such mode are totally ignored by RCU, hence the\nimportance of these checks.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "91afaf300269aa99a4d646969b3258b74294ac4d",
      "tree": "b4d7dd5f5c9933be7873b206624f7b55eb25d906",
      "parents": [
        "a8eecf2248a45bf69f0625b23c003ad2ccd765ee"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sun Oct 02 07:44:32 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:26 2011 -0800"
      },
      "message": "rcu: Add failure tracing to rcutorture\n\nTrace the rcutorture RCU accesses and dump the trace buffer when the\nfirst failure is detected.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9b2e4f1880b789be1f24f9684f7a54b90310b5c0",
      "tree": "1fa922e0616e298837a7079cb49118188a58186c",
      "parents": [
        "b804cb9e91c6c304959c69d4f9daeef4ffdba71c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Sep 30 12:10:22 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:24 2011 -0800"
      },
      "message": "rcu: Track idleness independent of idle tasks\n\nEarlier versions of RCU used the scheduling-clock tick to detect idleness\nby checking for the idle task, but handled idleness differently for\nCONFIG_NO_HZ\u003dy.  But there are now a number of uses of RCU read-side\ncritical sections in the idle task, for example, for tracing.  A more\nfine-grained detection of idleness is therefore required.\n\nThis commit presses the old dyntick-idle code into full-time service,\nso that rcu_idle_enter(), previously known as rcu_enter_nohz(), is\nalways invoked at the beginning of an idle loop iteration.  Similarly,\nrcu_idle_exit(), previously known as rcu_exit_nohz(), is always invoked\nat the end of an idle-loop iteration.  This allows the idle task to\nuse RCU everywhere except between consecutive rcu_idle_enter() and\nrcu_idle_exit() calls, in turn allowing architecture maintainers to\nspecify exactly where in the idle loop that RCU may be used.\n\nBecause some of the userspace upcall uses can result in what looks\nto RCU like half of an interrupt, it is not possible to expect that\nthe irq_enter() and irq_exit() hooks will give exact counts.  This\npatch therefore expands the -\u003edynticks_nesting counter to 64 bits\nand uses two separate bitfields to count process/idle transitions\nand interrupt entry/exit transitions.  It is presumed that userspace\nupcalls do not happen in the idle loop or from usermode execution\n(though usermode might do a system call that results in an upcall).\nThe counter is hard-reset on each process/idle transition, which\navoids the interrupt entry/exit error from accumulating.  Overflow\nis avoided by the 64-bitness of the -\u003edyntick_nesting counter.\n\nThis commit also adds warnings if a non-idle task asks RCU to enter\nidle state (and these checks will need some adjustment before applying\nFrederic\u0027s OS-jitter patches (http://lkml.org/lkml/2011/10/7/246).\nIn addition, validation of -\u003edynticks and -\u003edynticks_nesting is added.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "6206ab9bab620fc0fbbed30ce20d145b0b3d1840",
      "tree": "b57912ba9fff6f2deba89c0178d3122bbd1fda6e",
      "parents": [
        "6846c0c54074d47927c90eab4a805115e1ae3292"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 01 06:22:11 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:35 2011 -0700"
      },
      "message": "rcu: Move __rcu_read_unlock()\u0027s barrier() within if-statement\n\nWe only need to constrain the compiler if we are actually exiting\nthe top-level RCU read-side critical section.  This commit therefore\nmoves the first barrier() cal in __rcu_read_unlock() to inside the\n\"if\" statement, thus avoiding needless register flushes for inner\nrcu_read_unlock() calls.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6846c0c54074d47927c90eab4a805115e1ae3292",
      "tree": "8f074445ca802a48d976b9a9c8595ac7fe603f22",
      "parents": [
        "d322f45ceed525daa9401154590bbae3222cfefb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jul 31 22:33:02 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:34 2011 -0700"
      },
      "message": "rcu: Improve rcu_assign_pointer() and RCU_INIT_POINTER() documentation\n\nThe differences between rcu_assign_pointer() and RCU_INIT_POINTER() are\nsubtle, and it is easy to use the the cheaper RCU_INIT_POINTER() when\nthe more-expensive rcu_assign_pointer() should have been used instead.\nThe consequences of this mistake are quite severe.\n\nThis commit therefore carefully lays out the situations in which it it\npermissible to use RCU_INIT_POINTER().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d322f45ceed525daa9401154590bbae3222cfefb",
      "tree": "f9c2534f0b10d149af2f899ad200125dc29f631b",
      "parents": [
        "7eb4f4553ceaa6c64da83c8a71d5a991c0188655"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Jul 31 22:09:25 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:33 2011 -0700"
      },
      "message": "rcu: Make rcu_assign_pointer() unconditionally insert a memory barrier\n\nRecent changes to gcc give warning messages on rcu_assign_pointers()\u0027s\nchecks that allow it to determine when it is OK to omit the memory\nbarrier.  Stephen Hemminger tried a number of gcc tricks to silence\nthis warning, but #pragmas and CPP macros do not work together in the\nway that would be required to make this work.\n\nHowever, we now have RCU_INIT_POINTER(), which already omits this\nmemory barrier, and which therefore may be used when assigning NULL to\nan RCU-protected pointer that is accessible to readers.  This commit\ntherefore makes rcu_assign_pointer() unconditionally emit the memory\nbarrier.\n\nReported-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "22507ed9b9d587486fb4681e93a8c58837738a25",
      "tree": "55038e53e869f1753de448df931255449b2385c8",
      "parents": [
        "8cd889cbb6dd13b47c2ea448a22c49c270ab94a2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 18 16:54:51 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:26 2011 -0700"
      },
      "message": "rcu: Remove unused and redundant interfaces\n\nThe rcu_dereference_bh_protected() and rcu_dereference_sched_protected()\nmacros are synonyms for rcu_dereference_protected() and are not used\nanywhere in mainline.  This commit therefore removes them.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "29c00b4a1d9e277786120032aa8364631820d863",
      "tree": "23bf0c8cdb5268ef92ef9ed007639705e922b1b0",
      "parents": [
        "9d68197c05201d8edc70d58bd1d5dad05d8455e8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jun 17 15:53:19 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:12 2011 -0700"
      },
      "message": "rcu: Add event-tracing for RCU callback invocation\n\nThere was recently some controversy about the overhead of invoking RCU\ncallbacks.  Add TRACE_EVENT()s to obtain fine-grained timings for the\nstart and stop of a batch of callbacks and also for each callback invoked.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2c42818e962e2858334bf45bfc56662b3752df34",
      "tree": "192364123c9aeeab282c53168e51eddece9d8be4",
      "parents": [
        "f039d1f1884b2fe9c13d28f59d8330f0b0518fc4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 26 22:14:36 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:42 2011 -0700"
      },
      "message": "rcu: Abstract common code for RCU grace-period-wait primitives\n\nPull the code that waits for an RCU grace period into a single function,\nwhich is then called by synchronize_rcu() and friends in the case of\nTREE_RCU and TREE_PREEMPT_RCU, and from rcu_barrier() and friends in\nthe case of TINY_RCU and TINY_PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "990987511c200877bb20201772d5de46644151f2",
      "tree": "a7f7bf9f2775a575a9a8c80a165706cea2f18afe",
      "parents": [
        "b3fbab0571eb09746cc0283648165ec00efc8eb2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 31 21:03:55 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:38 2011 -0700"
      },
      "message": "rcu: Move rcu_head definition to types.h\n\nTake a first step towards untangling Linux kernel header files by\nplacing the struct rcu_head definition into include/linux/types.h\nand including include/linux/types.h in include/linux/rcupdate.h\nwhere struct rcu_head used to be defined.  The actual inclusion point\nfor include/linux/types.h is with the rest of the #include directives\nrather than at the point where struct rcu_head used to be defined,\nas suggested by Mathieu Desnoyers.\n\nOnce this is in place, then header files that need only rcu_head\ncan include types.h rather than rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\n"
    },
    {
      "commit": "b3fbab0571eb09746cc0283648165ec00efc8eb2",
      "tree": "63bc01cbf03a5df34a96af292a00df4a96dc148a",
      "parents": [
        "d5988af53102f3b73e5e0788be024ccfa51869de"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 24 08:31:09 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:37 2011 -0700"
      },
      "message": "rcu: Restore checks for blocking in RCU read-side critical sections\n\nLong ago, using TREE_RCU with PREEMPT would result in \"scheduling\nwhile atomic\" diagnostics if you blocked in an RCU read-side critical\nsection.  However, PREEMPT now implies TREE_PREEMPT_RCU, which defeats\nthis diagnostic.  This commit therefore adds a replacement diagnostic\nbased on PROVE_RCU.\n\nBecause rcu_lockdep_assert() and lockdep_rcu_dereference() are now being\nused for things that have nothing to do with rcu_dereference(), rename\nlockdep_rcu_dereference() to lockdep_rcu_suspicious() and add a third\nargument that is a string indicating what is suspicious.  This third\nargument is passed in from a new third argument to rcu_lockdep_assert().\nUpdate all calls to rcu_lockdep_assert() to add an informative third\nargument.\n\nAlso, add a pair of rcu_lockdep_assert() calls from within\nrcu_note_context_switch(), one complaining if a context switch occurs\nin an RCU-bh read-side critical section and another complaining if a\ncontext switch occurs in an RCU-sched read-side critical section.\nThese are present only if the PROVE_RCU kernel parameter is enabled.\n\nFinally, fix some checkpatch whitespace complaints in lockdep.c.\n\nAgain, you must enable PROVE_RCU to see these new diagnostics.  But you\nare enabling PROVE_RCU to check out new RCU uses in any case, aren\u0027t you?\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bdd4e85dc36cdbcfc1608a5b2a17c80a9db8986a",
      "tree": "9cee98e78a5aa6a00f3b7ce805b1e39a0137b4a4",
      "parents": [
        "2da8c8bc44b572cbf623629ff736608dc7968436"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jun 08 01:13:27 2011 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Jun 10 15:15:40 2011 +0200"
      },
      "message": "sched: Isolate preempt counting in its own config option\n\nCreate a new CONFIG_PREEMPT_COUNT that handles the inc/dec\nof preempt count offset independently. So that the offset\ncan be updated by preempt_disable() and preempt_enable()\neven without the need for CONFIG_PREEMPT beeing set.\n\nThis prepares to make CONFIG_DEBUG_SPINLOCK_SLEEP working\nwith !CONFIG_PREEMPT where it currently doesn\u0027t detect\ncode that sleeps inside explicit preemption disabled\nsections.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n"
    },
    {
      "commit": "9ab1544eb4196ca8d05c433b2eb56f74496b1ee3",
      "tree": "be3a7897cf52920df4da41ded060e23150bdb849",
      "parents": [
        "6cc68793e380bb51f447d8d02af873b7bc01f222"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 11:15:47 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:59 2011 -0700"
      },
      "message": "rcu: introduce kfree_rcu()\n\nMany rcu callbacks functions just call kfree() on the base structure.\nThese functions are trivial, but their size adds up, and furthermore\nwhen they are used in a kernel module, that module must invoke the\nhigh-latency rcu_barrier() function at module-unload time.\n\nThe kfree_rcu() function introduced by this commit addresses this issue.\nRather than encoding a function address in the embedded rcu_head\nstructure, kfree_rcu() instead encodes the offset of the rcu_head\nstructure within the base structure.  Because the functions are not\nallowed in the low-order 4096 bytes of kernel virtual memory, offsets\nup to 4095 bytes can be accommodated.  If the offset is larger than\n4095 bytes, a compile-time error will be generated in __kfree_rcu().\nIf this error is triggered, you can either fall back to use of call_rcu()\nor rearrange the structure to position the rcu_head structure into the\nfirst 4096 bytes.\n\nNote that the allowable offset might decrease in the future, for example,\nto allow something like kmem_cache_free_rcu().\n\nThe new kfree_rcu() function can replace code as follows:\n\n\tcall_rcu(\u0026p-\u003ercu, simple_kfree_callback);\n\nwhere \"simple_kfree_callback()\" might be defined as follows:\n\n\tvoid simple_kfree_callback(struct rcu_head *p)\n\t{\n\t\tstruct foo *q \u003d container_of(p, struct foo, rcu);\n\n\t\tkfree(q);\n\t}\n\nwith the following:\n\n\tkfree_rcu(\u0026p-\u003ercu, rcu);\n\nNote that the \"rcu\" is the name of a field in the structure being\nfreed.  The reason for using this rather than passing in a pointer\nto the base structure is that the above approach allows better type\nchecking.\n\nThis commit is based on earlier work by Lai Jiangshan and Manfred Spraul:\n\nLai\u0027s V1 patch: http://lkml.org/lkml/2008/9/18/1\nManfred\u0027s patch: http://lkml.org/lkml/2009/1/2/115\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b0c9d7ff2793502650ad987c3f237d5fe5587a1e",
      "tree": "04a19658925baa1eda66bad18d8a2ebd061ddac5",
      "parents": [
        "fc2ecf7ec76c5ee150b83dcefc863fa03fd365fb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 29 12:56:56 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:57 2011 -0700"
      },
      "message": "rcu: add DEBUG_OBJECTS_RCU_HEAD check for alignment\n\nVerify that rcu_head structures are aligned to a four-byte boundary.\nThis check is enabled by CONFIG_DEBUG_OBJECTS_RCU_HEAD.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4a29865689dbb87a02e3b0fff4a4ae5041273173",
      "tree": "72c9f1641a9fb05e3ae4d8cc068f62f9c566bae9",
      "parents": [
        "d71df90eadfc35aa549ff9a850842673febca71f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sun Apr 03 21:33:51 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:56 2011 -0700"
      },
      "message": "rcu: make rcutorture version numbers available through debugfs\n\nIt is not possible to accurately correlate rcutorture output with that\nof debugfs.  This patch therefore adds a debugfs file that prints out\nthe rcutorture version number, permitting easy correlation.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a4dd99250dc49031e6a92a895dbcc230a4832083",
      "tree": "3d0b6f45620f66044400ea14a6af019bf0af67e7",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 01 07:15:14 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 01 07:27:31 2011 -0700"
      },
      "message": "rcu: create new rcu_access_index() and use in mce\n\nThe MCE subsystem needs to sample an RCU-protected index outside of\nany protection for that index.  If this was a pointer, we would use\nrcu_access_pointer(), but there is no corresponding rcu_access_index().\nThis commit therefore creates an rcu_access_index() and applies it\nto MCE.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\n"
    },
    {
      "commit": "e27fc9641e8ddc8146f8e01f06e5eba2469698de",
      "tree": "5cff4c23cb113b901718d9c0f4a6e3081f3173bd",
      "parents": [
        "46fdb0937f26124700fc9fc80da4776330cc00d3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 22 21:36:11 2010 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Dec 17 12:34:08 2010 -0800"
      },
      "message": "rcu: increase synchronize_sched_expedited() batching\n\nThe fix in commit #6a0cc49 requires more than three concurrent instances\nof synchronize_sched_expedited() before batching is possible.  This\npatch uses a ticket-counter-like approach that is also not unrelated to\nLai Jiangshan\u0027s Ring RCU to allow sharing of expedited grace periods even\nwhen there are only two concurrent instances of synchronize_sched_expedited().\n\nThis commit builds on Tejun\u0027s original posting, which may be found at\nhttp://lkml.org/lkml/2010/11/9/204, adding memory barriers, avoiding\noverflow of signed integers (other than via atomic_t), and fixing the\ndetection of batching.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7b27d5475f86186914e54e4a6bb994e9a985337b",
      "tree": "36349c88d75497db89956d6721d82c4f889cbc2b",
      "parents": [
        "deb7a41815a8a32d4f9ea2af7a48ed1175222cec"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Oct 21 11:29:05 2010 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:58 2010 -0800"
      },
      "message": "rcu,cleanup: move synchronize_sched_expedited() out of sched.c\n\nThe first version of synchronize_sched_expedited() used the migration\ncode in the scheduler, and was therefore implemented in kernel/sched.c.\nHowever, the more recent version of this code no longer uses the\nmigration code, so this commit moves it to the main RCU source files.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b2c0710c464ede15e1fc52fb1e7ee9ba54cea186",
      "tree": "7524518fec8a02e53c3fab558b40a5e94f0bb5ec",
      "parents": [
        "8e8be45e8e55daa381028aec339829929ddb53a5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 09 13:40:39 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Nov 17 15:45:09 2010 -0800"
      },
      "message": "rcu: move TINY_RCU from softirq to kthread\n\nIf RCU priority boosting is to be meaningful, callback invocation must\nbe boosted in addition to preempted RCU readers.  Otherwise, in presence\nof CPU real-time threads, the grace period ends, but the callbacks don\u0027t\nget invoked.  If the callbacks don\u0027t get invoked, the associated memory\ndoesn\u0027t get freed, so the system is still subject to OOM.\n\nBut it is not reasonable to priority-boost RCU_SOFTIRQ, so this commit\nmoves the callback invocations to a kthread, which can be boosted easily.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "53ecfba259f54b6967a35d19f4a564e3bc07997f",
      "tree": "eaaeebe2a38abe1a401a0d2d40181abaefa80d48",
      "parents": [
        "829f8ed2c963df7c23d1c644db6c4387eb1601fa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 13 17:24:21 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Sep 23 09:15:01 2010 -0700"
      },
      "message": "rcu: only one evaluation of arg in rcu_dereference_check() unless sparse\n\nThe current version of the __rcu_access_pointer(), __rcu_dereference_check(),\nand __rcu_dereference_protected() macros evaluate their \"p\" argument\nthree times, not counting typeof()s.  This is bad news if that argument\ncontains a side effect.  This commit therefore evaluates this argument\nonly once in normal kernel builds.  However, the straightforward approach\ndefeats sparse\u0027s RCU-pointer checking, so when __CHECKER__ is defined,\nthe additional pair of evaluations of the \"p\" argument are performed in\norder to permit sparse to detect misuse of RCU-protected pointers.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "7b0b759b65247cbc66384a912be9acf8d4800636",
      "tree": "085a18f506193725ab16fa61cae41f93dcc7c3e9",
      "parents": [
        "73d4da4d360136826b36f78f5cf72b29da82c8a6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 17 14:18:46 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:16 2010 -0700"
      },
      "message": "rcu: combine duplicate code, courtesy of CONFIG_PREEMPT_RCU\n\nThe CONFIG_PREEMPT_RCU kernel configuration parameter was recently\nre-introduced, but as an indication of the type of RCU (preemptible\nvs. non-preemptible) instead of as selecting a given implementation.\nThis commit uses CONFIG_PREEMPT_RCU to combine duplicate code\nfrom include/linux/rcutiny.h and include/linux/rcutree.h into\ninclude/linux/rcupdate.h.  This commit also combines a few other pieces\nof duplicate code that have accumulated.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a3dc3fb161f9b4066c0fce22db72638af8baf83b",
      "tree": "e41a30edd7e4965807b199da7637a6d6e44d4ed1",
      "parents": [
        "53d84e004d5e8c018be395c4330dc72fd60bd13e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 13 16:16:25 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:13 2010 -0700"
      },
      "message": "rcu: repair code-duplication FIXMEs\n\nCombine the duplicate definitions of ULONG_CMP_GE(), ULONG_CMP_LT(),\nand rcu_preempt_depth() into include/linux/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9079fd7c2e06a92cf27d05224a1f478581916c5b",
      "tree": "9f093e0efc716c18c3ca66fbd670e3f1099e4fe6",
      "parents": [
        "a57eb940d130477a799dfb24a570ee04979c0f7f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 07 21:59:54 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:10 2010 -0700"
      },
      "message": "rcu: update obsolete rcu_read_lock() comment.\n\nThe comment says that blocking is illegal in rcu_read_lock()-style\nRCU read-side critical sections, which is no longer entirely true\ngiven preemptible RCU.  This commit provides a fix.\n\nSuggested-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a57eb940d130477a799dfb24a570ee04979c0f7f",
      "tree": "5add1c135a302cf1c1a454b0620ed17eb802923b",
      "parents": [
        "4d87ffadbba88105f33271bef5f2c79366c6a4e1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 29 16:49:16 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 08:55:00 2010 -0700"
      },
      "message": "rcu: Add a TINY_PREEMPT_RCU\n\nImplement a small-memory-footprint uniprocessor-only implementation of\npreemptible RCU.  This implementation uses but a single blocked-tasks\nlist rather than the combinatorial number used per leaf rcu_node by\nTREE_PREEMPT_RCU, which reduces memory consumption and greatly simplifies\nprocessing.  This version also takes advantage of uniprocessor execution\nto accelerate grace periods in the case where there are no readers.\n\nThe general design is otherwise broadly similar to that of TREE_PREEMPT_RCU.\n\nThis implementation is a step towards having RCU implementation driven\noff of the SMP and PREEMPT kernel configuration variables, which can\nhappen once this implementation has accumulated sufficient experience.\n\nRemoved ACCESS_ONCE() from __rcu_read_unlock() and added barrier() as\nsuggested by Steve Rostedt in order to avoid the compiler-reordering\nissue noted by Mathieu Desnoyers (http://lkml.org/lkml/2010/8/16/183).\n\nAs can be seen below, CONFIG_TINY_PREEMPT_RCU represents almost 5Kbyte\nsavings compared to CONFIG_TREE_PREEMPT_RCU.  Of course, for non-real-time\nworkloads, CONFIG_TINY_RCU is even better.\n\n\tCONFIG_TREE_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   6170\t    825\t     28\t   7023\t   kernel/rcutree.o\n\t\t\t\t   ----\n\t\t\t\t   7026    Total\n\n\tCONFIG_TINY_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   2081\t     81\t      8\t   2170\t   kernel/rcutiny.o\n\t\t\t\t   ----\n\t\t\t\t   2183    Total\n\n\tCONFIG_TINY_RCU (non-preemptible)\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t    719\t     25\t      0\t    744\t   kernel/rcutiny.o\n\t\t\t\t    ---\n\t\t\t\t    757    Total\n\nRequested-by: Loïc Minier \u003cloic.minier@canonical.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5e8067adfdbaf97039a97540765b1e16eb8d61cc",
      "tree": "3648ffdd0265024baff2a0136d01b02bede19f63",
      "parents": [
        "4d2deb40b20c2608486598364e63e37b09a9ac2f"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:41 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:03 2010 -0700"
      },
      "message": "rcu head remove init\n\nRCU heads really don\u0027t need to be initialized. Their state before call_rcu()\nreally does not matter.\n\nWe need to keep init/destroy_rcu_head_on_stack() though, since we want\ndebugobjects to be able to keep track of these objects.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: tglx@linutronix.de\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "77d8485a8b5416c615b6acd95f01bfcacd7d81ff",
      "tree": "725742c078b9712d875e9c633d249b6da14e5f00",
      "parents": [
        "742734eea0cf5314cde5945963ed964be167bd84"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jul 08 17:38:59 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:02 2010 -0700"
      },
      "message": "rcu: improve kerneldoc for rcu_read_lock(), call_rcu(), and synchronize_rcu()\n\nMake it explicit that new RCU read-side critical sections that start\nafter call_rcu() and synchronize_rcu() start might still be running\nafter the end of the relevant grace period.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4221a9918e38b7494cee341dda7b7b4bb8c04bde",
      "tree": "b79ed7629dd526a9c54dc116b7943cc496b3c19e",
      "parents": [
        "394f99a9007d4274f7076bb8553ab0ff9707688b"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Sat Jun 26 01:08:19 2010 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:02 2010 -0700"
      },
      "message": "Add RCU check for find_task_by_vpid().\n\nfind_task_by_vpid() says \"Must be called under rcu_read_lock().\". But due to\ncommit 3120438 \"rcu: Disable lockdep checking in RCU list-traversal primitives\",\nwe are currently unable to catch \"find_task_by_vpid() with tasklist_lock held\nbut RCU lock not held\" errors due to the RCU-lockdep checks being\nsuppressed in the RCU variants of the struct list_head traversals.\nThis commit therefore places an explicit check for being in an RCU\nread-side critical section in find_task_by_pid_ns().\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: suspicious rcu_dereference_check() usage. ]\n  ---------------------------------------------------\n  kernel/pid.c:386 invoked rcu_dereference_check() without protection!\n\n  other info that might help us debug this:\n\n  rcu_scheduler_active \u003d 1, debug_locks \u003d 1\n  1 lock held by rc.sysinit/1102:\n   #0:  (tasklist_lock){.+.+..}, at: [\u003cc1048340\u003e] sys_setpgid+0x40/0x160\n\n  stack backtrace:\n  Pid: 1102, comm: rc.sysinit Not tainted 2.6.35-rc3-dirty #1\n  Call Trace:\n   [\u003cc105e714\u003e] lockdep_rcu_dereference+0x94/0xb0\n   [\u003cc104b4cd\u003e] find_task_by_pid_ns+0x6d/0x70\n   [\u003cc104b4e8\u003e] find_task_by_vpid+0x18/0x20\n   [\u003cc1048347\u003e] sys_setpgid+0x47/0x160\n   [\u003cc1002b50\u003e] sysenter_do_call+0x12/0x36\n\nCommit updated to use a new rcu_lockdep_assert() exported API rather than\nthe old internal __do_rcu_dereference().\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ca5ecddfa8fcbd948c95530e7e817cee9fb43a3d",
      "tree": "0ad1c320c2e6612a9a230a58d8588850701c048c",
      "parents": [
        "d34a16661ed0fed433c9469d7cfa3ca4d30ca42e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Apr 28 14:39:09 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:17:59 2010 -0700"
      },
      "message": "rcu: define __rcu address space modifier for sparse\n\nThis commit provides definitions for the __rcu annotation defined earlier.\nThis annotation permits sparse to check for correct use of RCU-protected\npointers.  If a pointer that is annotated with __rcu is accessed\ndirectly (as opposed to via rcu_dereference(), rcu_assign_pointer(),\nor one of their variants), sparse can be made to complain.  To enable\nsuch complaints, use the new default-disabled CONFIG_SPARSE_RCU_POINTER\nkernel configuration option.  Please note that these sparse complaints are\nintended to be a debugging aid, -not- a code-style-enforcement mechanism.\n\nThere are special rcu_dereference_protected() and rcu_access_pointer()\naccessors for use when RCU read-side protection is not required, for\nexample, when no other CPU has access to the data structure in question\nor while the current CPU hold the update-side lock.\n\nThis patch also updates a number of docbook comments that were showing\ntheir age.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Christopher Li \u003csparse@chrisli.org\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "f5155b33277c9678041a27869165619bb34f722f",
      "tree": "16cef227f7e05e3b8d97a68d7b7a60e86255cb98",
      "parents": [
        "551d55a944b143ef26fbd482d1c463199d6f65cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 30 06:42:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 14 16:37:26 2010 -0700"
      },
      "message": "rcu: add an rcu_dereference_index_check()\n\nThe sparse RCU-pointer checking relies on type magic that dereferences\nthe pointer in question.  This does not work if the pointer is in fact\nan array index.  This commit therefore supplies a new RCU API that\nomits the sparse checking to continue to support rcu_dereference()\non integers.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "551d55a944b143ef26fbd482d1c463199d6f65cf",
      "tree": "6911d3f8e8719ba5ca43c83acdf87cbc8276d7d1",
      "parents": [
        "875352c94224c88f5aa28cb77206f993bd31b7a2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:42 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 14 16:37:26 2010 -0700"
      },
      "message": "tree/tiny rcu: Add debug RCU head objects\n\nHelps finding racy users of call_rcu(), which results in hangs because list\nentries are overwritten and/or skipped.\n\nChangelog since v4:\n- Bissectability is now OK\n- Now generate a WARN_ON_ONCE() for non-initialized rcu_head passed to\n  call_rcu(). Statically initialized objects are detected with\n  object_is_static().\n- Rename rcu_head_init_on_stack to init_rcu_head_on_stack.\n- Remove init_rcu_head() completely.\n\nChangelog since v3:\n- Include comments from Lai Jiangshan\n\nThis new patch version is based on the debugobjects with the newly introduced\n\"active state\" tracker.\n\nNon-initialized entries are all considered as \"statically initialized\". An\nactivation fixup (triggered by call_rcu()) takes care of performing the debug\nobject initialization without issuing any warning. Since we cannot increase the\nsize of struct rcu_head, I don\u0027t see much room to put an identifier for\nstatically initialized rcu_head structures. So for now, we have to live without\n\"activation without explicit init\" detection. But the main purpose of this debug\noption is to detect double-activations (double call_rcu() use of a rcu_head\nbefore the callback is executed), which is correctly addressed here.\n\nThis also detects potential internal RCU callback corruption, which would cause\nthe callbacks to be executed twice.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: tglx@linutronix.de\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "4376030a54860dedab9d848dfa7cc700a6025c0b",
      "tree": "b9817d81777636eaa882563d35fcd2cd31b7e678",
      "parents": [
        "a5d8e467f83f6672104f276223a88e3b50cbd375"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:39 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 16:53:55 2010 -0700"
      },
      "message": "rcu head introduce rcu head init on stack\n\nPEM:\no     Would it be possible to make this bisectable as follows?\n\n      a.      Insert a new patch after current patch 4/6 that\n              defines destroy_rcu_head_on_stack(),\n              init_rcu_head_on_stack(), and init_rcu_head() with\n              their !CONFIG_DEBUG_OBJECTS_RCU_HEAD definitions.\n\nThis patch performs this transition.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: tglx@linutronix.de\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bbad937983147c017c25406860287cb94da9af7c",
      "tree": "57311598c360b92b189c7ec337146e4bc779c73d",
      "parents": [
        "25502a6c13745f4650cc59322bd198194f55e796"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 02 16:17:17 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:34 2010 -0700"
      },
      "message": "rcu: slim down rcutiny by removing rcu_scheduler_active and friends\n\nTINY_RCU does not need rcu_scheduler_active unless CONFIG_DEBUG_LOCK_ALLOC.\nSo conditionally compile rcu_scheduler_active in order to slim down\nrcutiny a bit more.  Also gets rid of an EXPORT_SYMBOL_GPL, which is\nresponsible for most of the slimming.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "da848c47bc6e873a54a445ea1960423a495b6b32",
      "tree": "4c0eaef1a5990585730f00caca0cfcba21fe9f9f",
      "parents": [
        "32c141a0a1dfa29e0a07d78bec0c0919fc4b9f88"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 15:46:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: shrink rcutiny by making synchronize_rcu_bh() be inline\n\nBecause synchronize_rcu_bh() is identical to synchronize_sched(),\nmake the former a static inline invoking the latter, saving the\noverhead of an EXPORT_SYMBOL_GPL() and the duplicate code.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "32c141a0a1dfa29e0a07d78bec0c0919fc4b9f88",
      "tree": "e85572d2d80f750ca8487e75fd63b9895c5c5db5",
      "parents": [
        "d20200b591f59847ab6a5c23507084a7d29e23c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 10:59:28 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: fix now-bogus rcu_scheduler_active comments.\n\nThe rcu_scheduler_active check has been wrapped into the new\ndebug_lockdep_rcu_enabled() function, so update the comments to\nreflect this new reality.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d20200b591f59847ab6a5c23507084a7d29e23c5",
      "tree": "565d6f26eae873ab7c1b4ee406e5e767dabd24f0",
      "parents": [
        "5db356736acb9ba717df1aa9444e4e44cbb30a71"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 10:52:21 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: Fix bogus CONFIG_PROVE_LOCKING in comments to reflect reality.\n\nIt is CONFIG_DEBUG_LOCK_ALLOC rather than CONFIG_PROVE_LOCKING, so fix it.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2b3fc35f6919344e3cf722dde8308f47235c0b70",
      "tree": "2bc2cfc9c1a032d51a3d99a10e309e100b9eea4a",
      "parents": [
        "b57f95a38233a2e73b679bea4a5453a1cc2a1cc9"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Apr 20 16:23:07 2010 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:31 2010 -0700"
      },
      "message": "rcu: optionally leave lockdep enabled after RCU lockdep splat\n\nThere is no need to disable lockdep after an RCU lockdep splat,\nso remove the debug_lockdeps_off() from lockdep_rcu_dereference().\nTo avoid repeated lockdep splats, use a static variable in the inlined\nrcu_dereference_check() and rcu_dereference_protected() macros so that\na given instance splats only once, but so that multiple instances can\nbe detected per boot.\n\nThis is controlled by a new config variable CONFIG_PROVE_RCU_REPEATEDLY,\nwhich is disabled by default.  This provides the normal lockdep behavior\nby default, but permits people who want to find multiple RCU-lockdep\nsplats per boot to easily do so.\n\nRequested-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nTested-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ee84b8243b07c33a5c8aed42b4b2da60cb16d1d2",
      "tree": "a5b3cad55179fe8340c6422deaf6e11120222ad1",
      "parents": [
        "ad4ba375373937817404fd92239ef4cadbded23b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 06 09:28:41 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 06 09:28:41 2010 -0700"
      },
      "message": "rcu: create rcu_my_thread_group_empty() wrapper\n\nSome RCU-lockdep splat repairs need to know whether they are running\nin a single-threaded process.  Unfortunately, the thread_group_empty()\nprimitive is defined in sched.h, and can induce #include hell.  This\ncommit therefore introduces a rcu_my_thread_group_empty() wrapper that\nis defined in rcupdate.c, thus avoiding the need to include sched.h\neverywhere.\n\nSigned-off-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bc293d62b26ec590afc90a9e0a31c45d355b7bd8",
      "tree": "4b61dee53e849f0ba1d5a7fef58522e224be836e",
      "parents": [
        "50aec0024eccb1d5f540ab64a1958eebcdb9340c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 15 12:50:39 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 19 08:37:19 2010 +0200"
      },
      "message": "rcu: Make RCU lockdep check the lockdep_recursion variable\n\nThe lockdep facility temporarily disables lockdep checking by\nincrementing the current-\u003elockdep_recursion variable.  Such\ndisabling happens in NMIs and in other situations where lockdep\nmight expect to recurse on itself.\n\nThis patch therefore checks current-\u003elockdep_recursion, disabling RCU\nlockdep splats when this variable is non-zero.  In addition, this patch\nremoves the \"likely()\", as suggested by Lai Jiangshan.\n\nReported-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReported-by: David Miller \u003cdavem@davemloft.net\u003e\nTested-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c20100415195039.GA22623@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c08c68dd76bd6b776bc0eb45a5e8f354ed772cdf",
      "tree": "5324c73474b1e73631392de814e8ecebd5956d5b",
      "parents": [
        "b62730baea32f86fe91a7930e4b7ee8d82778b79"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 09 15:39:11 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:20:04 2010 +0200"
      },
      "message": "rcu: Better explain the condition parameter of rcu_dereference_check()\n\nBetter explain the condition parameter of\nrcu_dereference_check() that describes the conditions under\nwhich the dereference is permitted to take place (and\nincorporate Yong Zhang\u0027s suggestion).  This condition is only\nchecked under lockdep proving.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1270852752-25278-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b62730baea32f86fe91a7930e4b7ee8d82778b79",
      "tree": "97910bcb8a0790b10ff687dad901e158a2da63f4",
      "parents": [
        "2ba3abd8186f24c7fb418927025b4e2120e3a362"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 09 15:39:10 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:19:51 2010 +0200"
      },
      "message": "rcu: Add rcu_access_pointer and rcu_dereference_protected\n\nThis patch adds variants of rcu_dereference() that handle\nsituations where the RCU-protected data structure cannot change,\nperhaps due to our holding the update-side lock, or where the\nRCU-protected pointer is only to be fetched, not dereferenced.\nThese are needed due to some performance concerns with using\nrcu_dereference() where it is not required, aside from the need\nfor lockdep/sparse checking.\n\nThe new rcu_access_pointer() primitive is for the case where the\npointer is be fetch and not dereferenced.  This primitive may be\nused without protection, RCU or otherwise, due to the fact that\nit uses ACCESS_ONCE().\n\nThe new rcu_dereference_protected() primitive is for the case\nwhere updates are prevented, for example, due to holding the\nupdate-side lock.  This primitive does neither ACCESS_ONCE() nor\nsmp_read_barrier_depends(), so can only be used when updates are\nsomehow prevented.\n\nSuggested-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1270852752-25278-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0cff810f54b3b52075c27f7a7021d5b195264b6c",
      "tree": "671189b10e1ac4d12a26d9a337a2ca053faed107",
      "parents": [
        "7f5b774275df8c76a959eae7488128b637fcbfc8"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Mar 18 12:25:33 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 18 21:25:32 2010 +0100"
      },
      "message": "rcu: Fix local_irq_disable() CONFIG_PROVE_RCU\u003dy false positives\n\nIt is documented that local_irq_disable() also delimits RCU_SCHED\nread-site critical sections.\n\nSee the document of synchronize_sched() or\nDocumentation/RCU/whatisRCU.txt.\n\nSo we have to test irqs_disabled() in rcu_read_lock_sched_held().\nOtherwise rcu-lockdep brings incorrect complaint.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1268940334-10892-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e3818b8dce2a934cd1521dbc4827e5238d8f45d8",
      "tree": "871d73c67a9bfd84b7ed7c49e9d4027eac7e577f",
      "parents": [
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Mar 15 17:03:43 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 16 09:57:49 2010 +0100"
      },
      "message": "rcu: Make rcu_read_lock_bh_held() allow for disabled BH\n\nDisabling BH can stand in for rcu_read_lock_bh(), and this patch\nupdates rcu_read_lock_bh_held() to allow for this.  In order to\navoid include-file hell, this function is moved out of line to\nkernel/rcupdate.c.\n\nThis fixes a false positive RCU warning.\n\nReported-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c20100316000343.GA25857@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4e3eaddd142e2142c048c5052a0a9d2604fccfc6",
      "tree": "5bc45a286502e54e790c54948f22364c5afd9d89",
      "parents": [
        "8655e7e3ddec60603c4f6c14cdf642e2ba198df8",
        "b97c4bc16734a2e597dac7f91ee9eb78f4aeef9a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  locking: Make sparse work with inline spinlocks and rwlocks\n  x86/mce: Fix RCU lockdep splats\n  rcu: Increase RCU CPU stall timeouts if PROVE_RCU\n  ftrace: Replace read_barrier_depends() with rcu_dereference_raw()\n  rcu: Suppress RCU lockdep warnings during early boot\n  rcu, ftrace: Fix RCU lockdep splat in ftrace_perf_buf_prepare()\n  rcu: Suppress __mpol_dup() false positive from RCU lockdep\n  rcu: Make rcu_read_lock_sched_held() handle !PREEMPT\n  rcu: Add control variables to lockdep_rcu_dereference() diagnostics\n  rcu, cgroup: Relax the check in task_subsys_state() as early boot is now handled by lockdep-RCU\n  rcu: Use wrapper function instead of exporting tasklist_lock\n  sched, rcu: Fix rcu_dereference() for RCU-lockdep\n  rcu: Make task_subsys_state() RCU-lockdep checks handle boot-time use\n  rcu: Fix holdoff for accelerated GPs for last non-dynticked CPU\n  x86/gart: Unexport gart_iommu_aperture\n\nFix trivial conflicts in kernel/trace/ftrace.c\n"
    },
    {
      "commit": "e5ab67726f33b50f40db0ccf271ceb3c658554d5",
      "tree": "b4616f1f7e077f4dd4cc2586f0e8db8acd8a322b",
      "parents": [
        "d33ed52d57e794eba55cea3f5eab3c8f80b6cb5a"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Wed Mar 10 15:24:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:53:08 2010 -0800"
      },
      "message": "sysctl extern cleanup: rcu\n\nExtern declarations in sysctl.c should be moved to their own header file,\nand then include them in relavant .c files.\n\nMove rcutorture_runnable extern declaration to linux/rcupdate.h\n\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nAcked-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nReviewed-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54dbf96c921513bf98484a20ef366d51944a4c4d",
      "tree": "cb88fa12a8ac0e7cc8c6380781c46d1c6149c027",
      "parents": [
        "8d53dd546f36073e0d29b0cfc24c665db301e3e7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 03 07:46:57 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 12:09:19 2010 +0100"
      },
      "message": "rcu: Suppress RCU lockdep warnings during early boot\n\nRCU is used during very early boot, before RCU and lockdep have\nbeen initialized.  So make the underlying primitives\n(rcu_read_lock_held(), rcu_read_lock_bh_held(),\nrcu_read_lock_sched_held(), and rcu_dereference_check()) check\nfor early boot via the rcu_scheduler_active flag.  This will\nsuppress false positives.\n\nAlso introduce a debug_lockdep_rcu_enabled() static inline\nhelper function, which tags the CONTINUE_PROVE_RCU case as\nlikely(), as suggested by Ingo Molnar.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1267631219-8713-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\n[ v2: removed incomplete debug_lockdep_rcu_update() bits ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e6033e3b307fcfae08408e0673266db38392bda4",
      "tree": "fd8d37b2aee0a1a22499297df4b748ace5166df7",
      "parents": [
        "cc5b83a9f884fe8722a275069a5a6fde39988455"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 03 17:50:16 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 12:07:33 2010 +0100"
      },
      "message": "rcu: Make rcu_read_lock_sched_held() handle !PREEMPT\n\nThe rcu_read_lock_sched_held() needs to unconditionally return\nthe value \"1\" in a !PREEMPT kernel, because under !PREEMPT,\n-all- kernel code is implicitly preempt-disabled.  This patch\nmakes this happen.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1267667418-32233-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0b1c87278a8c7e394022ec184a0b44a3886b6fde",
      "tree": "d2dd63579227a4bf038766e7ba34d36242f08c4b",
      "parents": [
        "a47cd880b50e14b0b6f5e9d426ae9a2676c9c474"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Feb 26 16:38:57 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 27 09:53:52 2010 +0100"
      },
      "message": "rcu: Make non-RCU_PROVE_LOCKING rcu_read_lock_sched_held() understand boot\n\nBefore the scheduler starts, all tasks are non-preemptible by\ndefinition. So, during that time, rcu_read_lock_sched_held()\nneeds to always return \"true\".  This patch makes that be so\nfor RCU_PROVE_LOCKING\u003dn.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1267231138-27856-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d9f1bb6ad7fc53c406706f47858dd5ff030b14a3",
      "tree": "4af519d68b396e372e6a5afbb5e968de3bacd123",
      "parents": [
        "056ba4a9bea5f32781a36b797c562fb731e5eaa6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Feb 25 14:06:47 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 26 08:20:46 2010 +0100"
      },
      "message": "rcu: Make rcu_read_lock_sched_held() take boot time into account\n\nBefore the scheduler starts, all tasks are non-preemptible by\ndefinition. So, during that time, rcu_read_lock_sched_held()\nneeds to always return \"true\".  This patch makes that be so.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1267135607-7056-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0632eb3d7563d6a76d49a3860b6352d800c92854",
      "tree": "d998e6d4292a21a91ba1333ffdb1866daf1cfee2",
      "parents": [
        "c26d34a5858f96a564c45048bf5f09319d2abad1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:47 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 09:41:01 2010 +0100"
      },
      "message": "rcu: Integrate rcu_dereference_check() message into lockdep\n\nMake rcu_dereference_check() print the list of held locks in\naddition to the stack dump to ease debugging.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-3-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c26d34a5858f96a564c45048bf5f09319d2abad1",
      "tree": "644941c0005b8ecda4f5af3fd9f9c385f911f146",
      "parents": [
        "632ee200130899252508c478ad0e808222573fbc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:46 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 09:41:00 2010 +0100"
      },
      "message": "rcu: Add lockdep-enabled variants of rcu_dereference()\n\nMake rcu_dereference() check for being in an RCU read-side\ncritical section, and create rcu_dereference_bh(),\nrcu_dereference_sched(), and srcu_dereference() to check for the\nother flavors of RCU.  Also create rcu_dereference_raw() to\navoid checking, and make rcu_dereference_check() use\nrcu_dereference_raw().\n\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "632ee200130899252508c478ad0e808222573fbc",
      "tree": "e3f44ca9daf2a2da2186419f703bc9cec8faa058",
      "parents": [
        "996de8c6fe95c5a9fc524241cc8f142ef0605d3d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:45 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 09:40:59 2010 +0100"
      },
      "message": "rcu: Introduce lockdep-based checking to RCU read-side primitives\n\nInspection is proving insufficient to catch all RCU misuses,\nwhich is understandable given that rcu_dereference() might be\nprotected by any of four different flavors of RCU (RCU, RCU-bh,\nRCU-sched, and SRCU), and might also/instead be protected by any\nof a number of locking primitives. It is therefore time to\nenlist the aid of lockdep.\n\nThis set of patches is inspired by earlier work by Peter\nZijlstra and Thomas Gleixner, and takes the following approach:\n\no\tSet up separate lockdep classes for RCU, RCU-bh, and RCU-sched.\n\no\tSet up separate lockdep classes for each instance of SRCU.\n\no\tCreate primitives that check for being in an RCU read-side\n\tcritical section.  These return exact answers if lockdep is\n\tfully enabled, but if unsure, report being in an RCU read-side\n\tcritical section.  (We want to avoid false positives!)\n\tThe primitives are:\n\n\tFor RCU: rcu_read_lock_held(void)\n\n\tFor RCU-bh: rcu_read_lock_bh_held(void)\n\n\tFor RCU-sched: rcu_read_lock_sched_held(void)\n\n\tFor SRCU: srcu_read_lock_held(struct srcu_struct *sp)\n\no\tAdd rcu_dereference_check(), which takes a second argument\n\tin which one places a boolean expression based on the above\n\tprimitives and/or lockdep_is_held().\n\no\tA new kernel configuration parameter, CONFIG_PROVE_RCU, enables\n\trcu_dereference_check().  This depends on CONFIG_PROVE_LOCKING,\n\tand should be quite helpful during the transition period while\n\tCONFIG_PROVE_RCU-unaware patches are in flight.\n\nThe existing rcu_dereference() primitive does no checking, but\nupcoming patches will change that.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ebb237bece23275d1da149b61a342f0d4d06a08",
      "tree": "5f3d99f6ce2e1e98736e5708eecb5bf217f78fde",
      "parents": [
        "9f680ab41485edfdc96331b70afa7513aa0a7720"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Nov 22 08:53:50 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 22 18:58:16 2009 +0100"
      },
      "message": "rcu: Re-arrange code to reduce #ifdef pain\n\nRemove #ifdefs from kernel/rcupdate.c and\ninclude/linux/rcupdate.h by moving code to\ninclude/linux/rcutiny.h, include/linux/rcutree.h, and\nkernel/rcutree.c.\n\nAlso remove some definitions that are no longer used.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1258908830885-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2c28e2451dba2260e9f88811b29a7787db7e7616",
      "tree": "c0f0cf0665566ebccd013bb37b02dcdaa3e04649",
      "parents": [
        "88b91c7ca49bc8600cf1106eb891d08c1965b9ce"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Oct 26 13:57:44 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 27 14:59:28 2009 +0100"
      },
      "message": "rcu: Fix TINY_RCU #elif condition\n\nSome compilers are happy with \"#elif CONFIG_RCU_TINY\", while\nothers strongly prefer \"#elif defined(CONFIG_RCU_TINY)\".  Change\nto the latter to make more compilers happy.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12565906642768-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9b1d82fa1611706fa7ee1505f290160a18caf95d",
      "tree": "7b2eed068360465d0b028d345eb318b1a8217305",
      "parents": [
        "0edf1a683e499191b27a067956ae9f5fa6e046c6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Oct 25 19:03:50 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 26 09:40:29 2009 +0100"
      },
      "message": "rcu: \"Tiny RCU\", The Bloatwatch Edition\n\nThis patch is a version of RCU designed for !SMP provided for a\nsmall-footprint RCU implementation.  In particular, the\nimplementation of synchronize_rcu() is extremely lightweight and\nhigh performance. It passes rcutorture testing in each of the\nfour relevant configurations (combinations of NO_HZ and PREEMPT)\non x86.  This saves about 1K bytes compared to old Classic RCU\n(which is no longer in mainline), and more than three kilobytes\ncompared to Hierarchical RCU (updated to 2.6.30):\n\n\tCONFIG_TREE_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t    183       4       0     187     kernel/rcupdate.o\n\t   2783     520      36    3339     kernel/rcutree.o\n\t\t\t\t   3526 Total (vs 4565 for v7)\n\n\tCONFIG_TREE_PREEMPT_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t    263       4       0     267     kernel/rcupdate.o\n\t   4594     776      52    5422     kernel/rcutree.o\n\t   \t\t\t   5689 Total (6155 for v7)\n\n\tCONFIG_TINY_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t     96       4       0     100     kernel/rcupdate.o\n\t    734      24       0     758     kernel/rcutiny.o\n\t    \t\t\t    858 Total (vs 848 for v7)\n\nThe above is for x86.  Your mileage may vary on other platforms.\nFurther compression is possible, but is being procrastinated.\n\nChanges from v7 (http://lkml.org/lkml/2009/10/9/388)\n\no\tApply Lai Jiangshan\u0027s review comments (aside from\nmight_sleep() \tin synchronize_sched(), which is covered by SMP builds).\n\no\tFix up expedited primitives.\n\nChanges from v6 (http://lkml.org/lkml/2009/9/23/293).\n\no\tForward ported to put it into the 2.6.33 stream.\n\no\tAdded lockdep support.\n\no\tMake lightweight rcu_barrier.\n\nChanges from v5 (http://lkml.org/lkml/2009/6/23/12).\n\no\tPorted to latest pre-2.6.32 merge window kernel.\n\n\t- Renamed rcu_qsctr_inc() to rcu_sched_qs().\n\t- Renamed rcu_bh_qsctr_inc() to rcu_bh_qs().\n\t- Provided trivial rcu_cpu_notify().\n\t- Provided trivial exit_rcu().\n\t- Provided trivial rcu_needs_cpu().\n\t- Fixed up the rcu_*_enter/exit() functions in linux/hardirq.h.\n\no\tRemoved the dependence on EMBEDDED, with a view to making\n\tTINY_RCU default for !SMP at some time in the future.\n\no\tAdded (trivial) support for expedited grace periods.\n\nChanges from v4 (http://lkml.org/lkml/2009/5/2/91) include:\n\no\tSqueeze the size down a bit further by removing the\n\t-\u003ecompleted field from struct rcu_ctrlblk.\n\no\tThis permits synchronize_rcu() to become the empty function.\n\tPrevious concerns about rcutorture were unfounded, as\n\trcutorture correctly handles a constant value from\n\trcu_batches_completed() and rcu_batches_completed_bh().\n\nChanges from v3 (http://lkml.org/lkml/2009/3/29/221) include:\n\no\tChanged rcu_batches_completed(), rcu_batches_completed_bh()\n\trcu_enter_nohz(), rcu_exit_nohz(), rcu_nmi_enter(), and\n\trcu_nmi_exit(), to be static inlines, as suggested by David\n\tHowells.  Doing this saves about 100 bytes from rcutiny.o.\n\t(The numbers between v3 and this v4 of the patch are not directly\n\tcomparable, since they are against different versions of Linux.)\n\nChanges from v2 (http://lkml.org/lkml/2009/2/3/333) include:\n\no\tFix whitespace issues.\n\no\tChange short-circuit \"||\" operator to instead be \"+\" in order\nto \tfix performance bug noted by \"kraai\" on LWN.\n\n\t\t(http://lwn.net/Articles/324348/)\n\nChanges from v1 (http://lkml.org/lkml/2009/1/13/440) include:\n\no\tThis version depends on EMBEDDED as well as !SMP, as suggested\n\tby Ingo.\n\no\tUpdated rcu_needs_cpu() to unconditionally return zero,\n\tpermitting the CPU to enter dynticks-idle mode at any time.\n\tThis works because callbacks can be invoked upon entry to\n\tdynticks-idle mode.\n\no\tPaul is now OK with this being included, based on a poll at\nthe \tKernel Miniconf at linux.conf.au, where about ten people said\n\tthat they cared about saving 900 bytes on single-CPU systems.\n\no\tApplies to both mainline and tip/core/rcu.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: avi@redhat.com\nCc: mtosatti@redhat.com\nLKML-Reference: \u003c12565226351355-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3d76c082907e8f83c5d5c4572f38d53ad8f00c4b",
      "tree": "a39c3d3ea17dc085195626487f37995beb742ac0",
      "parents": [
        "162cc2794df37662beb7f97ddd1dd5bffaf85e9a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 28 07:46:32 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 21:02:02 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett, part 3\n\nWhitespace fixes, updated comments, and trivial code movement.\n\no\tFix whitespace error in RCU_HEAD_INIT()\n\no\tMove \"So where is rcu_write_lock()\" comment so that it does\n\tnot come between the rcu_read_unlock() header comment and\n\tthe rcu_read_unlock() definition.\n\no\tMove the module_param statements for blimit, qhimark, and\n\tqlowmark to immediately follow the corresponding\n\tdefinitions.\n\no\tIn __rcu_offline_cpu(), move the assignment to rdp_me\n\tinside the \"if\" statement, given that rdp_me is not used\n\toutside of that \"if\" statement.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12541491931164-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1eba8f84380bede3c602bd7758dea96925cead01",
      "tree": "32dd97671016c9fdc24d75be50cc8540e6cc0730",
      "parents": [
        "fc2219d49ef1606e7fd2c88af2b423b01ff3d319"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:50:42 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 23 19:46:29 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett, part 2\n\nThese issues identified during an old-fashioned face-to-face code\nreview extending over many hours.\n\no\tAdd comments for tricky parts of code, and correct comments\n\tthat have passed their sell-by date.\n\no\tGet rid of the vestiges of rcu_init_sched(), which is no\n\tlonger needed now that PREEMPT_RCU is gone.\n\no\tMove the #include of rcutree_plugin.h to the end of\n\trcutree.c, which means that, rather than having a random\n\tcollection of forward declarations, the new set of forward\n\tdeclarations document the set of plugins.  The new home for\n\tthis #include also allows __rcu_init_preempt() to move into\n\trcutree_plugin.h.\n\no\tFix rcu_preempt_check_callbacks() to be static.\n\nSuggested-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12537246443924-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nPeter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "a71fca58b7f4abca551ae2256ac08dd9123a03f9",
      "tree": "55bef0550ff2558a117d768426474e15b081ff4b",
      "parents": [
        "49e291266d0920264471d9d64268fb030e33a99a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 18 10:28:19 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 08:53:22 2009 +0200"
      },
      "message": "rcu: Fix whitespace inconsistencies\n\nFix a number of whitespace ^Ierrors in the include/linux/rcu*\nand the kernel/rcu* files.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c20090918172819.GA24405@linux.vnet.ibm.com\u003e\n[ did more checkpatch fixlets ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "16e3081191837a6a04733de5cd5d1d1b303140d4",
      "tree": "6b64a4613b9ac57da30518626a259b6aeeef4944",
      "parents": [
        "c3422bea5f09b0e85704f51f2b01271630b8940b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 13 09:15:11 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 18 00:06:53 2009 +0200"
      },
      "message": "rcu: Fix synchronize_rcu() for TREE_PREEMPT_RCU\n\nThe redirection of synchronize_sched() to synchronize_rcu() was\nappropriate for TREE_RCU, but not for TREE_PREEMPT_RCU.\n\nFix this by creating an underlying synchronize_sched().  TREE_RCU\nthen redirects synchronize_rcu() to synchronize_sched(), while\nTREE_PREEMPT_RCU has its own version of synchronize_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c12528585111916-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "06e799764eb7c2e4640888d438c3524d756613e1",
      "tree": "6c5437a498113c41cacc92d896c99afd5e5091ae",
      "parents": [
        "c935a331c8f569c7903ed26a3994a70cbea1802e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 25 18:53:37 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Aug 26 09:45:41 2009 +0200"
      },
      "message": "rcu: Remove lockdep annotations from RCU\u0027s _notrace() API members\n\nThe lockdep annotations rcu_read_acquire() and rcu_read_release()\nmight lead to infinite looping if called from lockdep.  So this patch\nremoves them.  Formal repost of http://lkml.org/lkml/2009/8/25/309\non the strength of Lai Jiangshan\u0027s review.\n\nSuggested-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSuggested-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c20090826015337.GA18904@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7c614d6461399acca5c0ba444f5db49cb332fc08",
      "tree": "63f4a5368aadafb65030e4d277bf341c4f875a1e",
      "parents": [
        "6b3ef48adf847f7adf11c870e3ffacac150f1564"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Aug 24 09:42:00 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 24 20:37:04 2009 +0200"
      },
      "message": "rcu: Add \"notrace\" to RCU function headers used by ftrace\n\nBoth rcu_read_lock_sched_notrace() and\nrcu_read_unlock_sched_notrace() are used by ftrace, and thus\nneed to be marked \"notrace\".\n\nUnfortunately, my naive assumption that gcc would see the inner\n\"notrace\" does not hold.\n\nKudos to Lai Jiangshan for noting this.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nBug-spotted-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12511321213243-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6b3ef48adf847f7adf11c870e3ffacac150f1564",
      "tree": "e1403ce515bf00ade99ec806f6ab6b6db999aa0b",
      "parents": [
        "f41d911f8c49a5d65c86504c19e8204bb605c4fd"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:53 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:40 2009 +0200"
      },
      "message": "rcu: Remove CONFIG_PREEMPT_RCU\n\nNow that CONFIG_TREE_PREEMPT_RCU is in place, there is no\nfurther need for CONFIG_PREEMPT_RCU.  Remove it, along with\nwhatever subtle bugs it may (or may not) contain.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c125097461396-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f41d911f8c49a5d65c86504c19e8204bb605c4fd",
      "tree": "59bcd3048652ef290b3e19d2904409afd5c90eb3",
      "parents": [
        "a157229cabd6dd8cfa82525fc9bf730c94cc9ac2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:52 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:40 2009 +0200"
      },
      "message": "rcu: Merge preemptable-RCU functionality into hierarchical RCU\n\nCreate a kernel/rcutree_plugin.h file that contains definitions\nfor preemptable RCU (or, under the #else branch of the #ifdef,\nempty definitions for the classic non-preemptable semantics).\nThese definitions fit into plugins defined in kernel/rcutree.c\nfor this purpose.\n\nThis variant of preemptable RCU uses a new algorithm whose\nread-side expense is roughly that of classic hierarchical RCU\nunder CONFIG_PREEMPT. This new algorithm\u0027s update-side expense\nis similar to that of classic hierarchical RCU, and, in absence\nof read-side preemption or blocking, is exactly that of classic\nhierarchical RCU.  Perhaps more important, this new algorithm\nhas a much simpler implementation, saving well over 1,000 lines\nof code compared to mainline\u0027s implementation of preemptable\nRCU, which will hopefully be retired in favor of this new\nalgorithm.\n\nThe simplifications are obtained by maintaining per-task\nnesting state for running tasks, and using a simple\nlock-protected algorithm to handle accounting when tasks block\nwithin RCU read-side critical sections, making use of lessons\nlearned while creating numerous user-level RCU implementations\nover the past 18 months.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746134003-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bc33f24bdca8b6e97376e3a182ab69e6cdefa989",
      "tree": "86b56c35677fe19e6a2f39414526ece3625dcb32",
      "parents": [
        "d6714c22b43fbcbead7e7b706ff270e15f04a791"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:47 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:37 2009 +0200"
      },
      "message": "rcu: Consolidate sparse and lockdep declarations in include/linux/rcupdate.h\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746132349-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d6714c22b43fbcbead7e7b706ff270e15f04a791",
      "tree": "1dc15e57d982351bed45b7b9768a118f86b88c19",
      "parents": [
        "9f77da9f40045253e91f55c12d4481254b513d2d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:46 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:37 2009 +0200"
      },
      "message": "rcu: Renamings to increase RCU clarity\n\nMake RCU-sched, RCU-bh, and RCU-preempt be underlying\nimplementations, with \"RCU\" defined in terms of one of the\nthree.  Update the outdated rcu_qsctr_inc() names, as these\nfunctions no longer increment anything.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746132696-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "03b042bf1dc14a268a3d65d38b4ec2a4261e8477",
      "tree": "10e422a1396087d14cec164d8f4962d7ce8bcf2d",
      "parents": [
        "c17ef45342cc033fdf7bdd5b28615e0090f8d2e7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jun 25 09:08:16 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 03 10:02:28 2009 +0200"
      },
      "message": "rcu: Add synchronize_sched_expedited() primitive\n\nThis adds the synchronize_sched_expedited() primitive that\nimplements the \"big hammer\" expedited RCU grace periods.\n\nThis primitive is placed in kernel/sched.c rather than\nkernel/rcupdate.c due to its need to interact closely with the\nmigration_thread() kthread.\n\nThe idea is to wake up this kthread with req-\u003etask set to NULL,\nin response to which the kthread reports the quiescent state\nresulting from the kthread having been scheduled.\n\nBecause this patch needs to fallback to the slow versions of\nthe primitives in response to some races with CPU onlining and\nofflining, a new synchronize_rcu_bh() primitive is added as\nwell.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: akpm@linux-foundation.org\nCc: torvalds@linux-foundation.org\nCc: davem@davemloft.net\nCc: dada1@cosmosbay.com\nCc: zbr@ioremap.net\nCc: jeff.chua.linux@gmail.com\nCc: paulus@samba.org\nCc: laijs@cn.fujitsu.com\nCc: jengelh@medozas.de\nCc: r000n@r000n.net\nCc: benh@kernel.crashing.org\nCc: mathieu.desnoyers@polymtl.ca\nLKML-Reference: \u003c12459460982947-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c17ef45342cc033fdf7bdd5b28615e0090f8d2e7",
      "tree": "6bb4b1d09f0801d5e3ad5a727e14035090b25931",
      "parents": [
        "f6faac71d502be1c29c81b2f45657662c3b84470"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 23 17:12:47 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 24 15:05:13 2009 +0200"
      },
      "message": "rcu: Remove Classic RCU\n\nRemove Classic RCU, given that the combination of Tree RCU and\nthe proposed Bloatwatch RCU do everything that Classic RCU can\nwith fewer bugs.\n\nTree RCU has been default in x86 builds for almost six months,\nand seems to be quite reliable, so there does not seem to be\nmuch justification for keeping the Classic RCU code and config\ncomplexity around anymore.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.ibm.com\u003e\nCc: akpm@linux-foundation.org\nCc: niv@us.ibm.com\nCc: dvhltc@us.ibm.com\nCc: dipankar@in.ibm.com\nCc: dhowells@redhat.com\nCc: lethal@linux-sh.org\nCc: kernel@wantstofly.org\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac44021fccd8f1f2b267b004f23a2e8d7ef05f7b",
      "tree": "164d43e03bff92e66058a2bd2a57a3af9a4723c2",
      "parents": [
        "a979241c532f07c201fe94e0a632107268f02578"
      ],
      "author": {
        "name": "Eduard - Gabriel Munteanu",
        "email": "eduard.munteanu@linux360.ro",
        "time": "Mon Mar 23 15:12:21 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 03 12:23:05 2009 +0200"
      },
      "message": "kmemtrace, rcu: don\u0027t include unnecessary headers, allow kmemtrace w/ tracepoints\n\nImpact: cleanup\n\nlinux/percpu.h includes linux/slab.h, which generates circular inclusion\ndependencies when trying to switch kmemtrace to use tracepoints instead\nof markers.\n\nThis patch allows tracing within slab headers\u0027 inline functions.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: paulmck@linux.vnet.ibm.com\nLKML-Reference: \u003c1237898630.25315.83.camel@penberg-laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a682604838763981613e42015cd0e39f2989d6bb",
      "tree": "29eae425e484edc494807702696c240ce09ba3f5",
      "parents": [
        "694593e3374a67d95ece6a275a1f181644c2c4d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Feb 25 18:03:42 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 04:08:14 2009 +0100"
      },
      "message": "rcu: Teach RCU that idle task is not quiscent state at boot\n\nThis patch fixes a bug located by Vegard Nossum with the aid of\nkmemcheck, updated based on review comments from Nick Piggin,\nIngo Molnar, and Andrew Morton.  And cleans up the variable-name\nand function-name language.  ;-)\n\nThe boot CPU runs in the context of its idle thread during boot-up.\nDuring this time, idle_cpu(0) will always return nonzero, which will\nfool Classic and Hierarchical RCU into deciding that a large chunk of\nthe boot-up sequence is a big long quiescent state.  This in turn causes\nRCU to prematurely end grace periods during this time.\n\nThis patch changes the rcutree.c and rcuclassic.c rcu_check_callbacks()\nfunction to ignore the idle task as a quiescent state until the\nsystem has started up the scheduler in rest_init(), introducing a\nnew non-API function rcu_idle_now_means_idle() to inform RCU of this\ntransition.  RCU maintains an internal rcu_idle_cpu_truthful variable\nto track this state, which is then used by rcu_check_callback() to\ndetermine if it should believe idle_cpu().\n\nBecause this patch has the effect of disallowing RCU grace periods\nduring long stretches of the boot-up sequence, this patch also introduces\nJosh Triplett\u0027s UP-only optimization that makes synchronize_rcu() be a\nno-op if num_online_cpus() returns 1.  This allows boot-time code that\ncalls synchronize_rcu() to proceed normally.  Note, however, that RCU\ncallbacks registered by call_rcu() will likely queue up until later in\nthe boot sequence.  Although rcuclassic and rcutree can also use this\nsame optimization after boot completes, rcupreempt must restrict its\nuse of this optimization to the portion of the boot sequence before the\nscheduler starts up, given that an rcupreempt RCU read-side critical\nsection may be preeempted.\n\nIn addition, this patch takes Nick Piggin\u0027s suggestion to make the\nsystem_state global variable be __read_mostly.\n\nChanges since v4:\n\no\tChanges the name of the introduced function and variable to\n\tbe less emotional.  ;-)\n\nChanges since v3:\n\no\tWARN_ON(nr_context_switches() \u003e 0) to verify that RCU\n\tswitches out of boot-time mode before the first context\n\tswitch, as suggested by Nick Piggin.\n\nChanges since v2:\n\no\tCreated rcu_blocking_is_gp() internal-to-RCU API that\n\tdetermines whether a call to synchronize_rcu() is itself\n\ta grace period.\n\no\tThe definition of rcu_blocking_is_gp() for rcuclassic and\n\trcutree checks to see if but a single CPU is online.\n\no\tThe definition of rcu_blocking_is_gp() for rcupreempt\n\tchecks to see both if but a single CPU is online and if\n\tthe system is still in early boot.\n\n\tThis allows rcupreempt to again work correctly if running\n\ton a single CPU after booting is complete.\n\no\tAdded check to rcupreempt\u0027s synchronize_sched() for there\n\tbeing but one online CPU.\n\nTested all three variants both SMP and !SMP, booted fine, passed a short\nrcutorture test on both x86 and Power.\n\nLocated-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nTested-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nTested-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ea7d3fef4222cd98556a0b386598268d4dbf6670",
      "tree": "b16f3cbe0f5e13c9bf6472fa9e1c461da0cea5b4",
      "parents": [
        "90a4d2c0106bb690f0b6af3d506febc35c658aa7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jan 04 13:03:02 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 10:18:08 2009 +0100"
      },
      "message": "rcu: eliminate synchronize_rcu_xxx macro\n\nImpact: cleanup\n\nExpand macro into two files.\n\nThe synchronize_rcu_xxx macro is quite ugly and it\u0027s only used by two\ncallers, so expand it instead.  This makes this code easier to change.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "5f34fe1cfc1bdd8b4711bbe37421fba4ed0d1ed4"
}
