)]}'
{
  "log": [
    {
      "commit": "6bfc09e2327dfbffc312004c16188dbf8dfb0297",
      "tree": "f36ac34ec671ea5eaa926ebabba8486bbda9c175",
      "parents": [
        "1b0048a44c502c5ab850203e6e0a6498d7d8676d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Oct 19 12:49:17 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jan 28 22:06:21 2013 -0800"
      },
      "message": "rcu: Provide RCU CPU stall warnings for tiny RCU\n\nTiny RCU has historically omitted RCU CPU stall warnings in order to\nreduce memory requirements, however, lack of these warnings caused\nThomas Gleixner some debugging pain recently.  Therefore, this commit\nadds RCU CPU stall warnings to tiny RCU if RCU_TRACE\u003dy.  This keeps\nthe memory footprint small, while still enabling CPU stall warnings\nin kernels built to enable them.\n\nUpdated to include Josh Triplett\u0027s suggested use of RCU_STALL_COMMON\nconfig variable to simplify #if expressions.\n\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\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": "3705b88db0d7cc4a097c32d9e554054103d3f807",
      "tree": "f3baf8c94363506964c9f944496267f74cdee47c",
      "parents": [
        "ba49df4767d4fa5bbd2af3a51709fb81f94264ec"
      ],
      "author": {
        "name": "Antti P Miettinen",
        "email": "ananaza@iki.fi",
        "time": "Fri Oct 05 09:59:15 2012 +0300"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:54:08 2012 -0700"
      },
      "message": "rcu: Add a module parameter to force use of expedited RCU primitives\n\nThere have been some embedded applications that would benefit from\nuse of expedited grace-period primitives.  In some ways, this is\nsimilar to synchronize_net() doing either a normal or an expedited\ngrace period depending on lock state, but with control outside of\nthe kernel.\n\nThis commit therefore adds rcu_expedited boot and sysfs parameters\nthat cause the kernel to substitute expedited primitives for the\nnormal grace-period primitives.\n\n[ paulmck: Add trace/event/rcu.h to kernel/srcu.c to avoid build error.\n\t   Get rid of infinite loop through contention path.]\n\nSigned-off-by: Antti P Miettinen \u003camiettinen@nvidia.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7a11e2058f02feb6884efb067f328012c318a13f",
      "tree": "a0e2694a5ea94bc670de640a2631545517201868",
      "parents": [
        "fdab649b1aa732cd6e79654349088465cdff49af"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Aug 21 12:14:19 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Move TINY_PREEMPT_RCU away from raw_local_irq_save()\n\nThe use of raw_local_irq_save() is unnecessary, given that local_irq_save()\nreally does disable interrupts.  Also, it appears to interfere with lockdep.\nTherefore, this commit moves to local_irq_save().\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.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: Fengguang Wu \u003cfengguang.wu@intel.com\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": "28f8555364ef5b54b21251c5c8022109a70626e9",
      "tree": "a04625ef3732a0f758bde40ebde8f8d790da5575",
      "parents": [
        "bf1304e9cd755be7814ac8365834b7a1d0f06b58"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu May 10 15:37:48 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:42 2012 -0700"
      },
      "message": "rcu: The rcu_needs_cpu() function is not a quiescent state\n\nThe TINY_PREEMPT_RCU() function rcu_preempt_needs_cpu(), which is called\nfrom rcu_needs_cpu(), assumes that it is in a quiescent state with respect\nto the CPU.  This is no longer the case.  This commit therefore updates\nrcu_preempt_needs_cpu() to make it aware that it is not running in a\nquiescent 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\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Pascal Chapperon \u003cpascal.chapperon@wanadoo.fr\u003e\n"
    },
    {
      "commit": "2a3fa843b555d202e682bf08c65ee1a4a93c79cf",
      "tree": "b7db689ab83f041319b80493b12a8f7ecc79ad0f",
      "parents": [
        "e9023c4061054cbf59c5288068118a4d0b152f01"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 21 11:58:36 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Consolidate tree/tiny __rcu_read_{,un}lock() implementations\n\nThe CONFIG_TREE_PREEMPT_RCU and CONFIG_TINY_PREEMPT_RCU versions of\n__rcu_read_lock() and __rcu_read_unlock() are identical, so this commit\nconsolidates them into kernel/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9dd8fb16c36178df2066387d2abd44d8b4dca8c8",
      "tree": "330ac5704044c12bcc94ec6bf96dbb27d1057f5d",
      "parents": [
        "616c310e83b872024271c915c1b9ab505b9efad9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Apr 13 12:54:22 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 02 14:48:27 2012 -0700"
      },
      "message": "rcu: Make exit_rcu() more precise and consolidate\n\nWhen running preemptible RCU, if a task exits in an RCU read-side\ncritical section having blocked within that same RCU read-side critical\nsection, the task must be removed from the list of tasks blocking a\ngrace period (perhaps the current grace period, perhaps the next grace\nperiod, depending on timing).  The exit() path invokes exit_rcu() to\ndo this cleanup.\n\nHowever, the current implementation of exit_rcu() needlessly does the\ncleanup even if the task did not block within the current RCU read-side\ncritical section, which wastes time and needlessly increases the size\nof the state space.  Fix this by only doing the cleanup if the current\ntask is actually on the list of tasks blocking some grace period.\n\nWhile we are at it, consolidate the two identical exit_rcu() functions\ninto a single function.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nConflicts:\n\n\tkernel/rcupdate.c\n"
    },
    {
      "commit": "1aa03f1188f7b0b85df2de602b33ee7b6fab8e00",
      "tree": "20ee8fc1aa5bccc8d8cf53c705d9cc766058eaf5",
      "parents": [
        "8762705ad4ac860bb78434409df463d02ac8f027"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 11 17:25:17 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:43 2012 -0800"
      },
      "message": "rcu: Simplify unboosting checks\n\nThis is a port of commit #82e78d80 from TREE_PREEMPT_RCU to\nTINY_PREEMPT_RCU.\n\nThis commit uses the fact that current-\u003ercu_boost_mutex is set\nany time that the RCU_READ_UNLOCK_BOOSTED flag is set in the\ncurrent-\u003ercu_read_unlock_special bitmask.  This allows tests of\nthe bit to be changed to tests of the pointer, which in turn allows\nthe RCU_READ_UNLOCK_BOOSTED flag to be eliminated.\n\nPlease note that the check of current-\u003ercu_read_unlock_special need not\nchange because any time that RCU_READ_UNLOCK_BOOSTED was set, so was\nRCU_READ_UNLOCK_BLOCKED.  Therefore, __rcu_read_unlock() can continue\ntesting current-\u003ercu_read_unlock_special for non-zero, as before.\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": "8762705ad4ac860bb78434409df463d02ac8f027",
      "tree": "bee2328400565018e85c262d93f857cc497b72c1",
      "parents": [
        "768dfffdffbfcc07d6927bdd642c714c0dd64c99"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 11 16:59:01 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:42 2012 -0800"
      },
      "message": "rcu: Inform RCU of irq_exit() activity\n\nThis is a port to TINY_RCU of Peter Zijlstra\u0027s commit #ec433f0c5\n\nThe rcu_read_unlock_special() function relies on in_irq() to exclude\nscheduler activity from interrupt level.  This fails because exit_irq()\ncan invoke the scheduler after clearing the preempt_count() bits that\nin_irq() uses to determine that it is at interrupt level.  This situation\ncan result in failures as follows:\n\n     $task\t\t\tIRQ\t\tSoftIRQ\n\n     rcu_read_lock()\n\n     /* do stuff */\n\n     \u003cpreempt\u003e |\u003d UNLOCK_BLOCKED\n\n     rcu_read_unlock()\n       --t-\u003ercu_read_lock_nesting\n\n    \t\t\tirq_enter();\n    \t\t\t/* do stuff, don\u0027t use RCU */\n    \t\t\tirq_exit();\n    \t\t\t  sub_preempt_count(IRQ_EXIT_OFFSET);\n    \t\t\t  invoke_softirq()\n\n    \t\t\t\t\tttwu();\n    \t\t\t\t\t  spin_lock_irq(\u0026pi-\u003elock)\n    \t\t\t\t\t  rcu_read_lock();\n    \t\t\t\t\t  /* do stuff */\n    \t\t\t\t\t  rcu_read_unlock();\n    \t\t\t\t\t    rcu_read_unlock_special()\n    \t\t\t\t\t      rcu_report_exp_rnp()\n    \t\t\t\t\t        ttwu()\n    \t\t\t\t\t          spin_lock_irq(\u0026pi-\u003elock) /* deadlock */\n\n       rcu_read_unlock_special(t);\n\nThis can be triggered \u0027easily\u0027 because invoke_softirq() immediately does\na ttwu() of ksoftirqd/# instead of doing the in-place softirq stuff first,\nbut even without that the above happens.\n\nCure this by also excluding softirqs from the rcu_read_unlock_special()\nhandler and ensuring the force_irqthreads ksoftirqd/# wakeup is done\nfrom full softirq context.\n\nIt is also necessary to delay the -\u003ercu_read_lock_nesting decrement until\nafter rcu_read_unlock_special().  This delay is handled by the commit\n\"Protect __rcu_read_unlock() against scheduler-using irq handlers\".\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "768dfffdffbfcc07d6927bdd642c714c0dd64c99",
      "tree": "3f559e37c0ff2ae59af963024c0d3595fa3d4b8e",
      "parents": [
        "afef20540f7cd1ea91bc1ac20be238389eee4003"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 11 16:33:17 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:41 2012 -0800"
      },
      "message": "rcu: Prevent RCU callbacks from executing before scheduler initialized\n\nThis is a port of commit #b0d3041 from TREE_RCU to TREE_PREEMPT_RCU.\n\nUnder some rare but real combinations of configuration parameters, RCU\ncallbacks are posted during early boot that use kernel facilities that are\nnot yet initialized.  Therefore, when these callbacks are invoked, hard\nhangs and crashes ensue.  This commit therefore prevents RCU callbacks\nfrom being invoked until after the scheduler is fully up and running,\nas in after multiple tasks have been spawned.\n\nIt might well turn out that a better approach is to identify the specific\nRCU callbacks that are causing this problem, but that discussion will\nwait until such time as someone really needs an RCU callback to be invoked\n(as opposed to merely registered) during early boot.\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": "afef20540f7cd1ea91bc1ac20be238389eee4003",
      "tree": "876449c4304fe57004f3c057777c728ed443113b",
      "parents": [
        "26861faf896a4cfdc4243281e5c305755f4bad52"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jan 11 15:30:36 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:40 2012 -0800"
      },
      "message": "rcu: Streamline code produced by __rcu_read_unlock()\n\nThis is a port of commit #be0e1e21 to TINY_PREEMPT_RCU.  This uses\nnoinline to prevent rcu_read_unlock_special() from being inlined into\n__rcu_read_unlock().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "26861faf896a4cfdc4243281e5c305755f4bad52",
      "tree": "c93082f55b437b3b949b4bf0207d9be1a6fcd1fd",
      "parents": [
        "f38bd1020f797694b6b5e06f5f06c87688fc84c0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 11 14:40:20 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:39 2012 -0800"
      },
      "message": "rcu: Protect __rcu_read_unlock() against scheduler-using irq handlers\n\nThis commit ports commit #10f39bb1b2 (rcu: protect __rcu_read_unlock()\nagainst scheduler-using irq handlers) from TREE_PREEMPT_RCU to\nTINY_PREEMPT_RCU.  The following is a corresponding port of that\ncommit message.\n\nThe addition of RCU read-side critical sections within runqueue and\npriority-inheritance critical sections introduced some deadlocks,\nfor example, involving interrupts from __rcu_read_unlock() where the\ninterrupt handlers call wake_up().  This situation can cause the\ninstance of __rcu_read_unlock() invoked from interrupt to do some\nof the processing that would otherwise have been carried out by the\ntask-level instance of __rcu_read_unlock().  When the interrupt-level\ninstance of __rcu_read_unlock() is called with a scheduler lock held from\ninterrupt-entry/exit situations where in_irq() returns false, deadlock can\nresult.  Of course, in a UP kernel, there are not really any deadlocks,\nbut the upper-level critical section can still be be fatally confused\nby the lower-level critical section changing things out from under it.\n\nThis commit resolves these deadlocks by using negative values of the\nper-task -\u003ercu_read_lock_nesting counter to indicate that an instance of\n__rcu_read_unlock() is in flight, which in turn prevents instances from\ninterrupt handlers from doing any special processing.  Note that nested\nrcu_read_lock()/rcu_read_unlock() pairs are still permitted, but they will\nnever see -\u003ercu_read_lock_nesting go to zero, and will therefore never\ninvoke rcu_read_unlock_special(), thus preventing them from seeing the\nRCU_READ_UNLOCK_BLOCKED bit should it be set in -\u003ercu_read_unlock_special.\nThis patch also adds a check for -\u003ercu_read_unlock_special being negative\nin rcu_check_callbacks(), thus preventing the RCU_READ_UNLOCK_NEED_QS\nbit from being set should a scheduling-clock interrupt occur while\n__rcu_read_unlock() is exiting from an outermost RCU read-side critical\nsection.\n\nOf course, __rcu_read_unlock() can be preempted during the time that\n-\u003ercu_read_lock_nesting is negative.  This could result in the setting\nof the RCU_READ_UNLOCK_BLOCKED bit after __rcu_read_unlock() checks it,\nand would also result it this task being queued on the corresponding\nrcu_node structure\u0027s blkd_tasks list.  Therefore, some later RCU read-side\ncritical section would enter rcu_read_unlock_special() to clean up --\nwhich could result in deadlock (OK, OK, fatal confusion) if that RCU\nread-side critical section happened to be in the scheduler where the\nrunqueue or priority-inheritance locks were held.\n\nTo prevent the possibility of fatal confusion that might result from\npreemption during the time that -\u003ercu_read_lock_nesting is negative,\nthis commit also makes rcu_preempt_note_context_switch() check for\nnegative -\u003ercu_read_lock_nesting, thus refraining from queuing the task\n(and from setting RCU_READ_UNLOCK_BLOCKED) if we are already exiting\nfrom the outermost RCU read-side critical section (in other words,\nwe really are no longer actually in that RCU read-side critical\nsection).  In addition, rcu_preempt_note_context_switch() invokes\nrcu_read_unlock_special() to carry out the cleanup in this case, which\nclears out the -\u003ercu_read_unlock_special bits and dequeues the task\n(if necessary), in turn avoiding needless delay of the current RCU grace\nperiod and needless RCU priority boosting.\n\nIt is still illegal to call rcu_read_unlock() while holding a scheduler\nlock if the prior RCU read-side critical section has ever had both\npreemption and irqs enabled.  However, the common use case is legal,\nnamely where then entire RCU read-side critical section executes with\nirqs disabled, for example, when the scheduler lock is held across the\nentire lifetime of the RCU read-side critical section.\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": "4f89b336fd1edf0c88875d0b7fcdc288c7de903d",
      "tree": "8cadb7d4c326ad01ce7f0da55db8f03af17917e6",
      "parents": [
        "70321d447aa1a7cc2d60db16234f43c5a65630e7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Dec 09 14:43:47 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:33:19 2011 -0800"
      },
      "message": "rcu: Apply ACCESS_ONCE() to rcu_boost() return value\n\nBoth TINY_RCU\u0027s and TREE_RCU\u0027s implementations of rcu_boost() access\nthe -\u003eboost_tasks and -\u003eexp_tasks fields without preventing concurrent\nchanges to these fields.  This commit therefore applies ACCESS_ONCE in\norder to prevent compiler mischief.\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": "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": "bdfa97bf7263657b83bc5b68567a3a60dde84c5b",
      "tree": "9bb8abdef63da8aa324808eb62009eaf732bd40f",
      "parents": [
        "72a59aaada499d9bbf19f2fb68daa37502e4a9bb"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Tue Oct 25 13:13:57 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:13 2011 -0400"
      },
      "message": "kernel: fix up module header handling in rcutiny files\n\nThe file rcutiny.c does not need moduleparam.h header, as\nthere are no modparams in this file.\n\nHowever rcutiny_plugin.h does define a module_init() and\na module_exit() and it uses the various MODULE_ macros, so\nit really does need module.h included.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "965a002b4f1a458c5dcb334ec29f48a0046faa25",
      "tree": "9aa3847fd44b322a73631758e7337632e5e3a32d",
      "parents": [
        "385680a9487d2f85382ad6d74e2a15837e47bfd9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Jun 18 09:55:39 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:20 2011 -0700"
      },
      "message": "rcu: Make TINY_RCU also use softirq for RCU_BOOST\u003dn\n\nThis patch #ifdefs TINY_RCU kthreads out of the kernel unless RCU_BOOST\u003dy,\nthus eliminating context-switch overhead if RCU priority boosting has\nnot been configured.\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": "e99033c5c160f1f247c665923a66acec693a967c",
      "tree": "c5b0863ad4b673134070872a159055237186f0fe",
      "parents": [
        "300df91ca9358f7f09298eec9503c12b32054ef7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 21 00:13:44 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:14 2011 -0700"
      },
      "message": "rcu: Put names into TINY_RCU structures under RCU_TRACE\n\nIn order to allow event tracing to distinguish between flavors of\nRCU, we need those names in the relevant RCU data structures.  TINY_RCU\nhas avoided them for memory-footprint reasons, so add them only if\nCONFIG_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\n"
    },
    {
      "commit": "2c42818e962e2858334bf45bfc56662b3752df34",
      "tree": "192364123c9aeeab282c53168e51eddece9d8be4",
      "parents": [
        "f039d1f1884b2fe9c13d28f59d8330f0b0518fc4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 26 22:14:36 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:42 2011 -0700"
      },
      "message": "rcu: Abstract common code for RCU grace-period-wait primitives\n\nPull the code that waits for an RCU grace period into a single function,\nwhich is then called by synchronize_rcu() and friends in the case of\nTREE_RCU and TREE_PREEMPT_RCU, and from rcu_barrier() and friends in\nthe case of TINY_RCU and TINY_PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7e8b4c72344e0d904b0e3fa9fd2eb116f04b3d41",
      "tree": "29107484a66472f20fb9f8c40590aece0a5469c2",
      "parents": [
        "203373c81b83e98da82836c4b8b5dd1e6fc9011f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 24 19:26:21 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:58 2011 -0700"
      },
      "message": "rcu: Converge TINY_RCU expedited and normal boosting\n\nThis applies a trick from TREE_RCU boosting to TINY_RCU, eliminating\ncode and adding comments.  The key point is that it is possible for\nthe booster thread itself to work out whether there is a normal or\nexpedited boost required based solely on local information.  There\nis therefore no need for boost initiation to know or care what type\nof boosting is required.  In addition, when boosting is complete for\na given grace period, then by definition there cannot be any more\nboosting for that grace period.  This allows eliminating yet more\nstate and statistics.\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": "203373c81b83e98da82836c4b8b5dd1e6fc9011f",
      "tree": "78e11ef799f6036ac5c9b664e5af4c10dbd6f4a2",
      "parents": [
        "ddeb75814f09205df795121d9e373e82de7f2aca"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 24 15:25:21 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:58 2011 -0700"
      },
      "message": "rcu: remove useless -\u003eboosted_this_gp field\n\nThe -\u003eboosted_this_gp field is a holdover from an earlier design that\nwas to carry out multiple boost operations in parallel.  It is not required\nby the current design, which boosts one task at a time.\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": "ddeb75814f09205df795121d9e373e82de7f2aca",
      "tree": "d642fc3753308a76846418a4a020a9d851781a4b",
      "parents": [
        "f0a07aeaf8935b7e9ef8032ce6546169f143951c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Feb 23 17:03:06 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:58 2011 -0700"
      },
      "message": "rcu: code cleanups in TINY_RCU priority boosting.\n\nExtraneous semicolon, bad comment, and fold INIT_LIST_HEAD() into\nlist_del() to get list_del_init().\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": "ba74f4d7e5125d04d453b4af69c53c533e6feb80",
      "tree": "ca8f76842b902133c36f0a7b2e810963799c1b5f",
      "parents": [
        "cb600d2f83c854ec3d6660063e4466431999489b"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sun Jan 09 18:09:51 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Mar 04 08:05:08 2011 -0800"
      },
      "message": "rcu: call __rcu_read_unlock() in exit_rcu for tiny RCU\n\nUsing __rcu_read_lock() in place of rcu_read_lock() leaves any debug\nstate as it really should be, namely with the lock still held.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e940cc804ec212e483f91167b93d1740c2fd3415",
      "tree": "9164029ed43f5884b84b72a72bf9049e013d8de9",
      "parents": [
        "8e79e1f9615b83d1e1d26b328d1b776111ca0cf7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Nov 04 14:55:26 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:56 2010 -0800"
      },
      "message": "rcu: Distinguish between boosting and boosted\n\nRCU priority boosting\u0027s tracing did not distinguish between ongoing\nboosting and completion of boosting.  This commit therefore adds this\ncapability.\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": "9e571a82f0cb205a65a0ea41657f19f22b7fabb8",
      "tree": "64a83a06e18d0fd82af91560a2bf0947e0e3d071",
      "parents": [
        "24278d148316d2180be6df40e06db013d8b232b8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 30 21:26:52 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:55 2010 -0800"
      },
      "message": "rcu: add tracing for TINY_RCU and TINY_PREEMPT_RCU\n\nAdd tracing for the tiny RCU implementations, including statistics on\nboosting in the case of TINY_PREEMPT_RCU and RCU_BOOST.\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": "24278d148316d2180be6df40e06db013d8b232b8",
      "tree": "6a579d483f8f799b352e39b972a7e03cc6204fc1",
      "parents": [
        "b2c0710c464ede15e1fc52fb1e7ee9ba54cea186"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Sep 27 17:25:23 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:54 2010 -0800"
      },
      "message": "rcu: priority boosting for TINY_PREEMPT_RCU\n\nAdd priority boosting, but only for TINY_PREEMPT_RCU.  This is enabled\nby the default-off RCU_BOOST kernel parameter.  The priority to which to\nboost preempted RCU readers is controlled by the RCU_BOOST_PRIO kernel\nparameter (defaulting to real-time priority 1) and the time to wait\nbefore boosting the readers blocking a given grace period is controlled\nby the RCU_BOOST_DELAY kernel parameter (defaulting to 500 milliseconds).\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": "b2c0710c464ede15e1fc52fb1e7ee9ba54cea186",
      "tree": "7524518fec8a02e53c3fab558b40a5e94f0bb5ec",
      "parents": [
        "8e8be45e8e55daa381028aec339829929ddb53a5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 09 13:40:39 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Nov 17 15:45:09 2010 -0800"
      },
      "message": "rcu: move TINY_RCU from softirq to kthread\n\nIf RCU priority boosting is to be meaningful, callback invocation must\nbe boosted in addition to preempted RCU readers.  Otherwise, in presence\nof CPU real-time threads, the grace period ends, but the callbacks don\u0027t\nget invoked.  If the callbacks don\u0027t get invoked, the associated memory\ndoesn\u0027t get freed, so the system is still subject to OOM.\n\nBut it is not reasonable to priority-boost RCU_SOFTIRQ, so this commit\nmoves the callback invocations to a kthread, which can be boosted easily.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "dd7c4d89730a1be2c1d361a8ae1f0fe9465ccf9c",
      "tree": "fa4c50a0e70255ab222dcdf00b36d36a9a1fb92d",
      "parents": [
        "2c96c7751d2bb822542b03ddfaca70933f5aaf02"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 27 10:51:17 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 27 10:51:17 2010 -0700"
      },
      "message": "rcu: performance fixes to TINY_PREEMPT_RCU callback checking\n\nThis commit tightens up checks in rcu_preempt_check_callbacks() to avoid\nunnecessary special handling at rcu_read_unlock() time.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a3dc3fb161f9b4066c0fce22db72638af8baf83b",
      "tree": "e41a30edd7e4965807b199da7637a6d6e44d4ed1",
      "parents": [
        "53d84e004d5e8c018be395c4330dc72fd60bd13e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 13 16:16:25 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:13 2010 -0700"
      },
      "message": "rcu: repair code-duplication FIXMEs\n\nCombine the duplicate definitions of ULONG_CMP_GE(), ULONG_CMP_LT(),\nand rcu_preempt_depth() into include/linux/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a57eb940d130477a799dfb24a570ee04979c0f7f",
      "tree": "5add1c135a302cf1c1a454b0620ed17eb802923b",
      "parents": [
        "4d87ffadbba88105f33271bef5f2c79366c6a4e1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 29 16:49:16 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 08:55:00 2010 -0700"
      },
      "message": "rcu: Add a TINY_PREEMPT_RCU\n\nImplement a small-memory-footprint uniprocessor-only implementation of\npreemptible RCU.  This implementation uses but a single blocked-tasks\nlist rather than the combinatorial number used per leaf rcu_node by\nTREE_PREEMPT_RCU, which reduces memory consumption and greatly simplifies\nprocessing.  This version also takes advantage of uniprocessor execution\nto accelerate grace periods in the case where there are no readers.\n\nThe general design is otherwise broadly similar to that of TREE_PREEMPT_RCU.\n\nThis implementation is a step towards having RCU implementation driven\noff of the SMP and PREEMPT kernel configuration variables, which can\nhappen once this implementation has accumulated sufficient experience.\n\nRemoved ACCESS_ONCE() from __rcu_read_unlock() and added barrier() as\nsuggested by Steve Rostedt in order to avoid the compiler-reordering\nissue noted by Mathieu Desnoyers (http://lkml.org/lkml/2010/8/16/183).\n\nAs can be seen below, CONFIG_TINY_PREEMPT_RCU represents almost 5Kbyte\nsavings compared to CONFIG_TREE_PREEMPT_RCU.  Of course, for non-real-time\nworkloads, CONFIG_TINY_RCU is even better.\n\n\tCONFIG_TREE_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   6170\t    825\t     28\t   7023\t   kernel/rcutree.o\n\t\t\t\t   ----\n\t\t\t\t   7026    Total\n\n\tCONFIG_TINY_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   2081\t     81\t      8\t   2170\t   kernel/rcutiny.o\n\t\t\t\t   ----\n\t\t\t\t   2183    Total\n\n\tCONFIG_TINY_RCU (non-preemptible)\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t    719\t     25\t      0\t    744\t   kernel/rcutiny.o\n\t\t\t\t    ---\n\t\t\t\t    757    Total\n\nRequested-by: Loïc Minier \u003cloic.minier@canonical.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bbad937983147c017c25406860287cb94da9af7c",
      "tree": "57311598c360b92b189c7ec337146e4bc779c73d",
      "parents": [
        "25502a6c13745f4650cc59322bd198194f55e796"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 02 16:17:17 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:34 2010 -0700"
      },
      "message": "rcu: slim down rcutiny by removing rcu_scheduler_active and friends\n\nTINY_RCU does not need rcu_scheduler_active unless CONFIG_DEBUG_LOCK_ALLOC.\nSo conditionally compile rcu_scheduler_active in order to slim down\nrcutiny a bit more.  Also gets rid of an EXPORT_SYMBOL_GPL, which is\nresponsible for most of the slimming.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    }
  ]
}
