)]}'
{
  "log": [
    {
      "commit": "83f5b01ffbbaea6f97c9a79d21e240dbfb69f2f1",
      "tree": "e278471f3b9851028ef60e283ce8c73772531d82",
      "parents": [
        "b00bc0b237055b4c45816325ee14f0bd83e6f590"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Oct 28 08:14:49 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 02 16:06:21 2009 +0100"
      },
      "message": "rcu: Fix long-grace-period race between forcing and initialization\n\nVery long RCU read-side critical sections (50 milliseconds or\nso) can cause a race between force_quiescent_state() and\nrcu_start_gp() as follows on kernel builds with multi-level\nrcu_node hierarchies:\n\n1.\tCPU 0 calls force_quiescent_state(), sees that there is a\n\tgrace period in progress, and acquires -\u003efsqlock.\n\n2.\tCPU 1 detects the end of the grace period, and so\n\tcpu_quiet_msk_finish() sets rsp-\u003ecompleted to rsp-\u003egpnum.\n\tThis operation is carried out under the root rnp-\u003elock,\n\tbut CPU 0 has not yet acquired that lock.  Note that\n\trsp-\u003esignaled is still RCU_SAVE_DYNTICK from the last\n\tgrace period.\n\n3.\tCPU 1 calls rcu_start_gp(), but no one wants a new grace\n\tperiod, so it drops the root rnp-\u003elock and returns.\n\n4.\tCPU 0 acquires the root rnp-\u003elock and picks up rsp-\u003ecompleted\n\tand rsp-\u003esignaled, then drops rnp-\u003elock.  It then enters the\n\tRCU_SAVE_DYNTICK leg of the switch statement.\n\n5.\tCPU 2 invokes call_rcu(), and now needs a new grace period.\n\tIt calls rcu_start_gp(), which acquires the root rnp-\u003elock, sets\n\trsp-\u003esignaled to RCU_GP_INIT (too bad that CPU 0 is already in\n\tthe RCU_SAVE_DYNTICK leg of the switch statement!)  and starts\n\tinitializing the rcu_node hierarchy.  If there are multiple\n\tlevels to the hierarchy, it will drop the root rnp-\u003elock and\n\tinitialize the lower levels of the hierarchy.\n\n6.\tCPU 0 notes that rsp-\u003ecompleted has not changed, which permits\n        both CPU 2 and CPU 0 to try updating it concurrently.  If CPU 0\u0027s\n\tupdate prevails, later calls to force_quiescent_state() can\n\tcount old quiescent states against the new grace period, which\n\tcan in turn result in premature ending of grace periods.\n\n\tNot good.\n\nThis patch adds an RCU_GP_IDLE state for rsp-\u003esignaled that is\nset initially at boot time and any time a grace period ends.\nThis prevents CPU 0 from getting into the workings of\nforce_quiescent_state() in step 4.  Additional locking and\nchecks prevent the concurrent update of rsp-\u003esignaled in step 6.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1256742889199-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "237c80c5c8fb7ec128cf2a756b550dc41ad7eac7",
      "tree": "5d6b3346f2c53cd3f7471001479a8dbd741533a3",
      "parents": [
        "019129d595caaa5bd0b41d128308da1be6a91869"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Oct 15 09:26:14 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 15 20:33:01 2009 +0200"
      },
      "message": "rcu: Fix TREE_PREEMPT_RCU CPU_HOTPLUG bad-luck hang\n\nIf the following sequence of events occurs, then\nTREE_PREEMPT_RCU will hang waiting for a grace period to\ncomplete, eventually OOMing the system:\n\no\tA TREE_PREEMPT_RCU build of the kernel is booted on a system\n\twith more than 64 physical CPUs present (32 on a 32-bit system).\n\tAlternatively, a TREE_PREEMPT_RCU build of the kernel is booted\n\twith RCU_FANOUT set to a sufficiently small value that the\n\tphysical CPUs populate two or more leaf rcu_node structures.\n\no\tA task is preempted in an RCU read-side critical section\n\twhile running on a CPU corresponding to a given leaf rcu_node\n\tstructure.\n\no\tAll CPUs corresponding to this same leaf rcu_node structure\n\trecord quiescent states for the current grace period.\n\no\tAll of these same CPUs go offline (hence the need for enough\n\tphysical CPUs to populate more than one leaf rcu_node structure).\n\tThis causes the preempted task to be moved to the root rcu_node\n\tstructure.\n\nAt this point, there is nothing left to cause the quiescent\nstate to be propagated up the rcu_node tree, so the current\ngrace period never completes.\n\nThe simplest fix, especially after considering the deadlock\npossibilities, is to detect this situation when the last CPU is\nofflined, and to set that CPU\u0027s -\u003eqsmask bit in its leaf\nrcu_node structure.  This will cause the next invocation of\nforce_quiescent_state() to end the grace period.\n\nWithout this fix, this hang can be triggered in an hour or so on\nsome machines with rcutorture and random CPU onlining/offlining.\nWith this fix, these same machines pass a full 10 hours of this\nsort of abuse.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c20091015162614.GA19131@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "37c72e56f6b234ea7387ba530434a80abf2658d8",
      "tree": "1c589c3ecdebbe19488359795cde4c55726a63aa",
      "parents": [
        "2bc872036e1c5948b5b02942810bbdd8dbdb9812"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Oct 14 10:15:55 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 15 11:17:16 2009 +0200"
      },
      "message": "rcu: Prevent RCU IPI storms in presence of high call_rcu() load\n\nAs the number of callbacks on a given CPU rises, invoke\nforce_quiescent_state() only every blimit number of callbacks\n(defaults to 10,000), and even then only if no other CPU has\ninvoked force_quiescent_state() in the meantime.\n\nThis should fix the performance regression reported by Nick.\n\nReported-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: jens.axboe@oracle.com\nLKML-Reference: \u003c12555405592133-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "978c0b88146a7f9b364b71b5b83c5b12e7b413d7",
      "tree": "b68bedc40888192d329841a786f3b1214eab91ef",
      "parents": [
        "e74f4c4564455c91a3b4075bb1721993c2a95dda"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 06 21:48:18 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 07 08:11:21 2009 +0200"
      },
      "message": "rcu: Place root rcu_node structure in separate lockdep class\n\nBefore this patch, all of the rcu_node structures were in the same lockdep\nclass, so that lockdep would complain when rcu_preempt_offline_tasks()\nacquired the root rcu_node structure\u0027s lock while holding one of the leaf\nrcu_nodes\u0027 locks.\n\nThis patch changes rcu_init_one() to use a separate\nspin_lock_init() for the root rcu_node structure\u0027s lock than is\nused for that of all of the rest of the rcu_node structures, which\nputs the root rcu_node structure\u0027s lock in its own lockdep class.\n\nSuggested-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12548908983277-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e74f4c4564455c91a3b4075bb1721993c2a95dda",
      "tree": "213f9df0974c6e1e729de207b2c6dd942a39ba8c",
      "parents": [
        "d0ec774cb2599c858be9d923bb873cf6697520d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 06 21:48:17 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 07 08:11:20 2009 +0200"
      },
      "message": "rcu: Make hot-unplugged CPU relinquish its own RCU callbacks\n\nThe current interaction between RCU and CPU hotplug requires that\nRCU block in CPU notifiers waiting for callbacks to drain.\n\nThis can be greatly simplified by having each CPU relinquish its\nown callbacks, and for both _rcu_barrier() and CPU_DEAD notifiers\nto adopt all callbacks that were previously relinquished.\n\nThis change also eliminates the possibility of certain types of\nhangs due to the previous practice of waiting for callbacks to be\ninvoked from within CPU notifiers.  If you don\u0027t every wait, you\ncannot hang.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1254890898456-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d0ec774cb2599c858be9d923bb873cf6697520d8",
      "tree": "0897fd843622033a6db6ab43167e47c3236aa22d",
      "parents": [
        "322a2c100a8998158445599ea437fb556aa95b11"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 06 21:48:16 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 07 08:11:20 2009 +0200"
      },
      "message": "rcu: Move rcu_barrier() to rcutree\n\nMove the existing rcu_barrier() implementation to rcutree.c,\nconsistent with the fact that the rcu_barrier() implementation is\ntied quite tightly to the RCU implementation.\n\nThis opens the way to simplify and fix rcutree.c\u0027s rcu_barrier()\nimplementation in a later patch.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12548908982563-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a0b6c9a78c41dc36732d6e1e90f0f2f57b29816f",
      "tree": "4e68c76c95a74e1c8f3360c10e2c3496b7a7df0d",
      "parents": [
        "3d76c082907e8f83c5d5c4572f38d53ad8f00c4b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 28 07:46:33 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 21:02:04 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett, part 4\n\nThese issues identified during an old-fashioned face-to-face code\nreview extending over many hours.  This group improves an existing\nabstraction and introduces two new ones.  It also fixes an RCU\nstall-warning bug found while making the other changes.\n\no\tMake RCU_INIT_FLAVOR() declare its own variables, removing\n\tthe need to declare them at each call site.\n\no\tCreate an rcu_for_each_leaf() macro that scans the leaf\n\tnodes of the rcu_node tree.\n\no\tCreate an rcu_for_each_node_breadth_first() macro that does\n\ta breadth-first traversal of the rcu_node tree, AKA\n\tstepping through the array in index-number order.\n\no\tIf all CPUs corresponding to a given leaf rcu_node\n\tstructure go offline, then any tasks queued on that leaf\n\twill be moved to the root rcu_node structure.  Therefore,\n\tthe stall-warning code must dump out tasks queued on the\n\troot rcu_node structure as well as those queued on the leaf\n\trcu_node structures.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12541491934126-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3d76c082907e8f83c5d5c4572f38d53ad8f00c4b",
      "tree": "a39c3d3ea17dc085195626487f37995beb742ac0",
      "parents": [
        "162cc2794df37662beb7f97ddd1dd5bffaf85e9a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 28 07:46:32 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 21:02:02 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett, part 3\n\nWhitespace fixes, updated comments, and trivial code movement.\n\no\tFix whitespace error in RCU_HEAD_INIT()\n\no\tMove \"So where is rcu_write_lock()\" comment so that it does\n\tnot come between the rcu_read_unlock() header comment and\n\tthe rcu_read_unlock() definition.\n\no\tMove the module_param statements for blimit, qhimark, and\n\tqlowmark to immediately follow the corresponding\n\tdefinitions.\n\no\tIn __rcu_offline_cpu(), move the assignment to rdp_me\n\tinside the \"if\" statement, given that rdp_me is not used\n\toutside of that \"if\" statement.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12541491931164-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "162cc2794df37662beb7f97ddd1dd5bffaf85e9a",
      "tree": "88619bce8fce70c4f19c1a5809448d7b624bbb9e",
      "parents": [
        "9b2619aff0332e95ea5eb7a0d75b0208818d871c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 23 16:18:13 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 05 21:01:28 2009 +0200"
      },
      "message": "rcu: Fix rcu_lock_map build failure on CONFIG_PROVE_LOCKING\u003dy\n\nMove the rcu_lock_map definition from rcutree.c to rcupdate.c so that\nTINY_RCU can use lockdep.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9b2619aff0332e95ea5eb7a0d75b0208818d871c",
      "tree": "a1aed182c4f1ec511352c0e3cb3eba0e20535263",
      "parents": [
        "1eba8f84380bede3c602bd7758dea96925cead01"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:50:43 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 23 19:46:30 2009 +0200"
      },
      "message": "rcu: Clean up code to address Ingo\u0027s checkpatch feedback\n\nMove declarations and update storage classes to make checkpatch happy.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12537246441701-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1eba8f84380bede3c602bd7758dea96925cead01",
      "tree": "32dd97671016c9fdc24d75be50cc8540e6cc0730",
      "parents": [
        "fc2219d49ef1606e7fd2c88af2b423b01ff3d319"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:50:42 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 23 19:46:29 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett, part 2\n\nThese issues identified during an old-fashioned face-to-face code\nreview extending over many hours.\n\no\tAdd comments for tricky parts of code, and correct comments\n\tthat have passed their sell-by date.\n\no\tGet rid of the vestiges of rcu_init_sched(), which is no\n\tlonger needed now that PREEMPT_RCU is gone.\n\no\tMove the #include of rcutree_plugin.h to the end of\n\trcutree.c, which means that, rather than having a random\n\tcollection of forward declarations, the new set of forward\n\tdeclarations document the set of plugins.  The new home for\n\tthis #include also allows __rcu_init_preempt() to move into\n\trcutree_plugin.h.\n\no\tFix rcu_preempt_check_callbacks() to be static.\n\nSuggested-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12537246443924-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nPeter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "fc2219d49ef1606e7fd2c88af2b423b01ff3d319",
      "tree": "1c1cba7e4334898a98cf0e2c992e8cfef4b34979",
      "parents": [
        "0729e196147692d84d4c099fcff056eba2ed61d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 23 09:50:41 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 23 19:46:29 2009 +0200"
      },
      "message": "rcu: Clean up code based on review feedback from Josh Triplett\n\nThese issues identified during an old-fashioned face-to-face code\nreview extended over many hours.\n\no\tBury various forms of the \"rsp-\u003ecompleted \u003d\u003d rsp-\u003egpnum\"\n\tcomparison into an rcu_gp_in_progress() function, which has\n\tthe beneficial side-effect of forcing consistent use of\n\tACCESS_ONCE().\n\no\tReplace hand-coded arithmetic with DIV_ROUND_UP().\n\no\tBury several \"!list_empty(\u0026rnp-\u003eblocked_tasks[rnp-\u003egpnum \u0026 0x01])\"\n\tinstances into an rcu_preempted_readers() function, as this\n\texpression indicates that there are no readers blocked\n\twithin RCU read-side critical sections blocking the current\n\tgrace period.  (Though there might well be similar readers\n\tblocking the next grace period.)\n\no\tRemove a dangling rcu_restart_cpu() declaration that has\n\tbeen dangling for almost 20 minor releases of the kernel.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12537246442687-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a71fca58b7f4abca551ae2256ac08dd9123a03f9",
      "tree": "55bef0550ff2558a117d768426474e15b081ff4b",
      "parents": [
        "49e291266d0920264471d9d64268fb030e33a99a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 18 10:28:19 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 08:53:22 2009 +0200"
      },
      "message": "rcu: Fix whitespace inconsistencies\n\nFix a number of whitespace ^Ierrors in the include/linux/rcu*\nand the kernel/rcu* files.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c20090918172819.GA24405@linux.vnet.ibm.com\u003e\n[ did more checkpatch fixlets ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "49e291266d0920264471d9d64268fb030e33a99a",
      "tree": "8770717427ee877e6b7b3dae6b120f35be645d70",
      "parents": [
        "e7d8842ed34a7fe19d1ed90f84c211fb056ac523"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 18 09:50:19 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 08:53:21 2009 +0200"
      },
      "message": "rcu: Fix thinko, actually initialize full tree\n\nCommit de078d8 (\"rcu: Need to update rnp-\u003egpnum if preemptable RCU\nis to be reliable\") repeatedly and incorrectly initializes the root\nrcu_node structure\u0027s -\u003egpnum field rather than initializing the\n-\u003egpnum field of each node in the tree.  Fix this.  Also add an\nadditional consistency check to catch this in the future.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c125329262011-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e7d8842ed34a7fe19d1ed90f84c211fb056ac523",
      "tree": "d49d5b8ff8829e525b8f80d60a18ef1f37e09529",
      "parents": [
        "28ecd58020409be8eb176c716f957fc3386fa2fa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 18 09:50:18 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 08:53:21 2009 +0200"
      },
      "message": "rcu: Apply results of code inspection of kernel/rcutree_plugin.h\n\no Drop the calls to cpu_quiet() from the online/offline code.\n  These are unnecessary, since force_quiescent_state() will\n  clean up, and removing them simplifies the code a bit.\n\no Add a warning to check that we don\u0027t enqueue the same blocked\n  task twice onto the -\u003eblocked_tasks[] lists.\n\no Rework the phase computation in rcu_preempt_note_context_switch()\n  to be more readable, as suggested by Josh Triplett.\n\no Disable irqs to close a race between the scheduling clock\n  interrupt and rcu_preempt_note_context_switch() WRT the\n  -\u003ercu_read_unlock_special field.\n\no Add comments to rnp-\u003elock acquisition and release within\n  rcu_read_unlock_special() noting that irqs are already\n  disabled.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c12532926201851-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "28ecd58020409be8eb176c716f957fc3386fa2fa",
      "tree": "820dd14bbfc5b69384c3b88611c6173c06ba5e08",
      "parents": [
        "16e3081191837a6a04733de5cd5d1d1b303140d4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 18 09:50:17 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 08:53:19 2009 +0200"
      },
      "message": "rcu: Add WARN_ON_ONCE() consistency checks covering state transitions\n\no Verify that qsmask bits stay clear through GP\n  initialization.\n\no Verify that cpu_quiet_msk_finish() is never invoked unless\n  there actually is an RCU grace period in progress.\n\no Verify that all internal-node rcu_node structures have empty\n  blocked_tasks[] lists.\n\no Verify that child rcu_node structure\u0027s bits remain clear after\n  acquiring parent\u0027s lock.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c12532926191947-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c3422bea5f09b0e85704f51f2b01271630b8940b",
      "tree": "fc4a18241b0f7f5d71211f6787428197769cb9f5",
      "parents": [
        "b0e165c035b13e1074fa0b555318bd9cb7102558"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 13 09:15:10 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 18 00:06:33 2009 +0200"
      },
      "message": "rcu: Simplify rcu_read_unlock_special() quiescent-state accounting\n\nThe earlier approach required two scheduling-clock ticks to note an\npreemptable-RCU quiescent state in the situation in which the\nscheduling-clock interrupt is unlucky enough to always interrupt an\nRCU read-side critical section.\n\nWith this change, the quiescent state is instead noted by the\noutermost rcu_read_unlock() immediately following the first\nscheduling-clock tick, or, alternatively, by the first subsequent\ncontext switch.  Therefore, this change also speeds up grace\nperiods.\n\nSuggested-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c12528585111945-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b0e165c035b13e1074fa0b555318bd9cb7102558",
      "tree": "c65de438df4e8ad3e9e562663b377d61cc87af57",
      "parents": [
        "bbe3eae8bb039b5ffd64a6e3d1a0deaa1f3cbae9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 13 09:15:09 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 18 00:06:13 2009 +0200"
      },
      "message": "rcu: Add debug checks to TREE_PREEMPT_RCU for premature grace periods\n\nCheck to make sure that there are no blocked tasks for the previous\ngrace period while initializing for the next grace period, verify\nthat rcu_preempt_qs() is given the correct CPU number and is never\ncalled for an offline CPU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nLKML-Reference: \u003c12528585111986-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b835db1f9cadaf008750a32664e35a207782c95e",
      "tree": "5bf73f245ac83250a984b8a14adfe3c7596b684f",
      "parents": [
        "de078d875cc7fc709f7818f26d38389c04369826"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 08 15:54:37 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 18 00:05:14 2009 +0200"
      },
      "message": "rcu: Initialize multi-level RCU grace periods holding locks\n\nPrior implementations initialized the root and any internal\nnodes without holding locks, then initialized the leaves\nholding locks.\n\nThis is a false economy, as the leaf nodes will usually greatly\noutnumber the root and internal nodes.  Acquiring locks on all\nnodes is conceptually much simpler as well.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nLKML-Reference: \u003c12524504773190-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "de078d875cc7fc709f7818f26d38389c04369826",
      "tree": "0e7ed4d9d11ae707cc3b4e1e9d511a6d78e9e29d",
      "parents": [
        "de55a8958f6e3ef5ce5f0971b80bd44bfcac7cf1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 08 15:54:36 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 18 00:04:54 2009 +0200"
      },
      "message": "rcu: Need to update rnp-\u003egpnum if preemptable RCU is to be reliable\n\nWithout this patch, tasks preempted in RCU read-side critical\nsections can fail to block the grace period, given that\nrnp-\u003egpnum is used to determine which rnp-\u003eblocked_tasks[]\nelement the preempted task is enqueued on.\n\nBefore the patch, rnp-\u003egpnum is always zero, so preempted tasks\nare always enqueued on rnp-\u003eblocked_tasks[0], which is correct\nonly when the current CPU has not checked into the current\ngrace period and the grace-period number is even, or,\nsimilarly, if the current CPU -has- checked into the current\ngrace period and the grace-period number is odd.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nLKML-Reference: \u003c12524504771622-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eee2775d9924b22643bd89b2e568cc5eed7e8a04",
      "tree": "095ad7851895c5d39596f3ff7ee1e078235a2501",
      "parents": [
        "53e16fbd30005905168d9b75555fdc7e0a2eac58",
        "7db905e636f08ea5bc9825c1f73d77802e8ccad5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:20:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:20:18 2009 -0700"
      },
      "message": "Merge branch \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (28 commits)\n  rcu: Move end of special early-boot RCU operation earlier\n  rcu: Changes from reviews: avoid casts, fix/add warnings, improve comments\n  rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees\n  rcu: Remove lockdep annotations from RCU\u0027s _notrace() API members\n  rcu: Add #ifdef to suppress __rcu_offline_cpu() warning in !HOTPLUG_CPU builds\n  rcu: Add CPU-offline processing for single-node configurations\n  rcu: Add \"notrace\" to RCU function headers used by ftrace\n  rcu: Remove CONFIG_PREEMPT_RCU\n  rcu: Merge preemptable-RCU functionality into hierarchical RCU\n  rcu: Simplify rcu_pending()/rcu_check_callbacks() API\n  rcu: Use debugfs_remove_recursive() simplify code.\n  rcu: Merge per-RCU-flavor initialization into pre-existing macro\n  rcu: Fix online/offline indication for rcudata.csv trace file\n  rcu: Consolidate sparse and lockdep declarations in include/linux/rcupdate.h\n  rcu: Renamings to increase RCU clarity\n  rcu: Move private definitions from include/linux/rcutree.h to kernel/rcutree.h\n  rcu: Expunge lingering references to CONFIG_CLASSIC_RCU, optimize on !SMP\n  rcu: Delay rcu_barrier() wait until beginning of next CPU-hotunplug operation.\n  rcu: Fix typo in rcu_irq_exit() comment header\n  rcu: Make rcupreempt_trace.c look at offline CPUs\n  ...\n"
    },
    {
      "commit": "868489660dabc0c28087cca3dbc1adbbc398c6fe",
      "tree": "cf991ec94ce29bccfef27213107748810c51a1ca",
      "parents": [
        "dd5d19bafd90d33043a4a14b2e2d98612caa293c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 27 15:00:12 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 29 15:34:40 2009 +0200"
      },
      "message": "rcu: Changes from reviews: avoid casts, fix/add warnings, improve comments\n\nChanges suggested by review comments from Josh Triplett and\nMathieu Desnoyers.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c20090827220012.GA30525@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dd5d19bafd90d33043a4a14b2e2d98612caa293c",
      "tree": "c21d547124d277f00332bdb01c75f2f4f321de8c",
      "parents": [
        "06e799764eb7c2e4640888d438c3524d756613e1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 27 14:58:16 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 29 15:34:39 2009 +0200"
      },
      "message": "rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees\n\nWhen offlining CPUs from a multi-level tree, there is the\npossibility of offlining the last CPU from a given node when\nthere are preempted RCU read-side critical sections that\nstarted life on one of the CPUs on that node.\n\nIn this case, the corresponding tasks will be enqueued via the\ntask_struct\u0027s rcu_node_entry list_head onto one of the\nrcu_node\u0027s blocked_tasks[] lists.  These tasks need to be moved\nsomewhere else so that they will prevent the current grace\nperiod from ending. That somewhere is the root rcu_node.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c20090827215816.GA30472@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c935a331c8f569c7903ed26a3994a70cbea1802e",
      "tree": "e60c2920c077a77a1921b9b9ad024a55f745a55c",
      "parents": [
        "33f76148ced0e0618062e302d2a9614efdbd4a06"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 25 08:40:25 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 25 20:20:03 2009 +0200"
      },
      "message": "rcu: Add #ifdef to suppress __rcu_offline_cpu() warning in !HOTPLUG_CPU builds\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nLKML-Reference: \u003c20090825154025.GD6616@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "33f76148ced0e0618062e302d2a9614efdbd4a06",
      "tree": "82a5c2719301bcb9f20b0597b77e91529f9ec2df",
      "parents": [
        "7c614d6461399acca5c0ba444f5db49cb332fc08"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Aug 24 09:42:01 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 24 20:37:04 2009 +0200"
      },
      "message": "rcu: Add CPU-offline processing for single-node configurations\n\nAdd preemptable-RCU plugin to handle the CPU-offline\nprocessing.\n\nAn additional plugin is forthcoming to handle multinode RCU\ntrees, but this current plugin works for configurations up to\n32 CPUs (64 CPUs for 64-bit kernels).\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12511321213336-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f41d911f8c49a5d65c86504c19e8204bb605c4fd",
      "tree": "59bcd3048652ef290b3e19d2904409afd5c90eb3",
      "parents": [
        "a157229cabd6dd8cfa82525fc9bf730c94cc9ac2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:52 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:40 2009 +0200"
      },
      "message": "rcu: Merge preemptable-RCU functionality into hierarchical RCU\n\nCreate a kernel/rcutree_plugin.h file that contains definitions\nfor preemptable RCU (or, under the #else branch of the #ifdef,\nempty definitions for the classic non-preemptable semantics).\nThese definitions fit into plugins defined in kernel/rcutree.c\nfor this purpose.\n\nThis variant of preemptable RCU uses a new algorithm whose\nread-side expense is roughly that of classic hierarchical RCU\nunder CONFIG_PREEMPT. This new algorithm\u0027s update-side expense\nis similar to that of classic hierarchical RCU, and, in absence\nof read-side preemption or blocking, is exactly that of classic\nhierarchical RCU.  Perhaps more important, this new algorithm\nhas a much simpler implementation, saving well over 1,000 lines\nof code compared to mainline\u0027s implementation of preemptable\nRCU, which will hopefully be retired in favor of this new\nalgorithm.\n\nThe simplifications are obtained by maintaining per-task\nnesting state for running tasks, and using a simple\nlock-protected algorithm to handle accounting when tasks block\nwithin RCU read-side critical sections, making use of lessons\nlearned while creating numerous user-level RCU implementations\nover the past 18 months.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746134003-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a157229cabd6dd8cfa82525fc9bf730c94cc9ac2",
      "tree": "886013efc2f25dab915640acf46151fac7ae57b4",
      "parents": [
        "22f00b69f6a7e1e18e821979a23e8307c2de9888"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:51 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:39 2009 +0200"
      },
      "message": "rcu: Simplify rcu_pending()/rcu_check_callbacks() API\n\nAll calls from outside RCU are of the form:\n\n\tif (rcu_pending(cpu))\n\t\trcu_check_callbacks(cpu, user);\n\nThis is silly, instead we put a call to rcu_pending() in\nrcu_check_callbacks(), and then make the outside calls be to\nrcu_check_callbacks().  This cuts down on the code a bit and\nalso gives the compiler a better chance of optimizing.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c125097461311-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "65cf8f866fc0fb40fa9daaded7e938a886d6f7c5",
      "tree": "88ca0b1bab821ea7e887384ffaecf751d7ec54bc",
      "parents": [
        "5699ed8fcb0c32ca699e2a27ad716eb70b367dbf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:49 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:38 2009 +0200"
      },
      "message": "rcu: Merge per-RCU-flavor initialization into pre-existing macro\n\nRename the RCU_DATA_PTR_INIT() macro to RCU_INIT_FLAVOR() and\nmake it do the rcu_init_one() and rcu_boot_init_percpu_data()\ncalls.  Merge the loop that was in the original macro with the\nloops that were in __rcu_init().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746133916-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d6714c22b43fbcbead7e7b706ff270e15f04a791",
      "tree": "1dc15e57d982351bed45b7b9768a118f86b88c19",
      "parents": [
        "9f77da9f40045253e91f55c12d4481254b513d2d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:46 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:37 2009 +0200"
      },
      "message": "rcu: Renamings to increase RCU clarity\n\nMake RCU-sched, RCU-bh, and RCU-preempt be underlying\nimplementations, with \"RCU\" defined in terms of one of the\nthree.  Update the outdated rcu_qsctr_inc() names, as these\nfunctions no longer increment anything.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746132696-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9f77da9f40045253e91f55c12d4481254b513d2d",
      "tree": "8699c413d1493855ca8b1205e1b63090f568af42",
      "parents": [
        "b560d8ad8583803978aaaeba50ef29dc8e97a610"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:45 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:36 2009 +0200"
      },
      "message": "rcu: Move private definitions from include/linux/rcutree.h to kernel/rcutree.h\n\nSome information hiding that makes it easier to merge\npreemptability into rcutree without descending into #include\nhell.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c1250974613373-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e597558086dec36d5c33521a36e0f6b1bc3f3a7",
      "tree": "ce8c6ced1c8a3b6bf6170a5894e1d7102e6ee9d4",
      "parents": [
        "799e64f05f4bfaad2bb3165cab95c8c992a1c296"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 15 09:53:48 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 15 19:02:08 2009 +0200"
      },
      "message": "rcu: Simplify RCU CPU-hotplug notification\n\nUse the new cpu_notifier() API to simplify RCU\u0027s CPU-hotplug\nnotifiers, collapsing down to a single such notifier.\n\nThis makes it trivial to provide the notifier-ordering\nguarantee that rcu_barrier() depends on.\n\nAlso remove redundant open_softirq() calls from Hierarchical\nRCU notifier.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: josht@linux.vnet.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: hugh.dickins@tiscali.co.uk\nCc: benh@kernel.crashing.org\nLKML-Reference: \u003c12503552312510-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "27569620c748ec13f801b4683b448a2ac2adaae4",
      "tree": "d5fd5dd1b9d352ca0ef2cf224f7141338d3413f3",
      "parents": [
        "fa08661af834875c9bd6f7f0b1b9388dc72a6585"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 15 09:53:46 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Aug 15 19:02:07 2009 +0200"
      },
      "message": "rcu: Split hierarchical RCU initialization into boot-time and CPU-online pieces\n\nThis patch divides the rcutree initialization into boot-time\nand hotplug-time components, so that the tree data structures\nare guaranteed to be fully linked at boot time regardless of\nwhat might happen in CPU hotplug operations.\n\nThis makes RCU more resilient against CPU hotplug misbehavior\n(and vice versa), but more importantly, does a better job of\ncompartmentalizing the code.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: josht@linux.vnet.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: hugh.dickins@tiscali.co.uk\nCc: benh@kernel.crashing.org\nLKML-Reference: \u003c1250355231152-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c1dc0b9c0c8979ce4d411caadff5c0d79dee58bc",
      "tree": "6822205799a6cf8928623d60aa226c95534a20f9",
      "parents": [
        "ed680c4ad478d0fee9740f7d029087f181346564"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 11:28:21 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 13:27:17 2009 +0200"
      },
      "message": "debug lockups: Improve lockup detection\n\nWhen debugging a recent lockup bug i found various deficiencies\nin how our current lockup detection helpers work:\n\n - SysRq-L is not very efficient as it uses a workqueue, hence\n   it cannot punch through hard lockups and cannot see through\n   most soft lockups either.\n\n - The SysRq-L code depends on the NMI watchdog - which is off\n   by default.\n\n - We dont print backtraces from the RCU code\u0027s built-in\n   \u0027RCU state machine is stuck\u0027 debug code. This debug\n   code tends to be one of the first (and only) mechanisms\n   that show that a lockup has occured.\n\nThis patch changes the code so taht we:\n\n - Trigger the NMI backtrace code from SysRq-L instead of using\n   a workqueue (which cannot punch through hard lockups)\n\n - Trigger print-all-CPU-backtraces from the RCU lockup detection\n   code\n\nAlso decouple the backtrace printing code from the NMI watchdog:\n\n - Dont use variable size cpumasks (it might not be initialized\n   and they are a bit more fragile anyway)\n\n - Trigger an NMI immediately via an IPI, instead of waiting\n   for the NMI tick to occur. This is a lot faster and can\n   produce more relevant backtraces. It will also work if the\n   NMI watchdog is disabled.\n\n - Dont print the \u0027dazed and confused\u0027 message when we print\n   a backtrace from the NMI\n\n - Do a show_regs() plus a dump_stack() to get maximum info\n   out of the dump. Worst-case we get two stacktraces - which\n   is not a big deal. Sometimes, if register content is\n   corrupted, the precise stack walker in show_regs() wont\n   give us a full backtrace - in this case dump_stack() will\n   do it.\n\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f6faac71d502be1c29c81b2f45657662c3b84470",
      "tree": "b320a04b6f3955c60edaa30f47b889a0daf9f4b6",
      "parents": [
        "4e8a2372f9255a1464ef488ed925455f53fbdaa1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 23 17:24:40 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 24 15:02:48 2009 +0200"
      },
      "message": "rcu: Mark Hierarchical RCU no longer experimental\n\nRemoves the warnings about Hierarchical RCU being experimental,\ngiven that it has gone through almost six months of being the\ndefault RCU in mainline for the x86 with very little trouble.\n\nThis makes hierarchical-RCU bootup look less scary.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: akpm@linux-foundation.org\nCc: niv@us.ibm.com\nCc: dvhltc@us.ibm.com\nCc: dipankar@in.ibm.com\nCc: dhowells@redhat.com\nCc: lethal@linux-sh.org\nCc: kernel@wantstofly.org\nCc: cl@linux-foundation.org\nCc: schamp@sgi.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7ba5c840e64d4a967379f1ae3eca73278180b11d",
      "tree": "b77d70ce2b80f3be27add39fcd3bc7fbfe7a0847",
      "parents": [
        "05cfbd66d07c44865983c8b65ae9d0037d874206"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Apr 13 21:31:17 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 11:33:43 2009 +0200"
      },
      "message": "rcu: Add __rcu_pending tracing to hierarchical RCU\n\nAdd tracing to __rcu_pending() to provide information on why RCU\nprocessing was kicked off.  This is helpful for debugging hierarchical\nRCU, and might also be helpful in learning how hierarchical RCU operates.\n\nLocated-by: Anton Blanchard \u003canton@au1.ibm.com\u003e\nTested-by: Anton Blanchard \u003canton@au1.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: anton@samba.org\nCc: akpm@linux-foundation.org\nCc: dipankar@in.ibm.com\nCc: manfred@colorfullife.com\nCc: cl@linux-foundation.org\nCc: josht@linux.vnet.ibm.com\nCc: schamp@sgi.com\nCc: niv@us.ibm.com\nCc: dvhltc@us.ibm.com\nCc: ego@in.ibm.com\nCc: laijs@cn.fujitsu.com\nCc: rostedt@goodmis.org\nCc: peterz@infradead.org\nCc: penberg@cs.helsinki.fi\nCc: andi@firstfloor.org\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c1239683479943-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ef631b0ca01655d24e9ca7e199262c4a46416a26",
      "tree": "0ef86d5b97c6e2de500e639ebb92da8f2ec8c863",
      "parents": [
        "27b19565fe4ca5b0e9d2ae98ce4b81ca728bf445"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Apr 13 21:31:16 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 11:31:50 2009 +0200"
      },
      "message": "rcu: Make hierarchical RCU less IPI-happy\n\nThis patch fixes a hierarchical-RCU performance bug located by Anton\nBlanchard.  The problem stems from a misguided attempt to provide a\nwork-around for jiffies-counter failure.  This work-around uses a per-CPU\nn_rcu_pending counter, which is incremented on each call to rcu_pending(),\nwhich in turn is called from each scheduling-clock interrupt.  Each CPU\nthen treats this counter as a surrogate for the jiffies counter, so\nthat if the jiffies counter fails to advance, the per-CPU n_rcu_pending\ncounter will cause RCU to invoke force_quiescent_state(), which in turn\nwill (among other things) send resched IPIs to CPUs that have thus far\nfailed to pass through an RCU quiescent state.\n\nUnfortunately, each CPU resets only its own counter after sending a\nbatch of IPIs.  This means that the other CPUs will also (needlessly)\nsend -another- round of IPIs, for a full N-squared set of IPIs in the\nworst case every three scheduler-clock ticks until the grace period\nfinally ends.  It is not reasonable for a given CPU to reset each and\nevery n_rcu_pending for all the other CPUs, so this patch instead simply\ndisables the jiffies-counter \"training wheels\", thus eliminating the\nexcessive IPIs.\n\nNote that the jiffies-counter IPIs do not have this problem due to\nthe fact that the jiffies counter is global, so that the CPU sending\nthe IPIs can easily reset things, thus preventing the other CPUs from\nsending redundant IPIs.\n\nNote also that the n_rcu_pending counter remains, as it will continue to\nbe used for tracing.  It may also see use to update the jiffies counter,\nshould an appropriate kick-the-jiffies-counter API appear.\n\nLocated-by: Anton Blanchard \u003canton@au1.ibm.com\u003e\nTested-by: Anton Blanchard \u003canton@au1.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: anton@samba.org\nCc: akpm@linux-foundation.org\nCc: dipankar@in.ibm.com\nCc: manfred@colorfullife.com\nCc: cl@linux-foundation.org\nCc: josht@linux.vnet.ibm.com\nCc: schamp@sgi.com\nCc: niv@us.ibm.com\nCc: dvhltc@us.ibm.com\nCc: ego@in.ibm.com\nCc: laijs@cn.fujitsu.com\nCc: rostedt@goodmis.org\nCc: peterz@infradead.org\nCc: penberg@cs.helsinki.fi\nCc: andi@firstfloor.org\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c12396834793575-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6258c4fb59e77d748f7efc2c137ad420372edd07",
      "tree": "c1e2ae0f027e81e55613b043ce44965858475d59",
      "parents": [
        "b1f77b0581b8fd837acb4a973f7d5496cae6efee"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 25 16:42:24 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 03 12:23:03 2009 +0200"
      },
      "message": "kmemtrace, rcu: fix rcu_tree_trace.c data structure dependencies\n\nImpact: cleanup\n\nWe want to remove rcutree internals from the public rcutree.h file for\nupcoming kmemtrace changes - but kernel/rcutree_trace.c depends on them.\n\nIntroduce kernel/rcutree.h for internal definitions. (Probably all\nthe other data types from include/linux/rcutree.h could be\nmoved here too - except rcu_data.)\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: paulmck@linux.vnet.ibm.com\nLKML-Reference: \u003c1237898630.25315.83.camel@penberg-laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b1f77b0581b8fd837acb4a973f7d5496cae6efee",
      "tree": "4faa2e4285c31dd70d1d20b4172d1eed55ba7330",
      "parents": [
        "255d11bc910fd38153156a0c5ebb256657290882"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 03:20:49 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 03 12:23:02 2009 +0200"
      },
      "message": "kmemtrace, rcu: fix linux/rcutree.h and linux/rcuclassic.h dependencies\n\nImpact: build fix for all non-x86 architectures\n\nWe want to remove percpu.h from rcuclassic.h/rcutree.h (for upcoming\nkmemtrace changes) but that would break the DECLARE_PER_CPU based\ndeclarations in these files.\n\nMove the quiescent counter management functions to their respective\nRCU implementation .c files - they were slightly above the inlining\nlimit anyway.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: paulmck@linux.vnet.ibm.com\nLKML-Reference: \u003c1237898630.25315.83.camel@penberg-laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a682604838763981613e42015cd0e39f2989d6bb",
      "tree": "29eae425e484edc494807702696c240ce09ba3f5",
      "parents": [
        "694593e3374a67d95ece6a275a1f181644c2c4d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Feb 25 18:03:42 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 04:08:14 2009 +0100"
      },
      "message": "rcu: Teach RCU that idle task is not quiscent state at boot\n\nThis patch fixes a bug located by Vegard Nossum with the aid of\nkmemcheck, updated based on review comments from Nick Piggin,\nIngo Molnar, and Andrew Morton.  And cleans up the variable-name\nand function-name language.  ;-)\n\nThe boot CPU runs in the context of its idle thread during boot-up.\nDuring this time, idle_cpu(0) will always return nonzero, which will\nfool Classic and Hierarchical RCU into deciding that a large chunk of\nthe boot-up sequence is a big long quiescent state.  This in turn causes\nRCU to prematurely end grace periods during this time.\n\nThis patch changes the rcutree.c and rcuclassic.c rcu_check_callbacks()\nfunction to ignore the idle task as a quiescent state until the\nsystem has started up the scheduler in rest_init(), introducing a\nnew non-API function rcu_idle_now_means_idle() to inform RCU of this\ntransition.  RCU maintains an internal rcu_idle_cpu_truthful variable\nto track this state, which is then used by rcu_check_callback() to\ndetermine if it should believe idle_cpu().\n\nBecause this patch has the effect of disallowing RCU grace periods\nduring long stretches of the boot-up sequence, this patch also introduces\nJosh Triplett\u0027s UP-only optimization that makes synchronize_rcu() be a\nno-op if num_online_cpus() returns 1.  This allows boot-time code that\ncalls synchronize_rcu() to proceed normally.  Note, however, that RCU\ncallbacks registered by call_rcu() will likely queue up until later in\nthe boot sequence.  Although rcuclassic and rcutree can also use this\nsame optimization after boot completes, rcupreempt must restrict its\nuse of this optimization to the portion of the boot sequence before the\nscheduler starts up, given that an rcupreempt RCU read-side critical\nsection may be preeempted.\n\nIn addition, this patch takes Nick Piggin\u0027s suggestion to make the\nsystem_state global variable be __read_mostly.\n\nChanges since v4:\n\no\tChanges the name of the introduced function and variable to\n\tbe less emotional.  ;-)\n\nChanges since v3:\n\no\tWARN_ON(nr_context_switches() \u003e 0) to verify that RCU\n\tswitches out of boot-time mode before the first context\n\tswitch, as suggested by Nick Piggin.\n\nChanges since v2:\n\no\tCreated rcu_blocking_is_gp() internal-to-RCU API that\n\tdetermines whether a call to synchronize_rcu() is itself\n\ta grace period.\n\no\tThe definition of rcu_blocking_is_gp() for rcuclassic and\n\trcutree checks to see if but a single CPU is online.\n\no\tThe definition of rcu_blocking_is_gp() for rcupreempt\n\tchecks to see both if but a single CPU is online and if\n\tthe system is still in early boot.\n\n\tThis allows rcupreempt to again work correctly if running\n\ton a single CPU after booting is complete.\n\no\tAdded check to rcupreempt\u0027s synchronize_sched() for there\n\tbeing but one online CPU.\n\nTested all three variants both SMP and !SMP, booted fine, passed a short\nrcutorture test on both x86 and Power.\n\nLocated-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nTested-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nTested-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e4fa4c97016037620f9dc8bafe03e1086b665b4c",
      "tree": "130944c01e928d8a5e06aea635b222cb28515df8",
      "parents": [
        "a6525042bfdfcab128bd91fad264de10fd24a55e"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Jan 14 14:58:15 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 14 11:26:40 2009 +0100"
      },
      "message": "rcu: add __cpuinit to rcu_init_percpu_data()\n\nImpact: reduce memory footprint\n\nadd __cpuinit to rcu_init_percpu_data(), and this function\u0027s text\nwill be discarded after boot when !CONFIG_HOTPLUG_CPU.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "90a4d2c0106bb690f0b6af3d506febc35c658aa7",
      "tree": "f62ee471a6d94fd94bfe97be339ab30ce7814e6f",
      "parents": [
        "c12172c0251761c54260376eb29a5f6547495580"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jan 04 11:41:11 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 10:12:33 2009 +0100"
      },
      "message": "rcu: make treercu safe for suspend and resume\n\nImpact: fix kernel warnings [and potential crash] during suspend+resume\n\nKudos to both Dhaval Giani and Jens Axboe for finding a bug in treercu\nthat causes warnings after suspend-resume cycles in Dhaval\u0027s case and\nduring stress tests in Jens\u0027s case.  It would also probably cause failures\nif heavily stressed.  The solution, ironically enough, is to revert to\nrcupreempt\u0027s code for initializing the dynticks state.  And the patch\neven results in smaller code -- so what was I thinking???\n\nThis is 2.6.29 material, given that people really do suspend and resume\nLinux these days.  ;-)\n\nReported-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nReported-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nTested-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nTested-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c12172c0251761c54260376eb29a5f6547495580",
      "tree": "b773010a88be3beeb4dfaf2658b76b40b448e98a",
      "parents": [
        "52942b6b16c6ebb25f4dd4df0208d840ba0cbc5c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jan 04 20:30:06 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 05 10:10:28 2009 +0100"
      },
      "message": "rcu: fix rcutree grace-period-latency bug on small systems\n\nImpact: fix delays during bootup\n\nKudos to Andi Kleen for finding a grace-period-latency problem!  The\nproblem was that the special-case code for small machines never updated\nthe -\u003esignaled field to indicate that grace-period initialization had\ncompleted, which prevented force_quiescent_state() from ever expediting\ngrace periods.  This problem resulted in grace periods extending for more\nthan 20 seconds.  Not subtle.  I introduced this bug during my inspection\nprocess when I fixed a race between grace-period initialization and\nforce_quiescent_state() execution.\n\nThe following patch properly updates the -\u003esignaled field for the\n\"small\"-system case (no more than 32 CPUs for 32-bit kernels and no more\nthan 64 CPUs for 64-bit kernels).\n\nReported-by: Andi Kleen \u003candi@firstfloor.org\u003e\nTested-by: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "64db4cfff99c04cd5f550357edcc8780f96b54a2",
      "tree": "4856e788d21f0e31ed78a22b70b4521f7237705e",
      "parents": [
        "d110ec3a1e1f522e2e9dfceb9c36d6590c26d2d4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 18 21:55:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 21:56:04 2008 +0100"
      },
      "message": "\"Tree RCU\": scalable classic RCU implementation\n\nThis patch fixes a long-standing performance bug in classic RCU that\nresults in massive internal-to-RCU lock contention on systems with\nmore than a few hundred CPUs.  Although this patch creates a separate\nflavor of RCU for ease of review and patch maintenance, it is intended\nto replace classic RCU.\n\nThis patch still handles stress better than does mainline, so I am still\ncalling it ready for inclusion.  This patch is against the -tip tree.\nNevertheless, experience on an actual 1000+ CPU machine would still be\nmost welcome.\n\nMost of the changes noted below were found while creating an rcutiny\n(which should permit ejecting the current rcuclassic) and while doing\ndetailed line-by-line documentation.\n\nUpdates from v9 (http://lkml.org/lkml/2008/12/2/334):\n\no\tFixes from remainder of line-by-line code walkthrough,\n\tincluding comment spelling, initialization, undesirable\n\tnarrowing due to type conversion, removing redundant memory\n\tbarriers, removing redundant local-variable initialization,\n\tand removing redundant local variables.\n\n\tI do not believe that any of these fixes address the CPU-hotplug\n\tissues that Andi Kleen was seeing, but please do give it a whirl\n\tin case the machine is smarter than I am.\n\n\tA writeup from the walkthrough may be found at the following\n\tURL, in case you are suffering from terminal insomnia or\n\tmasochism:\n\n\thttp://www.kernel.org/pub/linux/kernel/people/paulmck/tmp/rcutree-walkthrough.2008.12.16a.pdf\n\no\tMade rcutree tracing use seq_file, as suggested some time\n\tago by Lai Jiangshan.\n\no\tAdded a .csv variant of the rcudata debugfs trace file, to allow\n\tpeople having thousands of CPUs to drop the data into\n\ta spreadsheet.\tTested with oocalc and gnumeric.  Updated\n\tdocumentation to suit.\n\nUpdates from v8 (http://lkml.org/lkml/2008/11/15/139):\n\no\tFix a theoretical race between grace-period initialization and\n\tforce_quiescent_state() that could occur if more than three\n\tjiffies were required to carry out the grace-period\n\tinitialization.  Which it might, if you had enough CPUs.\n\no\tApply Ingo\u0027s printk-standardization patch.\n\no\tSubstitute local variables for repeated accesses to global\n\tvariables.\n\no\tFix comment misspellings and redundant (but harmless) increments\n\tof -\u003en_rcu_pending (this latter after having explicitly added it).\n\no\tApply checkpatch fixes.\n\nUpdates from v7 (http://lkml.org/lkml/2008/10/10/291):\n\no\tFixed a number of problems noted by Gautham Shenoy, including\n\tthe cpu-stall-detection bug that he was having difficulty\n\tconvincing me was real.  ;-)\n\no\tChanged cpu-stall detection to wait for ten seconds rather than\n\tthree in order to reduce false positive, as suggested by Ingo\n\tMolnar.\n\no\tProduced a design document (http://lwn.net/Articles/305782/).\n\tThe act of writing this document uncovered a number of both\n\ttheoretical and \"here and now\" bugs as noted below.\n\no\tFix dynticks_nesting accounting confusion, simplify WARN_ON()\n\tcondition, fix kerneldoc comments, and add memory barriers\n\tin dynticks interface functions.\n\no\tAdd more data to tracing.\n\no\tRemove unused \"rcu_barrier\" field from rcu_data structure.\n\no\tCount calls to rcu_pending() from scheduling-clock interrupt\n\tto use as a surrogate timebase should jiffies stop counting.\n\no\tFix a theoretical race between force_quiescent_state() and\n\tgrace-period initialization.  Yes, initialization does have to\n\tgo on for some jiffies for this race to occur, but given enough\n\tCPUs...\n\nUpdates from v6 (http://lkml.org/lkml/2008/9/23/448):\n\no\tFix a number of checkpatch.pl complaints.\n\no\tApply review comments from Ingo Molnar and Lai Jiangshan\n\ton the stall-detection code.\n\no\tFix several bugs in !CONFIG_SMP builds.\n\no\tFix a misspelled config-parameter name so that RCU now announces\n\tat boot time if stall detection is configured.\n\no\tRun tests on numerous combinations of configurations parameters,\n\twhich after the fixes above, now build and run correctly.\n\nUpdates from v5 (http://lkml.org/lkml/2008/9/15/92, bad subject line):\n\no\tFix a compiler error in the !CONFIG_FANOUT_EXACT case (blew a\n\tchangeset some time ago, and finally got around to retesting\n\tthis option).\n\no\tFix some tracing bugs in rcupreempt that caused incorrect\n\ttotals to be printed.\n\no\tI now test with a more brutal random-selection online/offline\n\tscript (attached).  Probably more brutal than it needs to be\n\ton the people reading it as well, but so it goes.\n\no\tA number of optimizations and usability improvements:\n\n\to\tMake rcu_pending() ignore the grace-period timeout when\n\t\tthere is no grace period in progress.\n\n\to\tMake force_quiescent_state() avoid going for a global\n\t\tlock in the case where there is no grace period in\n\t\tprogress.\n\n\to\tRearrange struct fields to improve struct layout.\n\n\to\tMake call_rcu() initiate a grace period if RCU was\n\t\tidle, rather than waiting for the next scheduling\n\t\tclock interrupt.\n\n\to\tInvoke rcu_irq_enter() and rcu_irq_exit() only when\n\t\tidle, as suggested by Andi Kleen.  I still don\u0027t\n\t\tcompletely trust this change, and might back it out.\n\n\to\tMake CONFIG_RCU_TRACE be the single config variable\n\t\tmanipulated for all forms of RCU, instead of the prior\n\t\tconfusion.\n\n\to\tDocument tracing files and formats for both rcupreempt\n\t\tand rcutree.\n\nUpdates from v4 for those missing v5 given its bad subject line:\n\no\tSeparated dynticks interface so that NMIs and irqs call separate\n\tfunctions, greatly simplifying it.  In particular, this code\n\tno longer requires a proof of correctness.  ;-)\n\no\tSeparated dynticks state out into its own per-CPU structure,\n\tavoiding the duplicated accounting.\n\no\tThe case where a dynticks-idle CPU runs an irq handler that\n\tinvokes call_rcu() is now correctly handled, forcing that CPU\n\tout of dynticks-idle mode.\n\no\tReview comments have been applied (thank you all!!!).\n\tFor but one example, fixed the dynticks-ordering issue that\n\tManfred pointed out, saving me much debugging.  ;-)\n\no\tAdjusted rcuclassic and rcupreempt to handle dynticks changes.\n\nAttached is an updated patch to Classic RCU that applies a hierarchy,\ngreatly reducing the contention on the top-level lock for large machines.\nThis passes 10-hour concurrent rcutorture and online-offline testing on\n128-CPU ppc64 without dynticks enabled, and exposes some timekeeping\nbugs in presence of dynticks (exciting working on a system where\n\"sleep 1\" hangs until interrupted...), which were fixed in the\n2.6.27 kernel.  It is getting more reliable than mainline by some\nmeasures, so the next version will be against -tip for inclusion.\nSee also Manfred Spraul\u0027s recent patches (or his earlier work from\n2004 at http://marc.info/?l\u003dlinux-kernel\u0026m\u003d108546384711797\u0026w\u003d2).\nWe will converge onto a common patch in the fullness of time, but are\ncurrently exploring different regions of the design space.  That said,\nI have already gratefully stolen quite a few of Manfred\u0027s ideas.\n\nThis patch provides CONFIG_RCU_FANOUT, which controls the bushiness\nof the RCU hierarchy.  Defaults to 32 on 32-bit machines and 64 on\n64-bit machines.  If CONFIG_NR_CPUS is less than CONFIG_RCU_FANOUT,\nthere is no hierarchy.  By default, the RCU initialization code will\nadjust CONFIG_RCU_FANOUT to balance the hierarchy, so strongly NUMA\narchitectures may choose to set CONFIG_RCU_FANOUT_EXACT to disable\nthis balancing, allowing the hierarchy to be exactly aligned to the\nunderlying hardware.  Up to two levels of hierarchy are permitted\n(in addition to the root node), allowing up to 16,384 CPUs on 32-bit\nsystems and up to 262,144 CPUs on 64-bit systems.  I just know that I\nam going to regret saying this, but this seems more than sufficient\nfor the foreseeable future.  (Some architectures might wish to set\nCONFIG_RCU_FANOUT\u003d4, which would limit such architectures to 64 CPUs.\nIf this becomes a real problem, additional levels can be added, but I\ndoubt that it will make a significant difference on real hardware.)\n\nIn the common case, a given CPU will manipulate its private rcu_data\nstructure and the rcu_node structure that it shares with its immediate\nneighbors.  This can reduce both lock and memory contention by multiple\norders of magnitude, which should eliminate the need for the strange\nmanipulations that are reported to be required when running Linux on\nvery large systems.\n\nSome shortcomings:\n\no\tMore bugs will probably surface as a result of an ongoing\n\tline-by-line code inspection.\n\n\tPatches will be provided as required.\n\no\tThere are probably hangs, rcutorture failures, \u0026c.  Seems\n\tquite stable on a 128-CPU machine, but that is kind of small\n\tcompared to 4096 CPUs.  However, seems to do better than\n\tmainline.\n\n\tPatches will be provided as required.\n\no\tThe memory footprint of this version is several KB larger\n\tthan rcuclassic.\n\n\tA separate UP-only rcutiny patch will be provided, which will\n\treduce the memory footprint significantly, even compared\n\tto the old rcuclassic.  One such patch passes light testing,\n\tand has a memory footprint smaller even than rcuclassic.\n\tInitial reaction from various embedded guys was \"it is not\n\tworth it\", so am putting it aside.\n\nCredits:\n\no\tManfred Spraul for ideas, review comments, and bugs spotted,\n\tas well as some good friendly competition.  ;-)\n\no\tJosh Triplett, Ingo Molnar, Peter Zijlstra, Mathieu Desnoyers,\n\tLai Jiangshan, Andi Kleen, Andy Whitcroft, and Andrew Morton\n\tfor reviews and comments.\n\no\tThomas Gleixner for much-needed help with some timer issues\n\t(see patches below).\n\no\tJon M. Tollefson, Tim Pepper, Andrew Theurer, Jose R. Santos,\n\tAndy Whitcroft, Darrick Wong, Nishanth Aravamudan, Anton\n\tBlanchard, Dave Kleikamp, and Nathan Lynch for keeping machines\n\talive despite my heavy abuse^Wtesting.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
