)]}'
{
  "log": [
    {
      "commit": "a4fbe35a124526e6759be07bd9c7ea796ba1e00d",
      "tree": "cb5c5a1608fcff588ed9a204ea67d5891adb18fb",
      "parents": [
        "cb349ca95407cbc11424d5e9fc7c8e700709041b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Oct 07 08:36:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Oct 08 09:06:38 2012 -0700"
      },
      "message": "rcu: Grace-period initialization excludes only RCU notifier\n\nKirill noted the following deadlock cycle on shutdown involving padata:\n\n\u003e With commit 755609a9087fa983f567dc5452b2fa7b089b591f I\u0027ve got deadlock on\n\u003e poweroff.\n\u003e\n\u003e It guess it happens because of race for cpu_hotplug.lock:\n\u003e\n\u003e       CPU A                                   CPU B\n\u003e disable_nonboot_cpus()\n\u003e _cpu_down()\n\u003e cpu_hotplug_begin()\n\u003e  mutex_lock(\u0026cpu_hotplug.lock);\n\u003e __cpu_notify()\n\u003e padata_cpu_callback()\n\u003e __padata_remove_cpu()\n\u003e padata_replace()\n\u003e synchronize_rcu()\n\u003e                                       rcu_gp_kthread()\n\u003e                                       get_online_cpus();\n\u003e                                       mutex_lock(\u0026cpu_hotplug.lock);\n\nIt would of course be good to eliminate grace-period delays from\nCPU-hotplug notifiers, but that is a separate issue.  Deadlock is\nnot an appropriate diagnostic for excessive CPU-hotplug latency.\n\nFortunately, grace-period initialization does not actually need to\nexclude all of the CPU-hotplug operation, but rather only RCU\u0027s own\nCPU_UP_PREPARE and CPU_DEAD CPU-hotplug notifiers.  This commit therefore\nintroduces a new per-rcu_state onoff_mutex that provides the required\nconcurrency control in place of the get_online_cpus() that was previously\nin rcu_gp_init().\n\nReported-by: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\n"
    },
    {
      "commit": "cb349ca95407cbc11424d5e9fc7c8e700709041b",
      "tree": "b20795decb064af75aae8f9f6af77806b1a4769a",
      "parents": [
        "1fd2b4425a5702c112b441e20b250ac8833a9608"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Sep 04 17:35:31 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:18 2012 +0200"
      },
      "message": "rcu: Apply micro-optimization and int/bool fixes to RCU\u0027s idle handling\n\nChecking \"user\" before \"is_idle_task()\" allows better optimizations\nin cases where inlining is possible.  Also, \"bool\" should be passed\n\"true\" or \"false\" rather than \"1\" or \"0\".  This commit therefore makes\nthese changes, as noted in Josh\u0027s review.\n\nReported-by: Josh Triplett \u003cjosh@joshtriplett.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\n"
    },
    {
      "commit": "1fd2b4425a5702c112b441e20b250ac8833a9608",
      "tree": "502bd504d85db494a6876a37d1a847e9fb6477d8",
      "parents": [
        "edf55fda35c7dc7f2d9241c3abaddaf759b457c6"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:40 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:16 2012 +0200"
      },
      "message": "rcu: Userspace RCU extended QS selftest\n\nProvide a config option that enables the userspace\nRCU extended quiescent state on every CPUs by default.\n\nThis is for testing purpose.\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": "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": "1e1a689f10a27a4fe1ab9b4c6db04fa7232746a5",
      "tree": "098f180287723813d248f59f452ca3a7db04b636",
      "parents": [
        "c5d900bf676b1e2a61c44483932c8088651bbb4e"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:32 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:01 2012 +0200"
      },
      "message": "rcu: Ignore userspace extended quiescent state by default\n\nBy default we don\u0027t want to enter into RCU extended quiescent\nstate while in userspace because doing this produces some overhead\n(eg: use of syscall slowpath). Set it off by default and ready to\nrun when some feature like adaptive tickless need it.\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": "c5d900bf676b1e2a61c44483932c8088651bbb4e",
      "tree": "881ee6420ba291d68d451986d5ed9832ee95661f",
      "parents": [
        "2b1d5024e17be459aa6385763ca3faa8f01c52d9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:31 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:46:55 2012 +0200"
      },
      "message": "rcu: Allow rcu_user_enter()/exit() to nest\n\nAllow calls to rcu_user_enter() even if we are already\nin userspace (as seen by RCU) and allow calls to rcu_user_exit()\neven if we are already in the kernel.\n\nThis makes the APIs more flexible to be called from architectures.\nException entries for example won\u0027t need to know if they come from\nuserspace before calling rcu_user_exit().\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": "5217192b85480353aeeb395574e60d0db04f3676",
      "tree": "a45b440623a8fc55ece18b72e40829b2d9815d74",
      "parents": [
        "bda4ec9f6a7d7b249c7b14baa553731efedce300",
        "bff4a394795add6b919debc009f72b7607f5d4bf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 25 10:01:45 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 25 10:01:45 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027tip/smp/hotplug\u0027 into next.2012.09.25b\n\nThe conflicts between kernel/rcutree.h and kernel/rcutree_plugin.h\nwere due to adjacent insertions and deletions, which were resolved\nby simply accepting the changes on both branches.\n"
    },
    {
      "commit": "bda4ec9f6a7d7b249c7b14baa553731efedce300",
      "tree": "3ef6df518d8d48a29f4aafc05ffa4d427b015ce9",
      "parents": [
        "b17c7035f37f47c7f7cb08a5555ab2aebfa31f91",
        "60f53782c51f27c695840ce90c6c432284319eef",
        "86f343b50bb9f56cce60fade22da9defff28934c",
        "429227bbe55647aa42f8f63cac61e4544e248629",
        "93482f4ef1093f5961a63359a34612183d6beea0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 20:37:55 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 24 20:02:22 2012 -0700"
      },
      "message": "Merge branches \u0027bigrt.2012.09.23a\u0027, \u0027doctorture.2012.09.23a\u0027, \u0027fixes.2012.09.23a\u0027, \u0027hotplug.2012.09.23a\u0027 and \u0027idlechop.2012.09.23a\u0027 into HEAD\n\nbigrt.2012.09.23a contains additional commits to reduce scheduling latency\n\tfrom RCU on huge systems (many hundrends or thousands of CPUs).\n\ndoctorture.2012.09.23a contains documentation changes and rcutorture fixes.\n\nfixes.2012.09.23a contains miscellaneous fixes.\n\nhotplug.2012.09.23a contains CPU-hotplug-related changes.\n\nidle.2012.09.23a fixes architectures for which RCU no longer considered\n\tthe idle loop to be a quiescent state due to earlier\n\tadaptive-dynticks changes.  Affected architectures are alpha,\n\tcris, frv, h8300, m32r, m68k, mn10300, parisc, score, xtensa,\n\tand ia64.\n"
    },
    {
      "commit": "0d8ee37e2fcb7b77b9c5dee784beca5a215cad4c",
      "tree": "6e7661bf5231b4c48a6681a9fa8e8ede7915d0a7",
      "parents": [
        "1331e7a1bbe1f11b19c4327ba0853bee2a606543"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Aug 03 13:16:15 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:43:55 2012 -0700"
      },
      "message": "rcu: Disallow callback registry on offline CPUs\n\nPosting a callback after the CPU_DEAD notifier effectively leaks\nthat callback unless/until that CPU comes back online.  Silence is\nunhelpful when attempting to track down such leaks, so this commit emits\na WARN_ON_ONCE() and unconditionally leaks the callback when an offline\nCPU attempts to register a callback.  The rdp-\u003enxttail[RCU_NEXT_TAIL] is\nset to NULL in the CPU_DEAD notifier and restored in the CPU_UP_PREPARE\nnotifier, allowing _call_rcu() to determine exactly when posting callbacks\nis illegal.\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": "1331e7a1bbe1f11b19c4327ba0853bee2a606543",
      "tree": "596d9ed379ef7e2c5d8cf1cc0ba56ade084548ec",
      "parents": [
        "a10d206ef1a83121ab7430cb196e0376a7145b22"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Aug 02 17:43:50 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:43:55 2012 -0700"
      },
      "message": "rcu: Remove _rcu_barrier() dependency on __stop_machine()\n\nCurrently, _rcu_barrier() relies on preempt_disable() to prevent\nany CPU from going offline, which in turn depends on CPU hotplug\u0027s\nuse of __stop_machine().\n\nThis patch therefore makes _rcu_barrier() use get_online_cpus() to\nblock CPU-hotplug operations.  This has the added benefit of removing\nthe need for _rcu_barrier() to adopt callbacks:  Because CPU-hotplug\noperations are excluded, there can be no callbacks to adopt.  This\ncommit simplifies the code accordingly.\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": "fdab649b1aa732cd6e79654349088465cdff49af",
      "tree": "5a8b75266eb451b0766f2c622744ae984ac7c3b5",
      "parents": [
        "c96ea7cfdd88d0a67c970502bc5313fede34b86b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 13 16:34:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Remove redundant memory barrier from __call_rcu()\n\nThe first memory barrier in __call_rcu() is supposed to order any\nupdates done beforehand by the caller against the actual queuing\nof the callback.  However, the second memory barrier (which is intended\nto order incrementing the queue lengths before queuing the callback)\nis also between the caller\u0027s updates and the queuing of the callback.\nThe second memory barrier can therefore serve both purposes.\n\nThis commit therefore removes the first memory barrier.\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": "c96ea7cfdd88d0a67c970502bc5313fede34b86b",
      "tree": "b5e8273bfa99f3ddf72e3a4fbfb6483b60d7f345",
      "parents": [
        "c8020a67e625c714c4dbedc8ae2944b461e204ec"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 13 11:17:06 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Avoid spurious RCU CPU stall warnings\n\nIf a given CPU avoids the idle loop but also avoids starting a new\nRCU grace period for a full minute, RCU can issue spurious RCU CPU\nstall warnings.  This commit fixes this issue by adding a check for\nongoing grace period to avoid these spurious stall warnings.\n\nReported-by: Becky Bruce \u003cbgillbruce@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": "c8020a67e625c714c4dbedc8ae2944b461e204ec",
      "tree": "12ad0e02b6e30dffd8c7e2b24cdb278a6b799ad4",
      "parents": [
        "5fd4dc068c4ded1339180dbcd1a99e15b1c0a728"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 10 16:55:59 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Protect rcu_node accesses during CPU stall warnings\n\nThe print_other_cpu_stall() function accesses a number of rcu_node\nfields without protection from the -\u003elock.  In theory, this is not\na problem because the fields accessed are all integers, but in\npractice the compiler can get nasty.  Therefore, the commit extends\nthe existing critical section to cover the entire loop body.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a82dcc76021e22c174ba85d90b7a8c750b7362d0",
      "tree": "f65ef1af700610b9e3e59545d2bf13e4cac33876",
      "parents": [
        "5cc900cf55fe58aaad93767c5a526e2a69cbcbc6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Aug 01 14:29:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:50 2012 -0700"
      },
      "message": "rcu: Make offline-CPU checking allow for indefinite delays\n\nThe rcu_implicit_offline_qs() function implicitly assumed that execution\nwould progress predictably when interrupts are disabled, which is of course\nnot guaranteed when running on a hypervisor.  Furthermore, this function\nis short, and is called from one place only in a short function.\n\nThis commit therefore ensures that the timing is checked before\nchecking the condition, which guarantees correct behavior even given\nindefinite delays.  It also inlines rcu_implicit_offline_qs() into\nrcu_implicit_dynticks_qs().\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": "b17c7035f37f47c7f7cb08a5555ab2aebfa31f91",
      "tree": "995c37771f64470dda04e631a8223e74d6713b0a",
      "parents": [
        "4dbd6bb38dd1cbfa5cb21e56e51dffc74aa20038"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Sep 06 15:38:02 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Shrink RCU based on number of CPUs\n\nCurrently, rcu_init_geometry() only reshapes RCU\u0027s combining trees\nif the leaf fanout is changed at boot time.  This means that by\ndefault, kernels compiled with (say) NR_CPUS\u003d4096 will keep oversized\ndata structures, even when running on systems with (say) four CPUs.\n\nThis commit therefore checks to see if the maximum number of CPUs on\nthe actual running system (nr_cpu_ids) differs from NR_CPUS, and if so\nreshapes the combining trees accordingly.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4dbd6bb38dd1cbfa5cb21e56e51dffc74aa20038",
      "tree": "db9a40357ca52d6b135c95ea3186c3f89205520e",
      "parents": [
        "d7d6a11e8609f0319d4a2d8ede348f8b3374b652"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 05 21:43:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Handle unbalanced rcu_node configurations with few CPUs\n\nIf CONFIG_RCU_FANOUT_EXACT\u003dy, if there are not enough CPUs (according\nto nr_cpu_ids) to require more than a single rcu_node structure, but if\nNR_CPUS is larger than would fit into a single rcu_node structure, then\nthe current rcu_init_levelspread() code is subject to integer overflow\nin the eight-bit -\u003elevelspread[] array in the rcu_state structure.\n\nIn this case, the solution is -not- to increase the size of the\nelements in this array because the values in that array should be\nconstrained to the number of bits in an unsigned long.  Instead, this\ncommit replaces NR_CPUS with nr_cpu_ids in the rcu_init_levelspread()\nfunction\u0027s initialization of the cprv local variable.  This results in\nall of the arithmetic being consistently based off of the nr_cpu_ids\nvalue, thus avoiding the overflow, which was caused by the mixing of\nnr_cpu_ids and NR_CPUS.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d7d6a11e8609f0319d4a2d8ede348f8b3374b652",
      "tree": "64a2e3260690a85fe637a3e34c94e8ca540e8fc6",
      "parents": [
        "1943c89de700248d68385300a9b5588a1e314f90"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Aug 21 15:00:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Simplify quiescent-state detection\n\nThe current quiescent-state detection algorithm is needlessly\ncomplex.  It records the grace-period number corresponding to\nthe quiescent state at the time of the quiescent state, which\nworks, but it seems better to simply erase any record of previous\nquiescent states at the time that the CPU notices the new grace\nperiod.  This has the further advantage of removing another piece\nof RCU for which lockless reasoning is required.\n\nTherefore, this commit makes this change.\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": "25d30cf4250f74e5ceb35f8f39739782408db633",
      "tree": "0dd1ff6527fbdd42fd023d68f9a07fb0856d0de0",
      "parents": [
        "661a85dc0d2ec0404e3b80909e413a9d5e42a239"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 11 05:23:18 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Adjust for unconditional -\u003ecompleted assignment\n\nNow that the rcu_node structures\u0027 -\u003ecompleted fields are unconditionally\nassigned at grace-period cleanup time, they should already have the\ncorrect value for the new grace period at grace-period initialization\ntime.  This commit therefore inserts a WARN_ON_ONCE() to verify this\ninvariant.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "661a85dc0d2ec0404e3b80909e413a9d5e42a239",
      "tree": "8ea9545a62835d8cd47978fd31ede669f988b43a",
      "parents": [
        "5d4b86594984d8746b01487c768d8548463c173f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jul 07 05:57:03 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Add random PROVE_RCU_DELAY to grace-period initialization\n\nPreemption greatly raised the probability of certain types of race\nconditions, so this commit adds an anti-heisenbug to greatly increase\nthe collision cross section, also known as the probability of occurrence.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "5d4b86594984d8746b01487c768d8548463c173f",
      "tree": "da857bda0cd263af8301f338b4879a47c7d25ae3",
      "parents": [
        "7e5c2dfb4de15e21f62c956ec32cda9372ca993b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jul 07 07:56:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Fix day-zero grace-period initialization/cleanup race\n\nThe current approach to grace-period initialization is vulnerable to\nextremely low-probability races.  These races stem from the fact that\nthe old grace period is marked completed on the same traversal through\nthe rcu_node structure that is marking the start of the new grace period.\nThis means that some rcu_node structures will believe that the old grace\nperiod is still in effect at the same time that other rcu_node structures\nbelieve that the new grace period has already started.\n\nThese sorts of disagreements can result in too-short grace periods,\nas shown in the following scenario:\n\n1.\tCPU 0 completes a grace period, but needs an additional\n\tgrace period, so starts initializing one, initializing all\n\tthe non-leaf rcu_node structures and the first leaf rcu_node\n\tstructure.  Because CPU 0 is both completing the old grace\n\tperiod and starting a new one, it marks the completion of\n\tthe old grace period and the start of the new grace period\n\tin a single traversal of the rcu_node structures.\n\n\tTherefore, CPUs corresponding to the first rcu_node structure\n\tcan become aware that the prior grace period has completed, but\n\tCPUs corresponding to the other rcu_node structures will see\n\tthis same prior grace period as still being in progress.\n\n2.\tCPU 1 passes through a quiescent state, and therefore informs\n\tthe RCU core.  Because its leaf rcu_node structure has already\n\tbeen initialized, this CPU\u0027s quiescent state is applied to the\n\tnew (and only partially initialized) grace period.\n\n3.\tCPU 1 enters an RCU read-side critical section and acquires\n\ta reference to data item A.  Note that this CPU believes that\n\tits critical section started after the beginning of the new\n\tgrace period, and therefore will not block this new grace period.\n\n4.\tCPU 16 exits dyntick-idle mode.  Because it was in dyntick-idle\n\tmode, other CPUs informed the RCU core of its extended quiescent\n\tstate for the past several grace periods.  This means that CPU 16\n\tis not yet aware that these past grace periods have ended.  Assume\n\tthat CPU 16 corresponds to the second leaf rcu_node structure --\n\twhich has not yet been made aware of the new grace period.\n\n5.\tCPU 16 removes data item A from its enclosing data structure\n\tand passes it to call_rcu(), which queues a callback in the\n\tRCU_NEXT_TAIL segment of the callback queue.\n\n6.\tCPU 16 enters the RCU core, possibly because it has taken a\n\tscheduling-clock interrupt, or alternatively because it has\n\tmore than 10,000 callbacks queued.  It notes that the second\n\tmost recent grace period has completed (recall that because it\n\tcorresponds to the second as-yet-uninitialized rcu_node structure,\n\tit cannot yet become aware that the most recent grace period has\n\tcompleted), and therefore advances its callbacks.  The callback\n\tfor data item A is therefore in the RCU_NEXT_READY_TAIL segment\n\tof the callback queue.\n\n7.\tCPU 0 completes initialization of the remaining leaf rcu_node\n\tstructures for the new grace period, including the structure\n\tcorresponding to CPU 16.\n\n8.\tCPU 16 again enters the RCU core, again, possibly because it has\n\ttaken a scheduling-clock interrupt, or alternatively because\n\tit now has more than 10,000 callbacks queued.\tIt notes that\n\tthe most recent grace period has ended, and therefore advances\n\tits callbacks.\tThe callback for data item A is therefore in\n\tthe RCU_DONE_TAIL segment of the callback queue.\n\n9.\tAll CPUs other than CPU 1 pass through quiescent states.  Because\n\tCPU 1 already passed through its quiescent state, the new grace\n\tperiod completes.  Note that CPU 1 is still in its RCU read-side\n\tcritical section, still referencing data item A.\n\n10.\tSuppose that CPU 2 wais the last CPU to pass through a quiescent\n\tstate for the new grace period, and suppose further that CPU 2\n\tdid not have any callbacks queued, therefore not needing an\n\tadditional grace period.  CPU 2 therefore traverses all of the\n\trcu_node structures, marking the new grace period as completed,\n\tbut does not initialize a new grace period.\n\n11.\tCPU 16 yet again enters the RCU core, yet again possibly because\n\tit has taken a scheduling-clock interrupt, or alternatively\n\tbecause it now has more than 10,000 callbacks queued.\tIt notes\n\tthat the new grace period has ended, and therefore advances\n\tits callbacks.\tThe callback for data item A is therefore in\n\tthe RCU_DONE_TAIL segment of the callback queue.  This means\n\tthat this callback is now considered ready to be invoked.\n\n12.\tCPU 16 invokes the callback, freeing data item A while CPU 1\n\tis still referencing it.\n\nThis scenario represents a day-zero bug for TREE_RCU.  This commit\ntherefore ensures that the old grace period is marked completed in\nall leaf rcu_node structures before a new grace period is marked\nstarted in any of them.\n\nThat said, it would have been insanely difficult to force this race to\nhappen before the grace-period initialization process was preemptible.\nTherefore, this commit is not a candidate for -stable.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n\nConflicts:\n\n\tkernel/rcutree.c\n"
    },
    {
      "commit": "7e5c2dfb4de15e21f62c956ec32cda9372ca993b",
      "tree": "0abd7beba01a6b7f61d9c9879bf397d138eefe0b",
      "parents": [
        "d40011f601b450396104de42c631981502946cf0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jul 01 15:42:33 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Make rcutree module parameters visible in sysfs\n\nThe module parameters blimit, qhimark, and qlomark (and more\nrecently, rcu_fanout_leaf) have permission masks of zero, so\nthat their values are not visible from sysfs.  This is unnecessary\nand inconvenient to administrators who might like an easy way to\nsee what these values are on a running system.  This commit therefore\nsets their permission masks to 0444, allowing them to be read but\nnot written.\n\nReported-by: Rusty Russell \u003crusty@ozlabs.org\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": "d40011f601b450396104de42c631981502946cf0",
      "tree": "62205b755bca9391c6924764387d4417e91014d3",
      "parents": [
        "394f2769aa0dbcf027bae6fb52835e25e05d332e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 26 20:45:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Control grace-period duration from sysfs\n\nAlthough almost everyone is well-served by the defaults, some uses of RCU\nbenefit from shorter grace periods, while others benefit more from the\ngreater efficiency provided by longer grace periods.  Situations requiring\na large number of grace periods to elapse (and wireshark startup has\nbeen called out as an example of this) are helped by lower-latency\ngrace periods.  Furthermore, in some embedded applications, people are\nwilling to accept a small degradation in update efficiency (due to there\nbeing more of the shorter grace-period operations) in order to gain the\nlower latency.\n\nIn contrast, those few systems with thousands of CPUs need longer grace\nperiods because the CPU overhead of a grace period rises roughly\nlinearly with the number of CPUs.  Such systems normally do not make\nmuch use of facilities that require large numbers of grace periods to\nelapse, so this is a good tradeoff.\n\nTherefore, this commit allows the durations to be controlled from sysfs.\nThere are two sysfs parameters, one named \"jiffies_till_first_fqs\" that\nspecifies the delay in jiffies from the end of grace-period initialization\nuntil the first attempt to force quiescent states, and the other named\n\"jiffies_till_next_fqs\" that specifies the delay (again in jiffies)\nbetween subsequent attempts to force quiescent states.  They both default\nto three jiffies, which is compatible with the old hard-coded behavior.\n\nAt some future time, it may be possible to automatically increase the\ngrace-period length with the number of CPUs, but we do not yet have\nsufficient data to do a good job.  Preliminary data indicates that we\nshould add an addiitonal jiffy to each of the delays for every 200 CPUs\nin the system, but more experimentation is needed.  For now, the number\nof systems with more than 1,000 CPUs is small enough that this can be\nrelegated to boot-time hand tuning.\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": "394f2769aa0dbcf027bae6fb52835e25e05d332e",
      "tree": "78471127d379e8d128d73e976ce33022c195b0c5",
      "parents": [
        "4605c0143c6d611b3076025ba3a7e04293c01d69"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 26 17:00:35 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Prevent force_quiescent_state() memory contention\n\nLarge systems running RCU_FAST_NO_HZ kernels see extreme memory\ncontention on the rcu_state structure\u0027s -\u003efqslock field.  This\ncan be avoided by disabling RCU_FAST_NO_HZ, either at compile time\nor at boot time (via the nohz kernel boot parameter), but large\nsystems will no doubt become sensitive to energy consumption.\nThis commit therefore uses a combining-tree approach to spread the\nmemory contention across new cache lines in the leaf rcu_node structures.\nThis can be thought of as a tournament lock that has only a try-lock\nacquisition primitive.\n\nThe effect on small systems is minimal, because such systems have\nan rcu_node \"tree\" consisting of a single node.  In addition, this\nfunctionality is not used on fastpaths.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b4be093fee0200789df59b6c90e2d099a20f55b3",
      "tree": "5eb8367be67bde57671240bfeb149c4c670ffd1c",
      "parents": [
        "4cdfc175c25c89eedc08460b5e6239c2ec67fcb6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 25 08:41:11 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Allow RCU quiescent-state forcing to be preempted\n\nRCU quiescent-state forcing is currently carried out without preemption\npoints, which can result in excessive latency spikes on large systems\n(many hundreds or thousands of CPUs).  This patch therefore inserts\na voluntary preemption point into force_qs_rnp(), which should greatly\nreduce the magnitude of these spikes.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4cdfc175c25c89eedc08460b5e6239c2ec67fcb6",
      "tree": "716acd208cb0633cdd19fc0cd5ad601906cceb24",
      "parents": [
        "b402b73b3afe3614bc0e921ebe18013ea103115a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 22 17:06:26 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Move quiescent-state forcing into kthread\n\nAs the first step towards allowing quiescent-state forcing to be\npreemptible, this commit moves RCU quiescent-state forcing into the\nsame kthread that is now used to initialize and clean up after grace\nperiods.  This is yet another step towards keeping scheduling\nlatency down to a dull roar.\n\nUpdated to change from raw_spin_lock_irqsave() to raw_spin_lock_irq()\nand to remove the now-unused rcu_state structure fields as suggested by\nPeter Zijlstra.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bfa00b4c4028f39357d16279ff0fddf550241593",
      "tree": "81f7ba2a050d2ddb033bf690ade41052a866d7fb",
      "parents": [
        "7fdefc10e1d730d4608cc59d386bc446f5b9ee99"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 09:54:10 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Prevent offline CPUs from executing RCU core code\n\nEarlier versions of RCU invoked the RCU core from the CPU_DYING notifier\nin order to note a quiescent state for the outgoing CPU.  Because the\nCPU is marked \"offline\" during the execution of the CPU_DYING notifiers,\nthe RCU core had to tolerate being invoked from an offline CPU.  However,\ncommit b1420f1c (Make rcu_barrier() less disruptive) left only tracing\ncode in the CPU_DYING notifier, so the RCU core need no longer execute\non offline CPUs.  This commit therefore enforces this restriction.\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": "7fdefc10e1d730d4608cc59d386bc446f5b9ee99",
      "tree": "8365a35be3c92af654667a6ff8e73969abb1e000",
      "parents": [
        "c856bafae7f5b3f59ac1d99279a9b99b3b36ad12"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 22 11:08:41 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Break up rcu_gp_kthread() into subfunctions\n\nThen rcu_gp_kthread() function is too large and furthermore needs to\nhave the force_quiescent_state() code pulled in.  This commit therefore\nbreaks up rcu_gp_kthread() into rcu_gp_init() and rcu_gp_cleanup().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "c856bafae7f5b3f59ac1d99279a9b99b3b36ad12",
      "tree": "2bc16cb69d397440c5082fd451d64db6efa67017",
      "parents": [
        "cabc49c1ff51baaf1958d501a7a616ce91245c93"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jun 21 08:19:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Allow RCU grace-period cleanup to be preempted\n\nRCU grace-period cleanup is currently carried out with interrupts\ndisabled, which can result in excessive latency spikes on large systems\n(many hundreds or thousands of CPUs).  This patch therefore makes the\nRCU grace-period cleanup be preemptible, including voluntary preemption\npoints, which should eliminate those latency spikes.  Similar spikes from\nforcing of quiescent states will be dealt with similarly by later patches.\n\nUpdated to replace uses of spin_lock_irqsave() with spin_lock_irq(), as\nsuggested by Peter Zijlstra.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "cabc49c1ff51baaf1958d501a7a616ce91245c93",
      "tree": "9d99237196fb45d01b38fb9235815b32fd1995d7",
      "parents": [
        "755609a9087fa983f567dc5452b2fa7b089b591f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jun 20 17:07:14 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Move RCU grace-period cleanup into kthread\n\nAs a first step towards allowing grace-period cleanup to be preemptible,\nthis commit moves the RCU grace-period cleanup into the same kthread\nthat is now used to initialize grace periods.  This is needed to keep\nscheduling latency down to a dull roar.\n\n[ paulmck: Get rid of stray spin_lock_irqsave() calls. ]\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "755609a9087fa983f567dc5452b2fa7b089b591f",
      "tree": "8a0687cae001206535a22223efb73884daedde30",
      "parents": [
        "79bce6724366b3827c5c673fb07d7063082873cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 19 17:18:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Allow RCU grace-period initialization to be preempted\n\nRCU grace-period initialization is currently carried out with interrupts\ndisabled, which can result in 200-microsecond latency spikes on systems\non which RCU has been configured for 4096 CPUs.  This patch therefore\nmakes the RCU grace-period initialization be preemptible, which should\neliminate those latency spikes.  Similar spikes from grace-period cleanup\nand the forcing of quiescent states will be dealt with similarly by later\npatches.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "79bce6724366b3827c5c673fb07d7063082873cf",
      "tree": "87b02ed03a42a194324e369152049246ceb091e2",
      "parents": [
        "b3dbec76e5334fbb063987dea14e7b255602d7e4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 17 14:32:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Prevent initialization-time quiescent-state race\n\nThe next step in reducing RCU\u0027s grace-period initialization latency on\nlarge systems will make this initialization preemptible.  Unfortunately,\nmaking the grace-period initialization subject to interrupts (let alone\npreemption) exposes the following race on systems whose rcu_node tree\ncontains more than one node:\n\n1.\tCPU 31 starts initializing the grace period, including the\n    \tfirst leaf rcu_node structures, and is then preempted.\n\n2.\tCPU 0 refers to the first leaf rcu_node structure, and notes\n    \tthat a new grace period has started.  It passes through a\n    \tquiescent state shortly thereafter, and informs the RCU core\n    \tof this rite of passage.\n\n3.\tCPU 0 enters an RCU read-side critical section, acquiring\n    \ta pointer to an RCU-protected data item.\n\n4.\tCPU 31 takes an interrupt whose handler removes the data item\n\treferenced by CPU 0 from the data structure, and registers an\n\tRCU callback in order to free it.\n\n5.\tCPU 31 resumes initializing the grace period, including its\n    \town rcu_node structure.  In invokes rcu_start_gp_per_cpu(),\n    \twhich advances all callbacks, including the one registered\n    \tin #4 above, to be handled by the current grace period.\n\n6.\tThe remaining CPUs pass through quiescent states and inform\n    \tthe RCU core, but CPU 0 remains in its RCU read-side critical\n    \tsection, still referencing the now-removed data item.\n\n7.\tThe grace period completes and all the callbacks are invoked,\n    \tincluding the one that frees the data item that CPU 0 is still\n    \treferencing.  Oops!!!\n\nOne way to avoid this race is to remove grace-period acceleration from\nrcu_start_gp_per_cpu().  Now, the only reason for this acceleration was\nto allow CPUs bringing RCU out of idle state to have their callbacks\ninvoked after only one grace period, rather than the two grace periods\nthat would otherwise be required.  But this acceleration does not\nwork when RCU grace-period initialization is moved to a kthread because\nthe CPU posting the callback is no longer necessarily the CPU that is\ninitializing the resulting grace period.\n\nThis commit therefore removes this now-pointless (and soon to be dangerous)\ngrace-period acceleration, thus avoiding the above race.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b3dbec76e5334fbb063987dea14e7b255602d7e4",
      "tree": "5b75e737856baf09b2303bebf7d9893b8279c84e",
      "parents": [
        "a10d206ef1a83121ab7430cb196e0376a7145b22"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 18 18:36:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Move RCU grace-period initialization into a kthread\n\nAs the first step towards allowing grace-period initialization to be\npreemptible, this commit moves the RCU grace-period initialization\ninto its own kthread.  This is needed to keep large-system scheduling\nlatency at reasonable levels.\n\nAlso change raw_spin_lock_irqsave() to raw_spin_lock_irq() as suggested\nby Peter Zijlstra in review comments.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a10d206ef1a83121ab7430cb196e0376a7145b22",
      "tree": "2d213786e6a3fcb1f597c0b05f879014791555bc",
      "parents": [
        "7ece55a4a3a04abe37118b1d4fb0b702eeb1de4c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Sep 22 13:55:30 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:31:52 2012 -0700"
      },
      "message": "rcu: Fix day-one dyntick-idle stall-warning bug\n\nEach grace period is supposed to have at least one callback waiting\nfor that grace period to complete.  However, if CONFIG_NO_HZ\u003dn, an\nextra callback-free grace period is no big problem -- it will chew up\na tiny bit of CPU time, but it will complete normally.  In contrast,\nCONFIG_NO_HZ\u003dy kernels have the potential for all the CPUs to go to\nsleep indefinitely, in turn indefinitely delaying completion of the\ncallback-free grace period.  Given that nothing is waiting on this grace\nperiod, this is also not a problem.\n\nThat is, unless RCU CPU stall warnings are also enabled, as they are\nin recent kernels.  In this case, if a CPU wakes up after at least one\nminute of inactivity, an RCU CPU stall warning will result.  The reason\nthat no one noticed until quite recently is that most systems have enough\nOS noise that they will never remain absolutely idle for a full minute.\nBut there are some embedded systems with cut-down userspace configurations\nthat consistently get into this situation.\n\nAll this begs the question of exactly how a callback-free grace period\ngets started in the first place.  This can happen due to the fact that\nCPUs do not necessarily agree on which grace period is in progress.\nIf a CPU still believes that the grace period that just completed is\nstill ongoing, it will believe that it has callbacks that need to wait for\nanother grace period, never mind the fact that the grace period that they\nwere waiting for just completed.  This CPU can therefore erroneously\ndecide to start a new grace period.  Note that this can happen in\nTREE_RCU and TREE_PREEMPT_RCU even on a single-CPU system:  Deadlock\nconsiderations mean that the CPU that detected the end of the grace\nperiod is not necessarily officially informed of this fact for some time.\n\nOnce this CPU notices that the earlier grace period completed, it will\ninvoke its callbacks.  It then won\u0027t have any callbacks left.  If no\nother CPU has any callbacks, we now have a callback-free grace period.\n\nThis commit therefore makes CPUs check more carefully before starting a\nnew grace period.  This new check relies on an array of tail pointers\ninto each CPU\u0027s list of callbacks.  If the CPU is up to date on which\ngrace periods have completed, it checks to see if any callbacks follow\nthe RCU_DONE_TAIL segment, otherwise it checks to see if any callbacks\nfollow the RCU_WAIT_TAIL segment.  The reason that this works is that\nthe RCU_WAIT_TAIL segment will be promoted to the RCU_DONE_TAIL segment\nas soon as the CPU is officially notified that the old grace period\nhas ended.\n\nThis change is to cpu_needs_another_gp(), which is called in a number\nof places.  The only one that really matters is in rcu_start_gp(), where\nthe root rcu_node structure\u0027s -\u003elock is held, which prevents any\nother CPU from starting or completing a grace period, so that the\ncomparison that determines whether the CPU is missing the completion\nof a grace period is stable.\n\nReported-by: Becky Bruce \u003cbgillbruce@gmail.com\u003e\nReported-by: Subodh Nijsure \u003csnijsure@grid-net.com\u003e\nReported-by: Paul Walmsley \u003cpaul@pwsan.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\nTested-by: Paul Walmsley \u003cpaul@pwsan.com\u003e  # OMAP3730, OMAP4430\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "62ab7072476ae1600e877cc62b43758e485f4f1e",
      "tree": "c1df0992432cf5bae0f9122d606e73628368fb8e",
      "parents": [
        "bcd951cf10f24e341defcd002c15a1f4eea13ddb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 16 10:42:38 2012 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 13 17:01:08 2012 +0200"
      },
      "message": "rcu: Use smp_hotplug_thread facility for RCUs per-CPU kthread\n\nBring RCU into the new-age CPU-hotplug fold by modifying RCU\u0027s per-CPU\nkthread code to use the new smp_hotplug_thread facility.\n\n[ tglx: Adapted it to use callbacks and to the simplified rcu yield ]\n    \nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20120716103948.673354828@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5d01bbd111d6ff9ea9d9847774f66dff39633776",
      "tree": "77cbce5ff479b3e70f95a29cc88ce50e025f9078",
      "parents": [
        "3bf671af14d591ede9251acb0085e8017f3705e7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jul 16 10:42:35 2012 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 13 17:01:06 2012 +0200"
      },
      "message": "rcu: Yield simpler\n\nThe rcu_yield() code is amazing. It\u0027s there to avoid starvation of the\nsystem when lots of (boosting) work is to be done.\n\nNow looking at the code it\u0027s functionality is:\n\n Make the thread SCHED_OTHER and very nice, i.e. get it out of the way\n Arm a timer with 2 ticks\n schedule()\n\nNow if the system goes idle the rcu task returns, regains SCHED_FIFO\nand plugs on. If the systems stays busy the timer fires and wakes a\nper node kthread which in turn makes the per cpu thread SCHED_FIFO and\nbrings it back on the cpu. For the boosting thread the \"make it FIFO\"\nbit is missing and it just runs some magic boost checks. Now this is a\nlot of code with extra threads and complexity.\n\nIt\u0027s way simpler to let the tasks when they detect overload schedule\naway for 2 ticks and defer the normal wakeup as long as they are in\nyielded state and the cpu is not idle.\n\nThat solves the same problem and the only difference is that when the\ncpu goes idle it\u0027s not guaranteed that the thread returns right away,\nbut it won\u0027t be longer out than two ticks, so no harm is done. If\nthat\u0027s an issue than it is way simpler just to wake the task from\nidle as RCU has callbacks there anyway.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120716103948.131256723@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c701d5d9b384ff03ceb232ef21236364d784a411",
      "tree": "ae5b4793c478d3c575e506f1d36c798b73c542ff",
      "parents": [
        "02a0677b0be545a07ffb15a13419efd7c82881e0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 28 08:08:25 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 06:01:48 2012 -0700"
      },
      "message": "rcu: Fix code-style issues involving \"else\"\n\nThe Linux kernel coding style says that single-statement blocks should\nomit curly braces unless the other leg of the \"if\" statement has\nmultiple statements, in which case the curly braces should be included.\nThis commit fixes RCU\u0027s violations of this rule.\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": "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": "cfca927972e31a5b3da49bf641c525732ff3c357",
      "tree": "d77d787107b706189d4592ef2738901e98814217",
      "parents": [
        "cf01537ecf192d9ff15c32a355db5d5af22bea4d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jun 25 12:54:17 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:55:16 2012 -0700"
      },
      "message": "rcu: Introduce check for callback list/count mismatch\n\nThe recent bug that introduced the RCU callback list/count mismatch\nshowed the need for a diagnostic to check for this, which this commit\nadds.\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": "bf1304e9cd755be7814ac8365834b7a1d0f06b58",
      "tree": "0bbbb761dc42af26e555e6257bd280e5d390fee0",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:55:39 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:42 2012 -0700"
      },
      "message": "rcu: Dump only the current CPU\u0027s buffers for idle-entry/exit warnings\n\nProblems in RCU idle entry and exit are almost always confined to the\noffending CPU.  This commit therefore switches ftrace_dump() from\nDUMP_ALL to DUMP_ORIG.\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: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Pascal Chapperon \u003cpascal.chapperon@wanadoo.fr\u003e\n"
    },
    {
      "commit": "cf01537ecf192d9ff15c32a355db5d5af22bea4d",
      "tree": "5561d7852d1a4dc88d706863f6c95256c783e9f4",
      "parents": [
        "95f0c1de3e6ed4383cc4b5f52ce4ecfb21026b49"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 11:26:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:25 2012 -0700"
      },
      "message": "rcu: Add check for CPUs going offline with callbacks queued\n\nIf a CPU goes offline with callbacks queued, those callbacks might be\nindefinitely postponed, which can result in a system hang.  This commit\ntherefore inserts warnings for this condition.\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": "95f0c1de3e6ed4383cc4b5f52ce4ecfb21026b49",
      "tree": "8099a405c03d9caabbf8f1752346e0aa0e30ee28",
      "parents": [
        "1c17e4d4437d8045a596d9f06c1558dc09e2b372"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 19 11:58:27 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:25 2012 -0700"
      },
      "message": "rcu: Disable preemption in rcu_blocking_is_gp()\n\nIt is time to optimize CONFIG_TREE_PREEMPT_RCU\u0027s synchronize_rcu()\nfor uniprocessor optimization, which means that rcu_blocking_is_gp()\ncan no longer rely on RCU read-side critical sections having disabled\npreemption.  This commit therefore disables preemption across\nrcu_blocking_is_gp()\u0027s scan of the cpu_online_mask.\n\n(Updated from previous version to fix embarrassing bug spotted by\nWu Fengguang.)\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "29154c57e35a191c83b19c61b1935c9f21957662",
      "tree": "e761fdd59279de1e8c45bb42b40361c8bc4ff04d",
      "parents": [
        "a16b7a693430406dc229ab0c6b154f669a2031c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 30 03:21:48 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Split RCU core processing out of __call_rcu()\n\nThe __call_rcu() function is a bit overweight, so this commit splits\nit into actual enqueuing of and accounting for the callback (__call_rcu())\nand associated RCU-core processing (__call_rcu_core()).\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a16b7a693430406dc229ab0c6b154f669a2031c5",
      "tree": "b43738c2f447eb4a88fc931d799c33190d56f689",
      "parents": [
        "62fde6edf12b60fddb13a3f0a779c8be0bb7447e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat May 26 08:56:01 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Prevent __call_rcu() from invoking RCU core on offline CPUs\n\nThe __call_rcu() function will invoke the RCU core, for example, if\nit detects that the current CPU has too many callbacks.  However, this\ncan happen on an offline CPU that is on its way to the idle loop, in\nwhich case it is an error to invoke the RCU core, and the excess callbacks\nwill be adopted in any case.  This commit therefore adds checks to\n__call_rcu() for running on an offline CPU, refraining from invoking\nthe RCU core in this case.\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": "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": "1d1fb395f6dbc07b36285bbedcf01a73b57f7cb5",
      "tree": "450c8e5e2d69c6e8b6fd7820d6a7dc112d60325b",
      "parents": [
        "3f5d3ea64f1783f0d4ea0d35890ae3297f045a8b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:44:42 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 ACCESS_ONCE() to -\u003eqlen accesses\n\nThe _rcu_barrier() function accesses other CPUs\u0027 rcu_data structure\u0027s\n-\u003eqlen field without benefit of locking.  This commit therefore adds\nthe required ACCESS_ONCE() wrappers around accesses and updates that\nneed it.\n\nACCESS_ONCE() is not needed when a CPU accesses its own -\u003eqlen, or\nin code that cannot run while _rcu_barrier() is sampling -\u003eqlen fields.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "3f5d3ea64f1783f0d4ea0d35890ae3297f045a8b",
      "tree": "1a472f1a751aa6171f8ab47e083dde4f5125a9b0",
      "parents": [
        "285fe29481d865ae381ad3924c80894e6968c2d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:39:56 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:21 2012 -0700"
      },
      "message": "rcu: Consolidate duplicate callback-list initialization\n\nThere are a couple of open-coded initializations of the rcu_data\nstructure\u0027s RCU callback list.  This commit therefore consolidates\nthem into a new init_callback_list() 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\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "285fe29481d865ae381ad3924c80894e6968c2d8",
      "tree": "e01e809f4c840770698f857e8176ebb083ff9ad8",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 08:45:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:21 2012 -0700"
      },
      "message": "rcu: Fix detection of abruptly-ending stall\n\nThe code that attempts to identify stalls that end just as we detect\nthem is broken by both flavors of initialization failure.  This commit\ntherefore properly initializes and computes the count of the number\nof reasons why the RCU grace period is stalled.\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": "ff015030c939f0bec68fa9b8898da3aaa7fe55ea",
      "tree": "0cd57c23efb14f1b15764c927c5ef0bddb36f8ad",
      "parents": [
        "c0cc962da3e7770feb3665f087ea3e23d8c15479"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 13:16:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:24 2012 -0700"
      },
      "message": "rcu: RCU_SAVE_DYNTICK code no longer ever dead\n\nBefore RCU had unified idle, the RCU_SAVE_DYNTICK leg of the switch\nstatement in force_quiescent_state() was dead code for CONFIG_NO_HZ\u003dn\nkernel builds.  With unified idle, the code is never dead.  This commit\ntherefore removes the \"if\" statement designed to make gcc aware of when\nthe code was and was not dead.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "6ce75a2326e6f8b3bdfb60e1de7934b89858e87b",
      "tree": "c3ecd512422ad9f445f69c78037142a99bc8db2c",
      "parents": [
        "1bca8cf1a2c3c6683b12ad28a3e826ca7a834978"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 11:01:13 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:24 2012 -0700"
      },
      "message": "rcu: Introduce for_each_rcu_flavor() and use it\n\nThe arrival of TREE_PREEMPT_RCU some years back included some ugly\ncode involving either #ifdef or #ifdef\u0027ed wrapper functions to iterate\nover all non-SRCU flavors of RCU.  This commit therefore introduces\na for_each_rcu_flavor() iterator over the rcu_state structures for each\nflavor of RCU to clean up a bit of the ugliness.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1bca8cf1a2c3c6683b12ad28a3e826ca7a834978",
      "tree": "db7b56bd65c8ac7af376599febb44324698b53d4",
      "parents": [
        "d7e187c8e9f30543f9cadfed094896ff414acb8f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 09:40:38 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Remove unneeded __rcu_process_callbacks() argument\n\nWith the advent of __this_cpu_ptr(), it is no longer necessary to pass\nboth the rcu_state and rcu_data structures into __rcu_process_callbacks().\nThis commit therefore computes the rcu_data pointer from the rcu_state\npointer within __rcu_process_callbacks() so that callers can pass in\nonly the pointer to the rcu_state structure.  This paves the way for\nlinking the rcu_state structures together and iterating over them.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a83eff0a82a7f3f14fea477fd41e6c082e7fc96a",
      "tree": "9fb65b061716c622962c42b8318f06fd0d2919cd",
      "parents": [
        "cf3a9c4842b1e097dbe0854933c471d43dd24f69"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 23 18:47:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Add tracing for _rcu_barrier()\n\nThis commit adds event tracing for _rcu_barrier() execution.  This\nis defined only if RCU_TRACE\u003dy.\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": "cf3a9c4842b1e097dbe0854933c471d43dd24f69",
      "tree": "5b2737cade79c491ba46cd642c01cc165118d723",
      "parents": [
        "cfed0a85dad921c683e9c0d25b072bcc5745ede0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 14:56:46 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Increase rcu_barrier() concurrency\n\nThe traditional rcu_barrier() implementation has serialized all requests,\nregardless of RCU flavor, and also does not coalesce concurrent requests.\nIn the past, this has been good and sufficient.\n\nHowever, systems are getting larger and use of rcu_barrier() has been\nincreasing.  This commit therefore introduces a counter-based scheme\nthat allows _rcu_barrier() calls for the same flavor of RCU to take\nadvantage of each others\u0027 work.\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": "cfed0a85dad921c683e9c0d25b072bcc5745ede0",
      "tree": "e318ff5559bd38ccd715aeff17085f9b3e3068cb",
      "parents": [
        "7be7f0be907224445acc62b3884c892f38b7ff40"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 15 18:22:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Remove needless initialization\n\nFor global variables, C defaults all fields to zero.  The initialization\nof the rcu_state structure\u0027s -\u003en_force_qs and -\u003en_force_qs_ngp fields\nis therefore redundant, so this commit removes these initializations.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7be7f0be907224445acc62b3884c892f38b7ff40",
      "tree": "9802c524d04374e6a4e5c5b9d3a0d3c9085ef2fd",
      "parents": [
        "7db74df88b52844f4e966901e2972bba725e6766"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 05:18:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_mutex to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its\nrcu_barrier() function, it is necessary to move the relevant\nstate to the rcu_state structure.  This commit therefore moves the\nrcu_barrier_mutex global variable to a new -\u003ebarrier_mutex field\nin the rcu_state structure.\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": "7db74df88b52844f4e966901e2972bba725e6766",
      "tree": "ccb2139d2c4628591287bf456ede1164cef43d0f",
      "parents": [
        "24ebbca8ecdd5129d7f829a7cb5146aaeb531f77"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 03:03:37 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_completion to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its\nrcu_barrier() function, it is necessary to move the relevant\nstate to the rcu_state structure.  This commit therefore moves the\nrcu_barrier_completion global variable to a new -\u003ebarrier_completion\nfield in the rcu_state structure.\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": "24ebbca8ecdd5129d7f829a7cb5146aaeb531f77",
      "tree": "b7a4bb8044dcd1e13119113c77d2a4b96ba25a43",
      "parents": [
        "06668efa9180f4824fe846a8ff96338c18646bc7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 00:34:56 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_cpu_count to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its rcu_barrier()\nfunction, it is necessary to move the relevant state to the rcu_state\nstructure.  This commit therefore moves the rcu_barrier_cpu_count global\nvariable to a new -\u003ebarrier_cpu_count field in the rcu_state structure.\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": "06668efa9180f4824fe846a8ff96338c18646bc7",
      "tree": "2bda53825cb3437af82bc1db4a4114ee8e29e954",
      "parents": [
        "037b64ed0bf2405a1a01542164d3418564b44fff"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 23:57:46 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Move _rcu_barrier()\u0027s rcu_head structures to rcu_data structures\n\nIn order for multiple flavors of RCU to each concurrently run one\nrcu_barrier(), each flavor needs its own per-CPU set of rcu_head\nstructures.  This commit therefore moves _rcu_barrier()\u0027s set of\nper-CPU rcu_head structures from per-CPU variables to the existing\nper-CPU and per-RCU-flavor rcu_data structures.\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": "037b64ed0bf2405a1a01542164d3418564b44fff",
      "tree": "59aa7e486e1673564f2a5687992130dffa71ca1b",
      "parents": [
        "6c90cc7bf077f28144013e949ee0c122012d194a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 23:26:01 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Place pointer to call_rcu() in rcu_data structure\n\nThis is a preparatory commit for increasing rcu_barrier()\u0027s concurrency.\nIt adds a pointer in the rcu_data structure to the corresponding call_rcu()\nfunction.  This allows a pointer to the rcu_data structure to imply the\nfunction pointer, which allows _rcu_barrier() state to be placed in the\nrcu_state structure.\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": "6c90cc7bf077f28144013e949ee0c122012d194a",
      "tree": "aedacfab9695fb43af69e6c30c2f2fa3081e7dc6",
      "parents": [
        "cca6f3931920a7547d02e68adc2ca635bea5600c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 19:41:41 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Prevent excessive line length in RCU_STATE_INITIALIZER()\n\nUpcoming rcu_barrier() concurrency commits will result in line lengths\ngreater than 80 characters in the RCU_STATE_INITIALIZER(), so this commit\nshortens the name of the macro\u0027s argument to prevent this.\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": "cca6f3931920a7547d02e68adc2ca635bea5600c",
      "tree": "31e2cd3d9e73f080ca78a89a6dba474c1987beee",
      "parents": [
        "cc5df65b0370fc6aa2bfe3bb19e0451d5cafb99f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 08 21:00:28 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Size rcu_node tree from nr_cpu_ids rather than NR_CPUS\n\nThe rcu_node tree array is sized based on compile-time constants,\nincluding NR_CPUS.  Although this approach has worked well in the past,\nthe recent trend by many distros to define NR_CPUS\u003d4096 results in\nexcessive grace-period-initialization latencies.\n\nThis commit therefore substitutes the run-time computed nr_cpu_ids for\nthe compile-time NR_CPUS when building the tree.  This can result in\nmuch of the compile-time-allocated rcu_node array being unused.  If\nthis is a major problem, you are in a specialized situation anyway,\nso you can manually adjust the NR_CPUS, RCU_FANOUT, and RCU_FANOUT_LEAF\nkernel config parameters.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f885b7f2b2de70be266d2cecc476f773a1e2ca5d",
      "tree": "c4f4d03ca1469f22701b848274034a74c5ae2b04",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Apr 23 15:52:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:20 2012 -0700"
      },
      "message": "rcu: Control RCU_FANOUT_LEAF from boot-time parameter\n\nAlthough making RCU_FANOUT_LEAF a kernel configuration parameter rather\nthan a fixed constant makes it easier for people to decrease cache-miss\noverhead for large systems, it is of little help for people who must\nrun a single pre-built kernel binary.\n\nThis commit therefore allows the value of RCU_FANOUT_LEAF to be\nincreased (but not decreased!) via a boot-time parameter named\nrcutree.rcu_fanout_leaf.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.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": "b41772abebc27c61dd578b76da99aa5240b4c99a",
      "tree": "cb26f8195bcda4aaf6bcbe5de782eec4cef52709",
      "parents": [
        "6b16351acbd415e66ba16bf7d473ece1574cf0bc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 20:50:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 25 12:35:25 2012 -0700"
      },
      "message": "rcu: Stop rcu_do_batch() from multiplexing the \"count\" variable\n\nCommit b1420f1c (Make rcu_barrier() less disruptive) rearranged the\ncode in rcu_do_batch(), moving the -\u003eqlen manipulation to follow\nthe requeueing of the callbacks.  Unfortunately, this rearrangement\nclobbered the value of the \"count\" local variable before the value\nof rdp-\u003eqlen was adjusted, resulting in the value of rdp-\u003eqlen being\ninaccurate.  This commit therefore introduces an index variable \"i\",\navoiding the inadvertent multiplexing.\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": "8f5af6f1f2d09fe5eac86a5dc1731a5917c1503a",
      "tree": "b7093c8c08377f23645cc7d3619f3fc5c5bdf6f8",
      "parents": [
        "f8f5701bdaf9134b1f90e5044a82c66324d2073f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri May 04 08:31:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jun 06 20:43:27 2012 -0700"
      },
      "message": "rcu: RCU_FAST_NO_HZ detection of callback adoption\n\nIn the present implementations of CPU hotplug, the outgoing CPU is\nguaranteed to run its stop-machine process on the way out, which\nwill guarantee that RCU_FAST_NO_HZ forces the CPU out of dyntick-idle\nmode.\n\nHowever, new versions of CPU hotplug might not work this way.  This\ncommit therefore removes this design constraint by explicitly notifying\nCPUs when they adopt non-lazy RCU callbacks.\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: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Pascal Chapperon \u003cpascal.chapperon@wanadoo.fr\u003e\n"
    },
    {
      "commit": "2d84e023cb5ec00403ff5d447533c6fd58fcc7ff",
      "tree": "cb10d9a568ebb4be8593821a6f205efedf2f4ddd",
      "parents": [
        "9ff00d58a915b6747ba2e843ab2d04c712b4dc32",
        "dc36be4419311fd57becdf54bfeef6bd04a6741d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 08:41:20 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 08:41:46 2012 +0200"
      },
      "message": "Merge branch \u0027rcu/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu\n\nPull the v3.5 RCU tree from Paul E. McKenney:\n\n 1)\tA set of improvements and fixes to the RCU_FAST_NO_HZ feature\n\t(with more on the way for 3.6).  Posted to LKML:\n\thttps://lkml.org/lkml/2012/4/23/324 (commits 1-3 and 5),\n\thttps://lkml.org/lkml/2012/4/16/611 (commit 4),\n\thttps://lkml.org/lkml/2012/4/30/390 (commit 6), and\n\thttps://lkml.org/lkml/2012/5/4/410 (commit 7, combined with\n\tthe other commits for the convenience of the tester).\n\n 2)\tChanges to make rcu_barrier() avoid disrupting execution of CPUs\n\tthat have no RCU callbacks.  Posted to LKML:\n\thttps://lkml.org/lkml/2012/4/23/322.\n\n 3)\tA couple of commits that improve the efficiency of the interaction\n\tbetween preemptible RCU and the scheduler, these two being all\n\tthat survived an abortive attempt to allow preemptible RCU\u0027s\n\t__rcu_read_lock() to be inlined.  The full set was posted to\n\tLKML at https://lkml.org/lkml/2012/4/14/143, and the first and\n\tthird patches of that set remain.\n\n 4)\tLai Jiangshan\u0027s algorithmic implementation of SRCU, which includes\n\tcall_srcu() and srcu_barrier().  A major feature of this new\n\timplementation is that synchronize_srcu() no longer disturbs\n\tthe execution of other CPUs.  This work is based on earlier\n\timplementations by Peter Zijlstra and Paul E. McKenney.  Posted to\n\tLKML: https://lkml.org/lkml/2012/2/22/82.\n\n 5)\tA number of miscellaneous bug fixes and improvements which were\n\tposted to LKML at: https://lkml.org/lkml/2012/4/23/353 with\n\tsubsequent updates posted to LKML.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\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": "b1420f1c8bfc30ecf6380a31d0f686884834b599",
      "tree": "56eb378bcd64175a7302a1031b388ecf569a30bb",
      "parents": [
        "98248a0e24327bc64eb7518145c44bff7bebebc3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Mar 01 13:18:08 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 09 14:27:54 2012 -0700"
      },
      "message": "rcu: Make rcu_barrier() less disruptive\n\nThe rcu_barrier() primitive interrupts each and every CPU, registering\na callback on every CPU.  Once all of these callbacks have been invoked,\nrcu_barrier() knows that every callback that was registered before\nthe call to rcu_barrier() has also been invoked.\n\nHowever, there is no point in registering a callback on a CPU that\ncurrently has no callbacks, most especially if that CPU is in a\ndeep idle state.  This commit therefore makes rcu_barrier() avoid\ninterrupting CPUs that have no callbacks.  Doing this requires reworking\nthe handling of orphaned callbacks, otherwise callbacks could slip through\nrcu_barrier()\u0027s net by being orphaned from a CPU that rcu_barrier() had\nnot yet interrupted to a CPU that rcu_barrier() had already interrupted.\nThis reworking was needed anyway to take a first step towards weaning\nRCU from the CPU_DYING notifier\u0027s use of stop_cpu().\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": "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": "c57afe80db4e169135eb675acc2d241e26cc064e",
      "tree": "ec011600725a2884efdca6f4c187ea7e3fa4d277",
      "parents": [
        "2ee3dc80660ac8285a37e662fd91b2e45c46f06a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Feb 28 11:02:21 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:55:20 2012 -0700"
      },
      "message": "rcu: Make RCU_FAST_NO_HZ account for pauses out of idle\n\nBoth Steven Rostedt\u0027s new idle-capable trace macros and the RCU_NONIDLE()\nmacro can cause RCU to momentarily pause out of idle without the rest\nof the system being involved.  This can cause rcu_prepare_for_idle()\nto run through its state machine too quickly, which can in turn result\nin needless scheduling-clock interrupts.\n\nThis commit therefore adds code to enable rcu_prepare_for_idle() to\ndistinguish between an initial entry to idle on the one hand (which needs\nto advance the rcu_prepare_for_idle() state machine) and an idle reentry\ndue to idle-capable trace macros and RCU_NONIDLE() on the other hand\n(which should avoid advancing the rcu_prepare_for_idle() state machine).\nAdditional state is maintained to allow the timer to be correctly reposted\nwhen returning after a momentary pause out of idle, and even more state\nis maintained to detect when new non-lazy callbacks have been enqueued\n(which may require re-evaluation of the approach to idleness).\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": "6d8133919bac4270883b24328500875a49e71b36",
      "tree": "eae66c4640e429446ef254e468fafb9ceadb142b",
      "parents": [
        "dabb8aa96020bde8359bc73e76c484dd7ff9b7f2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 23 13:30:16 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:53 2012 -0700"
      },
      "message": "rcu: Document why rcu_blocking_is_gp() is safe\n\nThe rcu_blocking_is_gp() function tests to see if there is only one\nonline CPU, and if so, synchronize_sched() and friends become no-ops.\nHowever, for larger systems, num_online_cpus() scans a large vector,\nand might be preempted while doing so.  While preempted, any number\nof CPUs might come online and go offline, potentially resulting in\nnum_online_cpus() returning 1 when there never had only been one\nCPU online.  This could result in a too-short RCU grace period, which\ncould in turn result in total failure, except that the only way that\nthe grace period is too short is if there is an RCU read-side critical\nsection spanning it.  For RCU-sched and RCU-bh (which are the only\ncases using rcu_blocking_is_gp()), RCU read-side critical sections\nhave either preemption or bh disabled, which prevents CPUs from going\noffline.  This in turn prevents actual failures from occurring.\n\nThis commit therefore adds a large block comment to rcu_blocking_is_gp()\ndocumenting why it is safe.  This commit also moves rcu_blocking_is_gp()\ninto kernel/rcutree.c, which should help prevent unwary developers from\nmistaking it for a generally useful 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\n"
    },
    {
      "commit": "8932a63d5edb02f714d50c26583152fe0a97a69c",
      "tree": "ec71159908f1a78eb21e736d284ffe7ed7584b6c",
      "parents": [
        "d8169d4c369e8aa2fda10df705a4957331b5a4db"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 19 12:20:14 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:52 2012 -0700"
      },
      "message": "rcu: Reduce cache-miss initialization latencies for large systems\n\nCommit #0209f649 (rcu: limit rcu_node leaf-level fanout) set an upper\nlimit of 16 on the leaf-level fanout for the rcu_node tree.  This was\nneeded to reduce lock contention that was induced by the synchronization\nof scheduling-clock interrupts, which was in turn needed to improve\nenergy efficiency for moderate-sized lightly loaded servers.\n\nHowever, reducing the leaf-level fanout means that there are more\nleaf-level rcu_node structures in the tree, which in turn means that\nRCU\u0027s grace-period initialization incurs more cache misses.  This is\nnot a problem on moderate-sized servers with only a few tens of CPUs,\nbut becomes a major source of real-time latency spikes on systems with\nmany hundreds of CPUs.  In addition, the workloads running on these large\nsystems tend to be CPU-bound, which eliminates the energy-efficiency\nadvantages of synchronizing scheduling-clock interrupts.  Therefore,\nthese systems need maximal values for the rcu_node leaf-level fanout.\n\nThis commit addresses this problem by introducing a new kernel parameter\nnamed RCU_FANOUT_LEAF that directly controls the leaf-level fanout.\nThis parameter defaults to 16 to handle the common case of a moderate\nsized lightly loaded servers, but may be set higher on larger systems.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "92c38702e98e58438c3760ebb279c40bbca8bd5f",
      "tree": "775d0078f46b6d9f2fc4d4be83b80e8376a707ba",
      "parents": [
        "0034102808e0dbbf3a2394b82b1bb40b5778de9e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Apr 16 12:12:09 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 17 07:30:54 2012 -0700"
      },
      "message": "rcu: Permit call_rcu() from CPU_DYING notifiers\n\nAs of:\n\n  29494be71afe (\"rcu,cleanup: simplify the code when cpu is dying\")\n\nRCU adopts callbacks from the dying CPU in its CPU_DYING notifier,\nwhich means that any callbacks posted by later CPU_DYING notifiers\nare ignored until the CPU comes back online.\n\nA WARN_ON_ONCE() was added to __call_rcu() by:\n\n  e56014000816 (\"rcu: Simplify offline processing\")\n\nto check for this condition.  Although this condition did not trigger\n(at least as far as I know) during -next testing, it did recently\ntrigger in mainline:\n\n  https://lkml.org/lkml/2012/4/2/34\n\nWhat is needed longer term is for RCU\u0027s CPU_DEAD notifier to adopt any\ncallbacks that were posted by CPU_DYING notifiers, however, the Linux\nkernel has been running with this sort of thing happening for quite\nsome time.  So the only thing that qualifies as a regression is the\nWARN_ON_ONCE(), which this commit removes.\n\nMaking RCU\u0027s CPU_DEAD notifier adopt callbacks posted by CPU_DYING\nnotifiers is a topic for the 3.5 release of the Linux kernel.\n\nReported-by: Sergey Senozhatsky \u003csergey.senozhatsky@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\n"
    },
    {
      "commit": "1cc85961e214773cb7d7f2ccbe3bc644dd466df0",
      "tree": "1ded62f9f4c72a00b5cca2396919ee4c2ec547ec",
      "parents": [
        "696a02cc16b182dd78b1f395ae336f449cc90f11"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Feb 17 13:20:31 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 15:33:34 2012 -0800"
      },
      "message": "rcu: Stop spurious warnings from synchronize_sched_expedited\n\nsynchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT\u003dy\nusers with an unintended warning from the cpu_is_offline() check: use\nraw_smp_processor_id() instead of smp_processor_id() there.\n\nBecause the warning is under a get_online_cpus(), it is not possible\nfor any CPUs to go offline, though it is quite possible that the\ntask might migrate between the raw_smp_processor_id() and the check\nof cpu_is_offline().  This is not a problem because the task cannot\nmigrate from an offline CPU to an online one or vice versa.  The point\nof the check is to verify that synchronize_sched_expedited() is not\ncalled from an offline CPU, for example, from a CPU_DYING notifier, or,\nmore important, from an outgoing CPU making its way from its CPU_DYING\nnotifiers to the idle loop.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.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": "29e37d814188ac8d60f2120583704d3ef6d634b4",
      "tree": "1619796097a7aead2c9bec3ba10a8b84f2643013",
      "parents": [
        "ce5df97be530e4746bf9a4ac14589a1cfdfd8efc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 17 16:55:56 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:12 2012 -0800"
      },
      "message": "rcu: Allow nesting of rcu_idle_enter() and rcu_idle_exit()\n\nUse of RCU in the idle loop is incorrect, quite a few instances of\njust that have made their way into mainline, primarily event tracing.\nThe problem with RCU read-side critical sections on CPUs that RCU believes\nto be idle is that RCU is completely ignoring the CPU, along with any\nattempts and RCU read-side critical sections.\n\nThe approaches of eliminating the offending uses and of pushing the\ndefinition of idle down beyond the offending uses have both proved\nimpractical.  The new approach is to encapsulate offending uses of RCU\nwith rcu_idle_exit() and rcu_idle_enter(), but this requires nesting\nfor code that is invoked both during idle and and during normal execution.\nTherefore, this commit modifies rcu_idle_enter() and rcu_idle_exit() to\npermit nesting.\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\nAcked-by: Deepthi Dharwar \u003cdeepthi@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "236fefafe5d3d34b78ed2ccf5510909716112326",
      "tree": "9ff5ec129e59667341aa07120720b6e4a5ced4d9",
      "parents": [
        "2036d94a7b61ca5032ce90f2bda06afec0fe713e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 31 14:00:41 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:08 2012 -0800"
      },
      "message": "rcu: Call out dangers of expedited RCU primitives\n\nThe expedited RCU primitives can be quite useful, but they have some\nhigh costs as well.  This commit updates and creates docbook comments\ncalling out the costs, and updates the RCU documentation as well.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2036d94a7b61ca5032ce90f2bda06afec0fe713e",
      "tree": "fc9f4b5ba1058e5a2fdf9ccd187766c90f5ae036",
      "parents": [
        "c5fdcec927ee31fc96e92339c3a83ac6e0725289"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jan 30 17:02:47 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:07 2012 -0800"
      },
      "message": "rcu: Rework detection of use of RCU by offline CPUs\n\nBecause newly offlined CPUs continue executing after completing the\nCPU_DYING notifiers, they legitimately enter the scheduler and use\nRCU while appearing to be offline.  This calls for a more sophisticated\napproach as follows:\n\n1.\tRCU marks the CPU online during the CPU_UP_PREPARE phase.\n\n2.\tRCU marks the CPU offline during the CPU_DEAD phase.\n\n3.\tDiagnostics regarding use of read-side RCU by offline CPUs use\n\tRCU\u0027s accounting rather than the cpu_online_map.  (Note that\n\t__call_rcu() still uses cpu_online_map to detect illegal\n\tinvocations within CPU_DYING notifiers.)\n\n4.\tOffline CPUs are prevented from hanging the system by\n\tforce_quiescent_state(), which pays attention to cpu_online_map.\n\tSome additional work (in a later commit) will be needed to\n\tguarantee that force_quiescent_state() waits a full jiffy before\n\tassuming that a CPU is offline, for example, when called from\n\tidle entry.  (This commit also makes the one-jiffy wait\n\texplicit, since the old-style implicit wait can now be defeated\n\tby RCU_FAST_NO_HZ and by rcutorture.)\n\nThis approach avoids the false positives encountered when attempting to\nuse more exact classification of CPU online/offline state.\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": "3d3b7db0a22085cfc05c3318b9874f7fb8266d18",
      "tree": "7f6a080ca64f8a07dd058c2771b983c602fd1a65",
      "parents": [
        "c0d6d01bffdce19fa19baad6cb8cc3eed7bfd6f5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jan 23 17:05:46 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:04 2012 -0800"
      },
      "message": "rcu: Move synchronize_sched_expedited() to rcutree.c\n\nNow that TREE_RCU and TREE_PREEMPT_RCU no longer do anything different\nfor the single-CPU case, there is no need for multiple definitions of\nsynchronize_sched_expedited().  It is no longer in any sense a plug-in,\nso move it from kernel/rcutree_plugin.h to kernel/rcutree.c.\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": "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": "a858af2875fb291d0f4b0a4419fefbf03c2379c0",
      "tree": "5183796cbf50ec0cd3bd5c741db15705376dacbd",
      "parents": [
        "13cfcca0e4e2d4cee1d0183c049eb34e54ac976e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jan 16 13:29:10 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:49 2012 -0800"
      },
      "message": "rcu: Print scheduling-clock information on RCU CPU stall-warning messages\n\nThere have been situations where RCU CPU stall warnings were caused by\nissues in scheduling-clock timer initialization.  To make it easier to\ntrack these down, this commit causes the RCU CPU stall-warning messages\nto print out the number of scheduling-clock interrupts taken in the\ncurrent grace period for each stalled CPU.\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": "13cfcca0e4e2d4cee1d0183c049eb34e54ac976e",
      "tree": "2aa48f0db717ae7741602022e4020f22cc3cea7f",
      "parents": [
        "27565d64a4e564e72c22d8c91a3cfcb9442383e8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jan 13 15:32:18 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:48 2012 -0800"
      },
      "message": "rcu: Set RCU CPU stall times via sysfs\n\nThe default CONFIG_RCU_CPU_STALL_TIMEOUT value of 60 seconds has served\nLinux users well for production use for quite some time.  However, for\ndebugging, there will be more than three minutes between subsequent\nstall-warning messages.  This can be an annoyingly long wait if you\nare trying to work out where the offending infinite loop is hiding.\n\nTherefore, this commit provides a rcu_cpu_stall_timeout sysfs\nparameter that may be adjusted at boot time and at runtime to speed\nup debugging.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "27565d64a4e564e72c22d8c91a3cfcb9442383e8",
      "tree": "699319f63f6c1cddc04ce85e77b3718361bbe03f",
      "parents": [
        "5e1ee6e1016763812018bf5c5e966992821dc47e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 12 19:35:08 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:47 2012 -0800"
      },
      "message": "rcu: Remove #ifdef CONFIG_SMP from TREE_RCU\n\nNow that both TINY_RCU and TINY_PREEMPT_RCU have been in place for awhile,\nit is time to remove UP support from TREE_RCU, which is what this commit\ndoes.\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": "c44e2cddacc2cf299186bad5697d738ea19668b7",
      "tree": "5346f0dbee43202bf4049e3cda955f3d0cf97cfb",
      "parents": [
        "30fbcc90b02187c55c57ff0ecf57cecbd487d694"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 12 13:08:18 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:45 2012 -0800"
      },
      "message": "rcu: Check for idle-loop entry while in RCU read-side critical section\n\nThe inner idle loop is an extended quiescent state for all flavors\nof RCU, but there have been recent bug involving use of RCU read-side\nprimitives from within the idle loop.  Therefore, this commit enlists\nlockdep-RCU to detect attempts to enter the inner idle loop while in\nan RCU read-side critical section, emitting a lockdep-RCU splat if so.\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": "30fbcc90b02187c55c57ff0ecf57cecbd487d694",
      "tree": "866824e1972d900ceda045c93a3958c74ffbf1e9",
      "parents": [
        "1aa03f1188f7b0b85df2de602b33ee7b6fab8e00"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 12 11:01:14 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:44 2012 -0800"
      },
      "message": "rcu: Clean up straggling rcu_preempt_needs_cpu() name\n\nThe recent updates to RCU_CPU_FAST_NO_HZ have an rcu_needs_cpu() that\ndoes more than just check for callbacks, so get the name for\nrcu_preempt_needs_cpu() consistent with that change, now calling it\nrcu_preempt_cpu_has_callbacks().\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": "f38bd1020f797694b6b5e06f5f06c87688fc84c0",
      "tree": "3239e0ca21784cf3109933e35db81e2f451a0f8c",
      "parents": [
        "a50c3af910e06f35bc0c68f89d8fef98c0fec0ea"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jan 11 11:34:50 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:38 2012 -0800"
      },
      "message": "rcu: Remove single-rcu_node optimization in rcu_start_gp()\n\nThe grace-period initialization sequence in rcu_start_gp() has a special\ncase for systems where the rcu_node tree is a single rcu_node structure.\nThis made sense some years ago when systems were smaller and up to 64\nCPUs could share a single rcu_node structure, but now that large systems\nare common and a given leaf rcu_node structure can support only 16 CPUs\n(due to lock contention on the rcu_node\u0027s -\u003elock field), this optimization\nis almost never taken.  And even the small mobile platforms that might\nmake use of it might rather have the kernel text reduction.\n\nTherefore, this commit removes the check for single-rcu_node trees.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a50c3af910e06f35bc0c68f89d8fef98c0fec0ea",
      "tree": "bbd86e30567d25dcea2faedf5990d8d0453465aa",
      "parents": [
        "8146c4e2e2c1972216afece5c50e072e86120e42"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jan 10 17:52:31 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:37 2012 -0800"
      },
      "message": "rcu: Don\u0027t make callbacks go through second full grace period\n\nRCU\u0027s current CPU-offline code path dumps all of the outgoing CPU\u0027s\ncallbacks onto the RCU_NEXT_TAIL portion of the surviving CPU\u0027s\ncallback list.  This means that all the ready-to-invoke callbacks from\nthe outgoing CPU must wait for another full RCU grace period.  This was\njust fine when CPU-hotplug events were rare, but there is increasing\nevidence that users are planning to make increasing use of CPU hotplug.\n\nTherefore, this commit changes the callback-dumping procedure so that\ncallbacks that are ready to invoke are moved to the RCU_DONE_TAIL\nportion of the surviving CPU\u0027s callback list.  This avoids running\nthese callbacks through a second unnecessary grace period.\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": "8146c4e2e2c1972216afece5c50e072e86120e42",
      "tree": "df8707527f59534595edb0be4f69255d4dff40c8",
      "parents": [
        "778d250a29224795e6320b58928bafa6b6104a06"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jan 10 14:23:29 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:37 2012 -0800"
      },
      "message": "rcu: Check for callback invocation from offline CPUs\n\nBecause quiescent states are now reported from offline CPUs in\nCPU_DYING state, there is some possibility that such a CPU might\nnote the end of a grace period and attempt to start invoking\ncallbacks.  This would be a very bad thing, and is supposed to\nbe prevented by the fact that the CPU_DYING CPU gets rid of all\nits callbacks before reporting the quiescent state.  However,\nthere is other CPU-offline code in the kernel, and it is quite\npossible that someone will invoke RCU core processing from that\ncode.  Therefore, this commit adds a warning for this case.\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": "e5601400081651060a59bd1f45f2821bb8e97f95",
      "tree": "391e7e0b08d8b642eca260950c7f052832411aa9",
      "parents": [
        "ae1f18e480c83d15539fb234a2dc5f0aa04cb119"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Jan 07 11:03:57 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:34 2012 -0800"
      },
      "message": "rcu: Simplify offline processing\n\nMove -\u003eqsmaskinit and blkd_tasks[] manipulation to the CPU_DYING\nnotifier.  This simplifies the code by eliminating a potential\ndeadlock and by reducing the responsibilities of force_quiescent_state().\nAlso rename functions to make their connection to the CPU-hotplug\nstages explicit.\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": "0bb7b59d6e2b8440cd7097097dd4bbfc4d76ed07",
      "tree": "f0f36a0a5b6ea4ffd1a43e0c7bb5e90803076746",
      "parents": [
        "fe15d706cfc1cb321dbe2329b04b5ca185edff60"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 05 14:44:39 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:24 2012 -0800"
      },
      "message": "rcu: Add diagnostic for misaligned rcu_head structures\n\nThe push for energy efficiency will require that RCU tag rcu_head\nstructures to indicate whether or not their invocation is time critical.\nThis tagging is best carried out in the bottom bits of the -\u003enext\npointers in the rcu_head structures.  This tagging requires that the\nrcu_head structures be properly aligned, so this commit adds the required\ndiagnostics.\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": "fe15d706cfc1cb321dbe2329b04b5ca185edff60",
      "tree": "bec14ab52167f4f0210e8c207c93922c8270402f",
      "parents": [
        "18fec7d8758dd416904da205375e6fa667defc80"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jan 04 13:30:33 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:23 2012 -0800"
      },
      "message": "rcu: Add lockdep-RCU checks for simple self-deadlock\n\nIt is illegal to have a grace period within a same-flavor RCU read-side\ncritical section, so this commit adds lockdep-RCU checks to splat when\nsuch abuse is encountered.  This commit does not detect more elaborate\nRCU deadlock situations.  These situations might be a job for lockdep\nenhancements.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4968c300e1fa5389fdf1f1ebd8b8e4aec9aa4a9e",
      "tree": "3424a8c3d2543096acad7319ec57fa8f62813620",
      "parents": [
        "101db7b41d8d6c070278bca1f7bce814ecbf781d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Dec 07 16:32:40 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:22 2011 -0800"
      },
      "message": "rcu: Augment rcu_batch_end tracing for idle and callback state\n\nThe current rcu_batch_end event trace records only the name of the RCU\nflavor and the total number of callbacks that remain queued on the\ncurrent CPU.  This is insufficient for testing and tuning the new\ndyntick-idle RCU_FAST_NO_HZ code, so this commit adds idle state along\nwith whether or not any of the callbacks that were ready to invoke\nat the beginning of rcu_do_batch() are still queued.\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": "2d1dc9a600edf33321bcdc1c808b7957d8a3f3e1",
      "tree": "7b3701752afca2f0b3a80bbee901affa7c72a67c",
      "parents": [
        "f23f7fa1c8effca19b52b98fc71016109d21db59"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Nov 30 17:29:18 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:11 2011 -0800"
      },
      "message": "rcu: Remove redundant rcu_cpu_stall_suppress declaration\n\nNo point in having two identical rcu_cpu_stall_suppress declarations,\nso remove the more obscure of the two.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "dff1672d9199fffddb58fa7970ccf59005fc35f3",
      "tree": "a9740f65dfc203d183cb06ce0faeed0de5cef58b",
      "parents": [
        "facc4e159672b4ed10aa18147bfa187b013c9505"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Nov 29 15:57:13 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:09 2011 -0800"
      },
      "message": "rcu: Keep invoking callbacks if CPU otherwise idle\n\nThe rcu_do_batch() function that invokes callbacks for TREE_RCU and\nTREE_PREEMPT_RCU normally throttles callback invocation to avoid degrading\nscheduling latency.  However, as long as the CPU would otherwise be idle,\nthere is no downside to continuing to invoke any callbacks that have passed\nthrough their grace periods.  In fact, processing such callbacks in a\ntimely manner has the benefit of increasing the probability that the\nCPU can enter the power-saving dyntick-idle mode.\n\nTherefore, this commit allows callback invocation to continue beyond the\npreset limit as long as the scheduler does not have some other task to\nrun and as long as context is that of the idle task or the relevant\nRCU kthread.\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": "facc4e159672b4ed10aa18147bfa187b013c9505",
      "tree": "0b058683e1dde49a73b858fc29477e6f76860add",
      "parents": [
        "b6fc6020140db437069d5bec447858fcfd64d31c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Nov 28 16:26:56 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:08 2011 -0800"
      },
      "message": "rcu: Irq nesting is always 0 on rcu_enter_idle_common\n\nBecause tasks don\u0027t nest, the -\u003edyntick_nesting must always be zero upon\nentry to rcu_idle_enter_common().  Therefore, pass \"0\" rather than the\ncounter itself.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b6fc6020140db437069d5bec447858fcfd64d31c",
      "tree": "43b4f6aa420bd636a30116443f2417cd2176a679",
      "parents": [
        "7cb92499000e3c86dae653077b1465458a039ef6"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Nov 28 16:18:56 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:07 2011 -0800"
      },
      "message": "rcu: Don\u0027t check irq nesting from rcu idle entry/exit\n\nBecause tasks do not nest, rcu_idle_enter() and rcu_idle_exit() do\nnot need to check for nesting.  This commit therefore moves nesting\nchecks from rcu_idle_enter_common() to rcu_irq_exit() and from\nrcu_idle_exit_common() to rcu_irq_enter().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7cb92499000e3c86dae653077b1465458a039ef6",
      "tree": "ebc982a5cc562b4fe0cb8f20541f45a5506a0b5f",
      "parents": [
        "3842a0832a1d6eb0b31421f8810a813135967512"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Nov 28 12:28:34 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:07 2011 -0800"
      },
      "message": "rcu: Permit dyntick-idle with callbacks pending\n\nThe current implementation of RCU_FAST_NO_HZ prevents CPUs from entering\ndyntick-idle state if they have RCU callbacks pending.  Unfortunately,\nthis has the side-effect of often preventing them from entering this\nstate, especially if at least one other CPU is not in dyntick-idle state.\nHowever, the resulting per-tick wakeup is wasteful in many cases: if the\nCPU has already fully responded to the current RCU grace period, there\nwill be nothing for it to do until this grace period ends, which will\nfrequently take several jiffies.\n\nThis commit therefore permits a CPU that has done everything that the\ncurrent grace period has asked of it (rcu_pending() \u003d\u003d 0) even if it\nstill as RCU callbacks pending.  However, such a CPU posts a timer to\nwake it up several jiffies later (6 jiffies, based on experience with\ngrace-period lengths).  This wakeup is required to handle situations\nthat can result in all CPUs being in dyntick-idle mode, thus failing\nto ever complete the current grace period.  If a CPU wakes up before\nthe timer goes off, then it cancels that timer, thus avoiding spurious\nwakeups.\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"
    }
  ],
  "next": "f0e7c19db8798b4b991a2c71911e71f5dfdb348f"
}
