)]}'
{
  "log": [
    {
      "commit": "40393f525fe698e2b639cf1851ef0a40e7e158a8",
      "tree": "4067b416468413225a8ac8c75c43859fe3b03bb5",
      "parents": [
        "0e11c8e8a60f8591556d142c2e1e53eaf86ab528",
        "4eacdf18374e5d7d21a728b46dfec269ac8ef55c",
        "6d4b418c75a74eea1dd3701e106a9da8c335c451",
        "9fc52d832b5e7f6e175f3b20ae94504b780b9fd3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jan 28 22:25:02 2013 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jan 28 22:25:21 2013 -0800"
      },
      "message": "Merge branches \u0027doctorture.2013.01.29a\u0027, \u0027fixes.2013.01.26a\u0027, \u0027tagcb.2013.01.24a\u0027 and \u0027tiny.2013.01.29b\u0027 into HEAD\n\ndoctorture.2013.01.11a: Changes to rcutorture and to RCU documentation.\n\nfixes.2013.01.26a: Miscellaneous fixes.\n\ntagcb.2013.01.24a: Tag RCU callbacks with grace-period number to\n\tsimplify callback advancement.\n\ntiny.2013.01.29b: Enhancements to uniprocessor handling in tiny RCU.\n"
    },
    {
      "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": "347f42382184f7448fa96bf9e9fa4eb6f6d1099e",
      "tree": "fd784fd8c7ae6b0ef2291a7cc2cf59da689d518e",
      "parents": [
        "2f03e3ca74a7f8b17ce626d337d321163dce2dad"
      ],
      "author": {
        "name": "Li Zhong",
        "email": "zhong@linux.vnet.ibm.com",
        "time": "Mon Jan 07 09:36:48 2013 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jan 26 16:34:48 2013 -0800"
      },
      "message": "rcu: Remove unused code originally used for context tracking\n\nAs context tracking subsystem evolved, it stopped using ignore_user_qs\nand in_user defined in the rcu_dynticks structure.  This commit therefore\nremoves them.\n\nSigned-off-by: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b44f665623d15ff391c7e9fe7600c5e7bc2fc9c2",
      "tree": "8d166507386447b7a0457672cb4a77a06a6a44fc",
      "parents": [
        "de5e64378e6be3757a8533f55bbe1153349806dd"
      ],
      "author": {
        "name": "Cody P Schafer",
        "email": "cody@linux.vnet.ibm.com",
        "time": "Fri Jan 04 12:59:40 2013 -0500"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jan 26 16:34:13 2013 -0800"
      },
      "message": "rcu: Correct \u0027optimized\u0027 to \u0027optimize\u0027 in header comment\n\nSmall grammar fix in rcutree comment regarding \u0027rcu_scheduler_active\u0027\nvar.\n\nSigned-off-by: Cody P Schafer \u003ccody@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "6d4b418c75a74eea1dd3701e106a9da8c335c451",
      "tree": "7ca38828ff65ade20dbe9390ae2749a6bec7a308",
      "parents": [
        "dc35c8934eba959b690921615fcd987e8bc17e4a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Nov 27 16:55:44 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:15:57 2013 -0800"
      },
      "message": "rcu: Trace callback acceleration\n\nThis commit adds event tracing for callback acceleration to allow better\ntracking of callbacks through the system.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "dc35c8934eba959b690921615fcd987e8bc17e4a",
      "tree": "c8020ec8ac191505e35905e89e58f02aa4e5fc31",
      "parents": [
        "1b0048a44c502c5ab850203e6e0a6498d7d8676d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Dec 03 13:52:00 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:15:57 2013 -0800"
      },
      "message": "rcu: Tag callback lists with corresponding grace-period number\n\nCurrently, callbacks are advanced each time the corresponding CPU\nnotices a change in its leaf rcu_node structure\u0027s -\u003ecompleted value\n(this value counts grace-period completions).  This approach has worked\nquite well, but with the advent of RCU_FAST_NO_HZ, we cannot count on\na given CPU seeing all the grace-period completions.  When a CPU misses\na grace-period completion that occurs while it is in dyntick-idle mode,\nthis will delay invocation of its callbacks.\n\nIn addition, acceleration of callbacks (when RCU realizes that a given\ncallback need only wait until the end of the next grace period, rather\nthan having to wait for a partial grace period followed by a full\ngrace period) must be carried out extremely carefully.  Insufficient\nacceleration will result in unnecessarily long grace-period latencies,\nwhile excessive acceleration will result in premature callback invocation.\nChanges that involve this tradeoff are therefore among the most\nnerve-wracking changes to RCU.\n\nThis commit therefore explicitly tags groups of callbacks with the\nnumber of the grace period that they are waiting for.  This means that\ncallback-advancement and callback-acceleration functions are idempotent,\nso that excessive acceleration will merely waste a few CPU cycles.  This\nalso allows a CPU to take full advantage of any grace periods that have\nelapsed while it has been in dyntick-idle mode.  It should also enable\nsimulataneous simplifications to and optimizations of RCU_FAST_NO_HZ.\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": "4930521ae10fd28ebc713107fd243c8044a95415",
      "tree": "16b199df6f2bd65a9915ac63e29c6b0f8584097d",
      "parents": [
        "1bdc2b7d243dc8b9aadfc8002a69cf911e9e3e72"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 29 13:49:00 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:15:25 2013 -0800"
      },
      "message": "rcu: Silence compiler array out-of-bounds false positive\n\nIt turns out that gcc 4.8 warns on array indexes being out of bounds\nunless it can prove otherwise.  It gives this warning on some RCU\ninitialization code.  Because this is far from any fastpath, add\nan explicit check for array bounds and panic if so.  This gives the\ncompiler enough information to figure out that the array index is never\nout of bounds.\n\nHowever, if a similar false positive occurs on a fastpath, it will\nprobably be necessary to tell the compiler to keep its array-index\nanxieties to itself.  ;-)\n\nMarkus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "1bdc2b7d243dc8b9aadfc8002a69cf911e9e3e72",
      "tree": "fd87937f2396d715653929e0178c26ecc4f53e96",
      "parents": [
        "62e3cb143fd78a2ee6f44ef0dfe50cdff2119d9a"
      ],
      "author": {
        "name": "Li Zhong",
        "email": "zhong@linux.vnet.ibm.com",
        "time": "Tue Nov 27 13:58:27 2012 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:15:25 2013 -0800"
      },
      "message": "rcu: Use new nesting value for rcu_dyntick trace in rcu_eqs_enter_common\n\nThis patch uses the real new value of dynticks_nesting instead of 0 in\nrcu_eqs_enter_common().\n\nSigned-off-by: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "62e3cb143fd78a2ee6f44ef0dfe50cdff2119d9a",
      "tree": "9c0ac96a9c58706a101f6560a05480f45c8120c4",
      "parents": [
        "3aac7a8d574285be855450d103a421b8f8ec89d4"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josh@joshtriplett.org",
        "time": "Tue Nov 20 09:55:26 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:15:25 2013 -0800"
      },
      "message": "rcu: Make rcu_is_cpu_rrupt_from_idle helper functions static\n\nBoth rcutiny and rcutree define a helper function named\nrcu_is_cpu_rrupt_from_idle(), each used exactly once, later in the\nsame file.  This commit therefore declares these helper functions static.\n\nSigned-off-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "91d1aa43d30505b0b825db8898ffc80a8eca96c7",
      "tree": "911636f846d800c8a44efd540842dc726ec7c191",
      "parents": [
        "4e79752c25ec221ac1e28f8875b539ed7631a0db"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 27 19:33:25 2012 +0100"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Nov 30 11:40:07 2012 -0800"
      },
      "message": "context_tracking: New context tracking susbsystem\n\nCreate a new subsystem that probes on kernel boundaries\nto keep track of the transitions between level contexts\nwith two basic initial contexts: user or kernel.\n\nThis is an abstraction of some RCU code that use such tracking\nto implement its userspace extended quiescent state.\n\nWe need to pull this up from RCU into this new level of indirection\nbecause this tracking is also going to be used to implement an \"on\ndemand\" generic virtual cputime accounting. A necessary step to\nshutdown the tick while still accounting the cputime.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nCc: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nReviewed-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n[ paulmck: fix whitespace error and email address. ]\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3fbfbf7a3b66ec424042d909f14ba2ddf4372ea8",
      "tree": "cc364c320a6e23927ecc154a8ef8021dc7d1a9e8",
      "parents": [
        "aac1cda34b84a9411d6b8d18c3658f094c834911"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sun Aug 19 21:35:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Nov 16 10:05:56 2012 -0800"
      },
      "message": "rcu: Add callback-free CPUs\n\nRCU callback execution can add significant OS jitter and also can\ndegrade both scheduling latency and, in asymmetric multiprocessors,\nenergy efficiency.  This commit therefore adds the ability for selected\nCPUs (\"rcu_nocbs\u003d\" boot parameter) to have their callbacks offloaded\nto kthreads.  If the \"rcu_nocb_poll\" boot parameter is also specified,\nthese kthreads will do polling, removing the need for the offloaded\nCPUs to do wakeups.  At least one CPU must be doing normal callback\nprocessing: currently CPU 0 cannot be selected as a no-CBs CPU.\nIn addition, attempts to offline the last normal-CBs CPU will fail.\n\nThis feature was inspired by Jim Houston\u0027s and Joe Korty\u0027s JRCU, and\nthis commit includes fixes to problems located by Fengguang Wu\u0027s\nkbuild test robot.\n\n[ paulmck: Added gfp.h include file as suggested by Fengguang Wu. ]\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": "aac1cda34b84a9411d6b8d18c3658f094c834911",
      "tree": "60cc2e3d6793fdbf8b13704608aafdf01bcec118",
      "parents": [
        "2c5594df344cd1ff0cc9bf007dea3235582b3acf",
        "d484a215139cf556cb718a7ec7042260b7fc2d28",
        "351573a86d0ef17cbba1c5436706602692781bfe",
        "cda4dc813071e6cb04944c5a140610bd06acd295",
        "c896054f75f9a720ecf2ab3e688f4da79a55fe05",
        "7bd8f2a74bcbd39f4277766f4d49441c45dd10a0",
        "af71befa282ddf51c09509978abe1e83de8fe7eb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Nov 16 09:59:58 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Nov 16 09:59:58 2012 -0800"
      },
      "message": "Merge branches \u0027urgent.2012.10.27a\u0027, \u0027doc.2012.11.16a\u0027, \u0027fixes.2012.11.13a\u0027, \u0027srcu.2012.10.27a\u0027, \u0027stall.2012.11.13a\u0027, \u0027tracing.2012.11.08a\u0027 and \u0027idle.2012.10.24a\u0027 into HEAD\n\nurgent.2012.10.27a: Fix for RCU user-mode transition (already in -tip).\n\ndoc.2012.11.08a: Documentation updates, most notably codifying the\n\tmemory-barrier guarantees inherent to grace periods.\n\nfixes.2012.11.13a: Miscellaneous fixes.\n\nsrcu.2012.10.27a: Allow statically allocated and initialized srcu_struct\n\tstructures (courtesy of Lai Jiangshan).\n\nstall.2012.11.13a: Add more diagnostic information to RCU CPU stall\n\twarnings, also decrease from 60 seconds to 21 seconds.\n\nhotplug.2012.11.08a: Minor updates to CPU hotplug handling.\n\ntracing.2012.11.08a: Improved debugfs tracing, courtesy of Michael Wang.\n\nidle.2012.10.24a: Updates to RCU idle/adaptive-idle handling, including\n\ta boot parameter that maps normal grace periods to expedited.\n\nResolved conflict in kernel/rcutree.c due to side-by-side change.\n"
    },
    {
      "commit": "f0a0e6f282c72247e7c8ec17c68d528c1bb4d49e",
      "tree": "22b66fc8ac9b95586866ddb447dcc8712d441c14",
      "parents": [
        "67afeed2cab0e59712b4ebf1aef9a2e555a188ce"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 13:47:01 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Nov 13 14:08:23 2012 -0800"
      },
      "message": "rcu: Clarify memory-ordering properties of grace-period primitives\n\nThis commit explicitly states the memory-ordering properties of the\nRCU grace-period primitives.  Although these properties were in some\nsense implied by the fundmental property of RCU (\"a grace period must\nwait for all pre-existing RCU read-side critical sections to complete\"),\nstating it explicitly will be a great labor-saving device.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "878d7439d0f45a95869e417576774673d1fa243f",
      "tree": "bf16331cb2e31ab00fe69d91755b7ac6ccb6a7d6",
      "parents": [
        "62da1921292ef789c23a7bf01d671d7572baf377"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "edumazet@google.com",
        "time": "Thu Oct 18 04:55:36 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Nov 13 14:07:57 2012 -0800"
      },
      "message": "rcu: Fix batch-limit size problem\n\nCommit 29c00b4a1d9e27 (rcu: Add event-tracing for RCU callback\ninvocation) added a regression in rcu_do_batch()\n\nUnder stress, RCU is supposed to allow to process all items in queue,\ninstead of a batch of 10 items (blimit), but an integer overflow makes\nthe effective limit being 1.  So, unless there is frequent idle periods\n(during which RCU ignores batch limits), RCU can be forced into a\nstate where it cannot keep up with the callback-generation rate,\neventually resulting in OOM.\n\nThis commit therefore converts a few variables in rcu_do_batch() from\nint to long to fix this problem, along with the module parameters\ncontrolling the batch limits.\n\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e # 3.2 +\n"
    },
    {
      "commit": "42c3533eee88e012e1aa3c4d6d2cc53354130e24",
      "tree": "5ba55eedbda8d257812ee3b2c8778e4c0b3a2e94",
      "parents": [
        "5f4ee1fa16fa1bee673b75722ca43350a74fba36"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 28 10:49:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 08 11:55:30 2012 -0800"
      },
      "message": "rcu: Fix tracing formatting\n\nThe rcu_state structure\u0027s -\u003ecompleted field is unsigned long, so this\ncommit adjusts show_one_rcugp()\u0027s printf() format to suit.  Also add\nthe required ACCESS_ONCE() directives while we are in this function.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a30489c5228fba6f16b4c740a0292879ef13371e",
      "tree": "2a28a2d6180f8315a8c1cee12cdb415a90b167f0",
      "parents": [
        "40694d6644d5cca28531707559466122eb212d8b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Oct 11 16:18:09 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 08 11:50:13 2012 -0800"
      },
      "message": "rcu: Instrument synchronize_rcu_expedited() for debugfs tracing\n\nThis commit adds the counters to rcu_state and updates them in\nsynchronize_rcu_expedited() to provide the data needed for debugfs\ntracing.\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": "40694d6644d5cca28531707559466122eb212d8b",
      "tree": "4585fe95e0fa05c3273343971d46ea4403af294f",
      "parents": [
        "1924bcb0259711eea98491a7942d1ffbf677e114"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Oct 11 15:24:03 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 08 11:50:12 2012 -0800"
      },
      "message": "rcu: Move synchronize_sched_expedited() state to rcu_state\n\nTracing (debugfs) of expedited RCU primitives is required, which in turn\nrequires that the relevant data be located where the tracing code can find\nit, not in its current static global variables in kernel/rcutree.c.\nThis commit therefore moves sync_sched_expedited_started and\nsync_sched_expedited_done to the rcu_state structure, as fields\n-\u003eexpedited_start and -\u003eexpedited_done, respectively.\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": "1924bcb0259711eea98491a7942d1ffbf677e114",
      "tree": "b5c98e8b210c60468cf1264b9839a3078869b5d1",
      "parents": [
        "7b2e6011f150c42235c4a541d20cf6891afe878a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Oct 11 12:30:37 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 08 11:50:12 2012 -0800"
      },
      "message": "rcu: Avoid counter wrap in synchronize_sched_expedited()\n\nThere is a counter scheme similar to ticket locking that\nsynchronize_sched_expedited() uses to service multiple concurrent\ncallers with the same expedited grace period.  Upon entry, a\nsync_sched_expedited_started variable is atomically incremented,\nand upon completion of a expedited grace period a separate\nsync_sched_expedited_done variable is atomically incremented.\n\nHowever, if a synchronize_sched_expedited() is delayed while\nin try_stop_cpus(), concurrent invocations will increment the\nsync_sched_expedited_started counter, which will eventually overflow.\nIf the original synchronize_sched_expedited() resumes execution just\nas the counter overflows, a concurrent invocation could incorrectly\nconclude that an expedited grace period elapsed in zero time, which\nwould be bad.  One could rely on counter size to prevent this from\nhappening in practice, but the goal is to formally validate this\ncode, so it needs to be fixed anyway.\n\nThis commit therefore checks the gap between the two counters before\nincrementing sync_sched_expedited_started, and if the gap is too\nlarge, does a normal grace period instead.  Overflow is thus only\npossible if there are more than about 3.5 billion threads on 32-bit\nsystems, which can be excluded until such time as task_struct fits\ninto a single byte and 4G/4G patches are accepted into mainline.\nIt is also easy to encode this limitation into mechanical theorem\nprovers.\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": "7b2e6011f150c42235c4a541d20cf6891afe878a",
      "tree": "a02ac239103e97847ec29183d8aaa45c385a3335",
      "parents": [
        "489832609a1ad7189d11715d8cefb457d90182c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Oct 08 10:54:03 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 08 11:50:11 2012 -0800"
      },
      "message": "rcu: Rename -\u003eonofflock to -\u003eorphan_lock\n\nThe -\u003eonofflock field in the rcu_state structure at one time synchronized\nCPU-hotplug operations for RCU.  However, its scope has decreased over time\nso that it now only protects the lists of orphaned RCU callbacks.  This\ncommit therefore renames it to -\u003eorphan_lock to reflect its current use.\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": "53bb857c373d6b7936f8a7b4451f0a99703c308e",
      "tree": "946633c0cbb9ae3a4b374f6896cc9cf5544f0a4a",
      "parents": [
        "eee058826100e5a344f11601e0c47baeaf07c77b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Sep 21 16:35:25 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:55:27 2012 -0700"
      },
      "message": "rcu: Dump number of callbacks in stall warning messages\n\nIn theory, if a grace period manages to get started despite there being\nno callbacks on any of the CPUs, all CPUs could go into dyntick-idle\nmode, so that the grace period would never end.  This commit updates\nthe RCU CPU stall warning messages to detect this condition by summing\nup the number of callbacks on all CPUs.\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": "eee058826100e5a344f11601e0c47baeaf07c77b",
      "tree": "476e151e211d2328c481593509ed8bfe9652b38b",
      "parents": [
        "b637a328bd4f43a0e146d1eef0142b650ba0d644"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Sep 21 14:15:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:55:26 2012 -0700"
      },
      "message": "rcu: Add grace-period information to RCU CPU stall warnings\n\nThis commit causes the last grace period started and completed to be\nprinted on RCU CPU stall warning messages in order to aid diagnosis.\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": "b637a328bd4f43a0e146d1eef0142b650ba0d644",
      "tree": "f1bcf34f229b9ab62612971903ccd61d05db7aea",
      "parents": [
        "6f0c0580b70c89094b3422ba81118c7b959c7556"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Sep 19 16:58:38 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:55:25 2012 -0700"
      },
      "message": "rcu: Print remote CPU\u0027s stacks in stall warnings\n\nThe RCU CPU stall warnings rely on trigger_all_cpu_backtrace() to\ndo NMI-based dump of the stack traces of all CPUs.  Unfortunately, a\nnumber of architectures do not implement trigger_all_cpu_backtrace(), in\nwhich case RCU falls back to just dumping the stack of the running CPU.\nThis is unhelpful in the case where the running CPU has detected that\nsome other CPU has stalled.\n\nThis commit therefore makes the running CPU dump the stacks of the\ntasks running on the stalled CPUs.\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": "340f588bbaed6cb518aa65e7a330dcc3fff911f8",
      "tree": "ae8973ce0bb0aa363f4a9707fb90b7445f381b2a",
      "parents": [
        "3705b88db0d7cc4a097c32d9e554054103d3f807"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Oct 15 08:24:54 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:54:09 2012 -0700"
      },
      "message": "rcu: Fix precedence error in cpu_needs_another_gp()\n\nThe fix introduced by a10d206e (rcu: Fix day-one dyntick-idle\nstall-warning bug) has a C-language precedence error.  It turns out\nthat this error is harmless in that the same result is computed for all\ninputs, but the code is nevertheless a potential source of confusion.\nThis commit therefore introduces parentheses in order to force the\nexecution of the code to reflect the intent.\n\nReported-by: Ben Hutchings \u003cben@decadent.org.uk\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": "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": "abfd6e58aed4f89fd69b9b17bc4b4527efe3a645",
      "tree": "47c72852a260b3063ef362e4d68e6a8ce7f1f7c3",
      "parents": [
        "6f0c0580b70c89094b3422ba81118c7b959c7556"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 20 16:59:47 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:46:47 2012 -0700"
      },
      "message": "rcu: Fix comment about _rcu_barrier()/orphanage exclusion\n\nIn the old days, _rcu_barrier() acquired -\u003eonofflock to exclude\nrcu_send_cbs_to_orphanage(), which allowed the latter to avoid memory\nbarriers in callback handling.  However, _rcu_barrier() recently started\ndoing get_online_cpus() to lock out CPU-hotplug operations entirely, which\nmeans that the comment in rcu_send_cbs_to_orphanage() that talks about\n-\u003eonofflock is now obsolete.  This commit therefore fixes the comment.\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": "62da1921292ef789c23a7bf01d671d7572baf377",
      "tree": "aec958e9dbfe4d7fbdfe13e8a622721bc87a1313",
      "parents": [
        "6f0c0580b70c89094b3422ba81118c7b959c7556"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Sep 20 16:02:49 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Oct 20 13:47:10 2012 -0700"
      },
      "message": "rcu: Accelerate callbacks for CPU initiating a grace period\n\nBecause grace-period initialization is carried out by a separate\nkthread, it might happen on a different CPU than the one that\nhad the callback needing a grace period -- which is where the\ncallback acceleration needs to happen.\n\nFortunately, rcu_start_gp() holds the root rcu_node structure\u0027s\n-\u003elock, which prevents a new grace period from starting.  This\nallows this function to safely determine that a grace period has\nnot yet started, which in turn allows it to fully accelerate any\ncallbacks that it has pending.  This commit adds this acceleration.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a4fbe35a124526e6759be07bd9c7ea796ba1e00d",
      "tree": "cb5c5a1608fcff588ed9a204ea67d5891adb18fb",
      "parents": [
        "cb349ca95407cbc11424d5e9fc7c8e700709041b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Oct 07 08:36:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Oct 08 09:06:38 2012 -0700"
      },
      "message": "rcu: Grace-period initialization excludes only RCU notifier\n\nKirill noted the following deadlock cycle on shutdown involving padata:\n\n\u003e With commit 755609a9087fa983f567dc5452b2fa7b089b591f I\u0027ve got deadlock on\n\u003e poweroff.\n\u003e\n\u003e It guess it happens because of race for cpu_hotplug.lock:\n\u003e\n\u003e       CPU A                                   CPU B\n\u003e disable_nonboot_cpus()\n\u003e _cpu_down()\n\u003e cpu_hotplug_begin()\n\u003e  mutex_lock(\u0026cpu_hotplug.lock);\n\u003e __cpu_notify()\n\u003e padata_cpu_callback()\n\u003e __padata_remove_cpu()\n\u003e padata_replace()\n\u003e synchronize_rcu()\n\u003e                                       rcu_gp_kthread()\n\u003e                                       get_online_cpus();\n\u003e                                       mutex_lock(\u0026cpu_hotplug.lock);\n\nIt would of course be good to eliminate grace-period delays from\nCPU-hotplug notifiers, but that is a separate issue.  Deadlock is\nnot an appropriate diagnostic for excessive CPU-hotplug latency.\n\nFortunately, grace-period initialization does not actually need to\nexclude all of the CPU-hotplug operation, but rather only RCU\u0027s own\nCPU_UP_PREPARE and CPU_DEAD CPU-hotplug notifiers.  This commit therefore\nintroduces a new per-rcu_state onoff_mutex that provides the required\nconcurrency control in place of the get_online_cpus() that was previously\nin rcu_gp_init().\n\nReported-by: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\n"
    },
    {
      "commit": "cb349ca95407cbc11424d5e9fc7c8e700709041b",
      "tree": "b20795decb064af75aae8f9f6af77806b1a4769a",
      "parents": [
        "1fd2b4425a5702c112b441e20b250ac8833a9608"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Sep 04 17:35:31 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:18 2012 +0200"
      },
      "message": "rcu: Apply micro-optimization and int/bool fixes to RCU\u0027s idle handling\n\nChecking \"user\" before \"is_idle_task()\" allows better optimizations\nin cases where inlining is possible.  Also, \"bool\" should be passed\n\"true\" or \"false\" rather than \"1\" or \"0\".  This commit therefore makes\nthese changes, as noted in Josh\u0027s review.\n\nReported-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "1fd2b4425a5702c112b441e20b250ac8833a9608",
      "tree": "502bd504d85db494a6876a37d1a847e9fb6477d8",
      "parents": [
        "edf55fda35c7dc7f2d9241c3abaddaf759b457c6"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:40 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:16 2012 +0200"
      },
      "message": "rcu: Userspace RCU extended QS selftest\n\nProvide a config option that enables the userspace\nRCU extended quiescent state on every CPUs by default.\n\nThis is for testing purpose.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "04e7e951532b390b16feb070be9972b8fad2fc57",
      "tree": "d1d18c2febd422428fad0746afd23c2fd84684d8",
      "parents": [
        "1e1a689f10a27a4fe1ab9b4c6db04fa7232746a5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jul 16 15:06:40 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:02 2012 +0200"
      },
      "message": "rcu: Switch task\u0027s syscall hooks on context switch\n\nClear the syscalls hook of a task when it\u0027s scheduled out so that if\nthe task migrates, it doesn\u0027t run the syscall slow path on a CPU\nthat might not need it.\n\nAlso set the syscalls hook on the next task if needed.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "1e1a689f10a27a4fe1ab9b4c6db04fa7232746a5",
      "tree": "098f180287723813d248f59f452ca3a7db04b636",
      "parents": [
        "c5d900bf676b1e2a61c44483932c8088651bbb4e"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:32 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:47:01 2012 +0200"
      },
      "message": "rcu: Ignore userspace extended quiescent state by default\n\nBy default we don\u0027t want to enter into RCU extended quiescent\nstate while in userspace because doing this produces some overhead\n(eg: use of syscall slowpath). Set it off by default and ready to\nrun when some feature like adaptive tickless need it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "c5d900bf676b1e2a61c44483932c8088651bbb4e",
      "tree": "881ee6420ba291d68d451986d5ed9832ee95661f",
      "parents": [
        "2b1d5024e17be459aa6385763ca3faa8f01c52d9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:31 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:46:55 2012 +0200"
      },
      "message": "rcu: Allow rcu_user_enter()/exit() to nest\n\nAllow calls to rcu_user_enter() even if we are already\nin userspace (as seen by RCU) and allow calls to rcu_user_exit()\neven if we are already in the kernel.\n\nThis makes the APIs more flexible to be called from architectures.\nException entries for example won\u0027t need to know if they come from\nuserspace before calling rcu_user_exit().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "2b1d5024e17be459aa6385763ca3faa8f01c52d9",
      "tree": "45d1ea5872eea69b7f0443086d98ddbcbc221b94",
      "parents": [
        "9a0c6fef423528ba5b62aa31b29aabf689eb8f70"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jul 11 20:26:30 2012 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:44:04 2012 +0200"
      },
      "message": "rcu: Settle config for userspace extended quiescent state\n\nCreate a new config option under the RCU menu that put\nCPUs under RCU extended quiescent state (as in dynticks\nidle mode) when they run in userspace. This require\nsome contribution from architectures to hook into kernel\nand userspace boundaries.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "19dd1591fc379f1d89f39cd99cbbe97433baa3c3",
      "tree": "9c298c4c0f38e68f53c2e4a13080fbec1282953f",
      "parents": [
        "adf5091e6ccaa02905e7a28f9ff44f46c7f4c230"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jun 04 16:42:35 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:44:01 2012 +0200"
      },
      "message": "rcu: New rcu_user_enter_after_irq() and rcu_user_exit_after_irq() APIs\n\nIn some cases, it is necessary to enter or exit userspace-RCU-idle mode\nfrom an interrupt handler, for example, if some other CPU sends this\nCPU a resched IPI.  In this case, the current CPU would enter the IPI\nhandler in userspace-RCU-idle mode, but would need to exit the IPI handler\nafter having exited that mode.\n\nTo allow this to work, this commit adds two new APIs to TREE_RCU:\n\n- rcu_user_enter_after_irq(). This must be called from an interrupt between\nrcu_irq_enter() and rcu_irq_exit().  After the irq calls rcu_irq_exit(),\nthe irq handler will return into an RCU extended quiescent state.\nIn theory, this interrupt is never a nested interrupt, but in practice\nit might interrupt softirq, which looks to RCU like a nested interrupt.\n\n- rcu_user_exit_after_irq(). This must be called from a non-nesting\ninterrupt, interrupting an RCU extended quiescent state, also\nbetween rcu_irq_enter() and rcu_irq_exit(). After the irq calls\nrcu_irq_exit(), the irq handler will return in an RCU non-quiescent\nstate.\n\n[ Combined with \"Allow calls to rcu_exit_user_irq from nesting irqs.\" ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "adf5091e6ccaa02905e7a28f9ff44f46c7f4c230",
      "tree": "14a9a14c07870063a2fdfb23fa7b4c54adca4502",
      "parents": [
        "593d1006cdf710ab3469c0c37c184fea0bc3da97"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jun 28 11:20:21 2012 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 26 15:43:50 2012 +0200"
      },
      "message": "rcu: New rcu_user_enter() and rcu_user_exit() APIs\n\nRCU currently insists that only idle tasks can enter RCU idle mode, which\nprohibits an adaptive tickless kernel (AKA nohz cpusets), which in turn\nwould mean that usermode execution would always take scheduling-clock\ninterrupts, even when there is only one task runnable on the CPU in\nquestion.\n\nThis commit therefore adds rcu_user_enter() and rcu_user_exit(), which\nallow non-idle tasks to enter RCU idle mode.  These are quite similar\nto rcu_idle_enter() and rcu_idle_exit(), respectively, except that they\nomit the idle-task checks.\n\n[ Updated to use \"user\" flag rather than separate check functions. ]\n\n[ paulmck: Updated to drop exports of new functions based on Josh\u0027s patch\n  getting rid of the need for them. ]\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@linaro.org\u003e\nCc: Geoff Levand \u003cgeoff@infradead.org\u003e\nCc: Gilad Ben Yossef \u003cgilad@benyossef.com\u003e\nCc: Hakan Akkan \u003chakanakkan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Kevin Hilman \u003ckhilman@ti.com\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Sven-Thorsten Dietrich \u003cthebigcorporation@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "5217192b85480353aeeb395574e60d0db04f3676",
      "tree": "a45b440623a8fc55ece18b72e40829b2d9815d74",
      "parents": [
        "bda4ec9f6a7d7b249c7b14baa553731efedce300",
        "bff4a394795add6b919debc009f72b7607f5d4bf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 25 10:01:45 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Sep 25 10:01:45 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027tip/smp/hotplug\u0027 into next.2012.09.25b\n\nThe conflicts between kernel/rcutree.h and kernel/rcutree_plugin.h\nwere due to adjacent insertions and deletions, which were resolved\nby simply accepting the changes on both branches.\n"
    },
    {
      "commit": "bda4ec9f6a7d7b249c7b14baa553731efedce300",
      "tree": "3ef6df518d8d48a29f4aafc05ffa4d427b015ce9",
      "parents": [
        "b17c7035f37f47c7f7cb08a5555ab2aebfa31f91",
        "60f53782c51f27c695840ce90c6c432284319eef",
        "86f343b50bb9f56cce60fade22da9defff28934c",
        "429227bbe55647aa42f8f63cac61e4544e248629",
        "93482f4ef1093f5961a63359a34612183d6beea0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 20:37:55 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 24 20:02:22 2012 -0700"
      },
      "message": "Merge branches \u0027bigrt.2012.09.23a\u0027, \u0027doctorture.2012.09.23a\u0027, \u0027fixes.2012.09.23a\u0027, \u0027hotplug.2012.09.23a\u0027 and \u0027idlechop.2012.09.23a\u0027 into HEAD\n\nbigrt.2012.09.23a contains additional commits to reduce scheduling latency\n\tfrom RCU on huge systems (many hundrends or thousands of CPUs).\n\ndoctorture.2012.09.23a contains documentation changes and rcutorture fixes.\n\nfixes.2012.09.23a contains miscellaneous fixes.\n\nhotplug.2012.09.23a contains CPU-hotplug-related changes.\n\nidle.2012.09.23a fixes architectures for which RCU no longer considered\n\tthe idle loop to be a quiescent state due to earlier\n\tadaptive-dynticks changes.  Affected architectures are alpha,\n\tcris, frv, h8300, m32r, m68k, mn10300, parisc, score, xtensa,\n\tand ia64.\n"
    },
    {
      "commit": "0d8ee37e2fcb7b77b9c5dee784beca5a215cad4c",
      "tree": "6e7661bf5231b4c48a6681a9fa8e8ede7915d0a7",
      "parents": [
        "1331e7a1bbe1f11b19c4327ba0853bee2a606543"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Aug 03 13:16:15 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:43:55 2012 -0700"
      },
      "message": "rcu: Disallow callback registry on offline CPUs\n\nPosting a callback after the CPU_DEAD notifier effectively leaks\nthat callback unless/until that CPU comes back online.  Silence is\nunhelpful when attempting to track down such leaks, so this commit emits\na WARN_ON_ONCE() and unconditionally leaks the callback when an offline\nCPU attempts to register a callback.  The rdp-\u003enxttail[RCU_NEXT_TAIL] is\nset to NULL in the CPU_DEAD notifier and restored in the CPU_UP_PREPARE\nnotifier, allowing _call_rcu() to determine exactly when posting callbacks\nis illegal.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "1331e7a1bbe1f11b19c4327ba0853bee2a606543",
      "tree": "596d9ed379ef7e2c5d8cf1cc0ba56ade084548ec",
      "parents": [
        "a10d206ef1a83121ab7430cb196e0376a7145b22"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Aug 02 17:43:50 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:43:55 2012 -0700"
      },
      "message": "rcu: Remove _rcu_barrier() dependency on __stop_machine()\n\nCurrently, _rcu_barrier() relies on preempt_disable() to prevent\nany CPU from going offline, which in turn depends on CPU hotplug\u0027s\nuse of __stop_machine().\n\nThis patch therefore makes _rcu_barrier() use get_online_cpus() to\nblock CPU-hotplug operations.  This has the added benefit of removing\nthe need for _rcu_barrier() to adopt callbacks:  Because CPU-hotplug\noperations are excluded, there can be no callbacks to adopt.  This\ncommit simplifies the code accordingly.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "fdab649b1aa732cd6e79654349088465cdff49af",
      "tree": "5a8b75266eb451b0766f2c622744ae984ac7c3b5",
      "parents": [
        "c96ea7cfdd88d0a67c970502bc5313fede34b86b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 13 16:34:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Remove redundant memory barrier from __call_rcu()\n\nThe first memory barrier in __call_rcu() is supposed to order any\nupdates done beforehand by the caller against the actual queuing\nof the callback.  However, the second memory barrier (which is intended\nto order incrementing the queue lengths before queuing the callback)\nis also between the caller\u0027s updates and the queuing of the callback.\nThe second memory barrier can therefore serve both purposes.\n\nThis commit therefore removes the first memory barrier.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "c96ea7cfdd88d0a67c970502bc5313fede34b86b",
      "tree": "b5e8273bfa99f3ddf72e3a4fbfb6483b60d7f345",
      "parents": [
        "c8020a67e625c714c4dbedc8ae2944b461e204ec"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 13 11:17:06 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Avoid spurious RCU CPU stall warnings\n\nIf a given CPU avoids the idle loop but also avoids starting a new\nRCU grace period for a full minute, RCU can issue spurious RCU CPU\nstall warnings.  This commit fixes this issue by adding a check for\nongoing grace period to avoid these spurious stall warnings.\n\nReported-by: Becky Bruce \u003cbgillbruce@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "c8020a67e625c714c4dbedc8ae2944b461e204ec",
      "tree": "12ad0e02b6e30dffd8c7e2b24cdb278a6b799ad4",
      "parents": [
        "5fd4dc068c4ded1339180dbcd1a99e15b1c0a728"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 10 16:55:59 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:51 2012 -0700"
      },
      "message": "rcu: Protect rcu_node accesses during CPU stall warnings\n\nThe print_other_cpu_stall() function accesses a number of rcu_node\nfields without protection from the -\u003elock.  In theory, this is not\na problem because the fields accessed are all integers, but in\npractice the compiler can get nasty.  Therefore, the commit extends\nthe existing critical section to cover the entire loop body.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a82dcc76021e22c174ba85d90b7a8c750b7362d0",
      "tree": "f65ef1af700610b9e3e59545d2bf13e4cac33876",
      "parents": [
        "5cc900cf55fe58aaad93767c5a526e2a69cbcbc6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Aug 01 14:29:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:50 2012 -0700"
      },
      "message": "rcu: Make offline-CPU checking allow for indefinite delays\n\nThe rcu_implicit_offline_qs() function implicitly assumed that execution\nwould progress predictably when interrupts are disabled, which is of course\nnot guaranteed when running on a hypervisor.  Furthermore, this function\nis short, and is called from one place only in a short function.\n\nThis commit therefore ensures that the timing is checked before\nchecking the condition, which guarantees correct behavior even given\nindefinite delays.  It also inlines rcu_implicit_offline_qs() into\nrcu_implicit_dynticks_qs().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b17c7035f37f47c7f7cb08a5555ab2aebfa31f91",
      "tree": "995c37771f64470dda04e631a8223e74d6713b0a",
      "parents": [
        "4dbd6bb38dd1cbfa5cb21e56e51dffc74aa20038"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Sep 06 15:38:02 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Shrink RCU based on number of CPUs\n\nCurrently, rcu_init_geometry() only reshapes RCU\u0027s combining trees\nif the leaf fanout is changed at boot time.  This means that by\ndefault, kernels compiled with (say) NR_CPUS\u003d4096 will keep oversized\ndata structures, even when running on systems with (say) four CPUs.\n\nThis commit therefore checks to see if the maximum number of CPUs on\nthe actual running system (nr_cpu_ids) differs from NR_CPUS, and if so\nreshapes the combining trees accordingly.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4dbd6bb38dd1cbfa5cb21e56e51dffc74aa20038",
      "tree": "db9a40357ca52d6b135c95ea3186c3f89205520e",
      "parents": [
        "d7d6a11e8609f0319d4a2d8ede348f8b3374b652"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 05 21:43:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Handle unbalanced rcu_node configurations with few CPUs\n\nIf CONFIG_RCU_FANOUT_EXACT\u003dy, if there are not enough CPUs (according\nto nr_cpu_ids) to require more than a single rcu_node structure, but if\nNR_CPUS is larger than would fit into a single rcu_node structure, then\nthe current rcu_init_levelspread() code is subject to integer overflow\nin the eight-bit -\u003elevelspread[] array in the rcu_state structure.\n\nIn this case, the solution is -not- to increase the size of the\nelements in this array because the values in that array should be\nconstrained to the number of bits in an unsigned long.  Instead, this\ncommit replaces NR_CPUS with nr_cpu_ids in the rcu_init_levelspread()\nfunction\u0027s initialization of the cprv local variable.  This results in\nall of the arithmetic being consistently based off of the nr_cpu_ids\nvalue, thus avoiding the overflow, which was caused by the mixing of\nnr_cpu_ids and NR_CPUS.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d7d6a11e8609f0319d4a2d8ede348f8b3374b652",
      "tree": "64a2e3260690a85fe637a3e34c94e8ca540e8fc6",
      "parents": [
        "1943c89de700248d68385300a9b5588a1e314f90"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Aug 21 15:00:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:56 2012 -0700"
      },
      "message": "rcu: Simplify quiescent-state detection\n\nThe current quiescent-state detection algorithm is needlessly\ncomplex.  It records the grace-period number corresponding to\nthe quiescent state at the time of the quiescent state, which\nworks, but it seems better to simply erase any record of previous\nquiescent states at the time that the CPU notices the new grace\nperiod.  This has the further advantage of removing another piece\nof RCU for which lockless reasoning is required.\n\nTherefore, this commit makes this change.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "25d30cf4250f74e5ceb35f8f39739782408db633",
      "tree": "0dd1ff6527fbdd42fd023d68f9a07fb0856d0de0",
      "parents": [
        "661a85dc0d2ec0404e3b80909e413a9d5e42a239"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 11 05:23:18 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Adjust for unconditional -\u003ecompleted assignment\n\nNow that the rcu_node structures\u0027 -\u003ecompleted fields are unconditionally\nassigned at grace-period cleanup time, they should already have the\ncorrect value for the new grace period at grace-period initialization\ntime.  This commit therefore inserts a WARN_ON_ONCE() to verify this\ninvariant.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "661a85dc0d2ec0404e3b80909e413a9d5e42a239",
      "tree": "8ea9545a62835d8cd47978fd31ede669f988b43a",
      "parents": [
        "5d4b86594984d8746b01487c768d8548463c173f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jul 07 05:57:03 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Add random PROVE_RCU_DELAY to grace-period initialization\n\nPreemption greatly raised the probability of certain types of race\nconditions, so this commit adds an anti-heisenbug to greatly increase\nthe collision cross section, also known as the probability of occurrence.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "5d4b86594984d8746b01487c768d8548463c173f",
      "tree": "da857bda0cd263af8301f338b4879a47c7d25ae3",
      "parents": [
        "7e5c2dfb4de15e21f62c956ec32cda9372ca993b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jul 07 07:56:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Fix day-zero grace-period initialization/cleanup race\n\nThe current approach to grace-period initialization is vulnerable to\nextremely low-probability races.  These races stem from the fact that\nthe old grace period is marked completed on the same traversal through\nthe rcu_node structure that is marking the start of the new grace period.\nThis means that some rcu_node structures will believe that the old grace\nperiod is still in effect at the same time that other rcu_node structures\nbelieve that the new grace period has already started.\n\nThese sorts of disagreements can result in too-short grace periods,\nas shown in the following scenario:\n\n1.\tCPU 0 completes a grace period, but needs an additional\n\tgrace period, so starts initializing one, initializing all\n\tthe non-leaf rcu_node structures and the first leaf rcu_node\n\tstructure.  Because CPU 0 is both completing the old grace\n\tperiod and starting a new one, it marks the completion of\n\tthe old grace period and the start of the new grace period\n\tin a single traversal of the rcu_node structures.\n\n\tTherefore, CPUs corresponding to the first rcu_node structure\n\tcan become aware that the prior grace period has completed, but\n\tCPUs corresponding to the other rcu_node structures will see\n\tthis same prior grace period as still being in progress.\n\n2.\tCPU 1 passes through a quiescent state, and therefore informs\n\tthe RCU core.  Because its leaf rcu_node structure has already\n\tbeen initialized, this CPU\u0027s quiescent state is applied to the\n\tnew (and only partially initialized) grace period.\n\n3.\tCPU 1 enters an RCU read-side critical section and acquires\n\ta reference to data item A.  Note that this CPU believes that\n\tits critical section started after the beginning of the new\n\tgrace period, and therefore will not block this new grace period.\n\n4.\tCPU 16 exits dyntick-idle mode.  Because it was in dyntick-idle\n\tmode, other CPUs informed the RCU core of its extended quiescent\n\tstate for the past several grace periods.  This means that CPU 16\n\tis not yet aware that these past grace periods have ended.  Assume\n\tthat CPU 16 corresponds to the second leaf rcu_node structure --\n\twhich has not yet been made aware of the new grace period.\n\n5.\tCPU 16 removes data item A from its enclosing data structure\n\tand passes it to call_rcu(), which queues a callback in the\n\tRCU_NEXT_TAIL segment of the callback queue.\n\n6.\tCPU 16 enters the RCU core, possibly because it has taken a\n\tscheduling-clock interrupt, or alternatively because it has\n\tmore than 10,000 callbacks queued.  It notes that the second\n\tmost recent grace period has completed (recall that because it\n\tcorresponds to the second as-yet-uninitialized rcu_node structure,\n\tit cannot yet become aware that the most recent grace period has\n\tcompleted), and therefore advances its callbacks.  The callback\n\tfor data item A is therefore in the RCU_NEXT_READY_TAIL segment\n\tof the callback queue.\n\n7.\tCPU 0 completes initialization of the remaining leaf rcu_node\n\tstructures for the new grace period, including the structure\n\tcorresponding to CPU 16.\n\n8.\tCPU 16 again enters the RCU core, again, possibly because it has\n\ttaken a scheduling-clock interrupt, or alternatively because\n\tit now has more than 10,000 callbacks queued.\tIt notes that\n\tthe most recent grace period has ended, and therefore advances\n\tits callbacks.\tThe callback for data item A is therefore in\n\tthe RCU_DONE_TAIL segment of the callback queue.\n\n9.\tAll CPUs other than CPU 1 pass through quiescent states.  Because\n\tCPU 1 already passed through its quiescent state, the new grace\n\tperiod completes.  Note that CPU 1 is still in its RCU read-side\n\tcritical section, still referencing data item A.\n\n10.\tSuppose that CPU 2 wais the last CPU to pass through a quiescent\n\tstate for the new grace period, and suppose further that CPU 2\n\tdid not have any callbacks queued, therefore not needing an\n\tadditional grace period.  CPU 2 therefore traverses all of the\n\trcu_node structures, marking the new grace period as completed,\n\tbut does not initialize a new grace period.\n\n11.\tCPU 16 yet again enters the RCU core, yet again possibly because\n\tit has taken a scheduling-clock interrupt, or alternatively\n\tbecause it now has more than 10,000 callbacks queued.\tIt notes\n\tthat the new grace period has ended, and therefore advances\n\tits callbacks.\tThe callback for data item A is therefore in\n\tthe RCU_DONE_TAIL segment of the callback queue.  This means\n\tthat this callback is now considered ready to be invoked.\n\n12.\tCPU 16 invokes the callback, freeing data item A while CPU 1\n\tis still referencing it.\n\nThis scenario represents a day-zero bug for TREE_RCU.  This commit\ntherefore ensures that the old grace period is marked completed in\nall leaf rcu_node structures before a new grace period is marked\nstarted in any of them.\n\nThat said, it would have been insanely difficult to force this race to\nhappen before the grace-period initialization process was preemptible.\nTherefore, this commit is not a candidate for -stable.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n\nConflicts:\n\n\tkernel/rcutree.c\n"
    },
    {
      "commit": "7e5c2dfb4de15e21f62c956ec32cda9372ca993b",
      "tree": "0abd7beba01a6b7f61d9c9879bf397d138eefe0b",
      "parents": [
        "d40011f601b450396104de42c631981502946cf0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jul 01 15:42:33 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:55 2012 -0700"
      },
      "message": "rcu: Make rcutree module parameters visible in sysfs\n\nThe module parameters blimit, qhimark, and qlomark (and more\nrecently, rcu_fanout_leaf) have permission masks of zero, so\nthat their values are not visible from sysfs.  This is unnecessary\nand inconvenient to administrators who might like an easy way to\nsee what these values are on a running system.  This commit therefore\nsets their permission masks to 0444, allowing them to be read but\nnot written.\n\nReported-by: Rusty Russell \u003crusty@ozlabs.org\u003e\nReported-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "d40011f601b450396104de42c631981502946cf0",
      "tree": "62205b755bca9391c6924764387d4417e91014d3",
      "parents": [
        "394f2769aa0dbcf027bae6fb52835e25e05d332e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 26 20:45:57 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Control grace-period duration from sysfs\n\nAlthough almost everyone is well-served by the defaults, some uses of RCU\nbenefit from shorter grace periods, while others benefit more from the\ngreater efficiency provided by longer grace periods.  Situations requiring\na large number of grace periods to elapse (and wireshark startup has\nbeen called out as an example of this) are helped by lower-latency\ngrace periods.  Furthermore, in some embedded applications, people are\nwilling to accept a small degradation in update efficiency (due to there\nbeing more of the shorter grace-period operations) in order to gain the\nlower latency.\n\nIn contrast, those few systems with thousands of CPUs need longer grace\nperiods because the CPU overhead of a grace period rises roughly\nlinearly with the number of CPUs.  Such systems normally do not make\nmuch use of facilities that require large numbers of grace periods to\nelapse, so this is a good tradeoff.\n\nTherefore, this commit allows the durations to be controlled from sysfs.\nThere are two sysfs parameters, one named \"jiffies_till_first_fqs\" that\nspecifies the delay in jiffies from the end of grace-period initialization\nuntil the first attempt to force quiescent states, and the other named\n\"jiffies_till_next_fqs\" that specifies the delay (again in jiffies)\nbetween subsequent attempts to force quiescent states.  They both default\nto three jiffies, which is compatible with the old hard-coded behavior.\n\nAt some future time, it may be possible to automatically increase the\ngrace-period length with the number of CPUs, but we do not yet have\nsufficient data to do a good job.  Preliminary data indicates that we\nshould add an addiitonal jiffy to each of the delays for every 200 CPUs\nin the system, but more experimentation is needed.  For now, the number\nof systems with more than 1,000 CPUs is small enough that this can be\nrelegated to boot-time hand tuning.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "394f2769aa0dbcf027bae6fb52835e25e05d332e",
      "tree": "78471127d379e8d128d73e976ce33022c195b0c5",
      "parents": [
        "4605c0143c6d611b3076025ba3a7e04293c01d69"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 26 17:00:35 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Prevent force_quiescent_state() memory contention\n\nLarge systems running RCU_FAST_NO_HZ kernels see extreme memory\ncontention on the rcu_state structure\u0027s -\u003efqslock field.  This\ncan be avoided by disabling RCU_FAST_NO_HZ, either at compile time\nor at boot time (via the nohz kernel boot parameter), but large\nsystems will no doubt become sensitive to energy consumption.\nThis commit therefore uses a combining-tree approach to spread the\nmemory contention across new cache lines in the leaf rcu_node structures.\nThis can be thought of as a tournament lock that has only a try-lock\nacquisition primitive.\n\nThe effect on small systems is minimal, because such systems have\nan rcu_node \"tree\" consisting of a single node.  In addition, this\nfunctionality is not used on fastpaths.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b4be093fee0200789df59b6c90e2d099a20f55b3",
      "tree": "5eb8367be67bde57671240bfeb149c4c670ffd1c",
      "parents": [
        "4cdfc175c25c89eedc08460b5e6239c2ec67fcb6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 25 08:41:11 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Allow RCU quiescent-state forcing to be preempted\n\nRCU quiescent-state forcing is currently carried out without preemption\npoints, which can result in excessive latency spikes on large systems\n(many hundreds or thousands of CPUs).  This patch therefore inserts\na voluntary preemption point into force_qs_rnp(), which should greatly\nreduce the magnitude of these spikes.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4cdfc175c25c89eedc08460b5e6239c2ec67fcb6",
      "tree": "716acd208cb0633cdd19fc0cd5ad601906cceb24",
      "parents": [
        "b402b73b3afe3614bc0e921ebe18013ea103115a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 22 17:06:26 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:54 2012 -0700"
      },
      "message": "rcu: Move quiescent-state forcing into kthread\n\nAs the first step towards allowing quiescent-state forcing to be\npreemptible, this commit moves RCU quiescent-state forcing into the\nsame kthread that is now used to initialize and clean up after grace\nperiods.  This is yet another step towards keeping scheduling\nlatency down to a dull roar.\n\nUpdated to change from raw_spin_lock_irqsave() to raw_spin_lock_irq()\nand to remove the now-unused rcu_state structure fields as suggested by\nPeter Zijlstra.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bfa00b4c4028f39357d16279ff0fddf550241593",
      "tree": "81f7ba2a050d2ddb033bf690ade41052a866d7fb",
      "parents": [
        "7fdefc10e1d730d4608cc59d386bc446f5b9ee99"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 09:54:10 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Prevent offline CPUs from executing RCU core code\n\nEarlier versions of RCU invoked the RCU core from the CPU_DYING notifier\nin order to note a quiescent state for the outgoing CPU.  Because the\nCPU is marked \"offline\" during the execution of the CPU_DYING notifiers,\nthe RCU core had to tolerate being invoked from an offline CPU.  However,\ncommit b1420f1c (Make rcu_barrier() less disruptive) left only tracing\ncode in the CPU_DYING notifier, so the RCU core need no longer execute\non offline CPUs.  This commit therefore enforces this restriction.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "7fdefc10e1d730d4608cc59d386bc446f5b9ee99",
      "tree": "8365a35be3c92af654667a6ff8e73969abb1e000",
      "parents": [
        "c856bafae7f5b3f59ac1d99279a9b99b3b36ad12"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 22 11:08:41 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Break up rcu_gp_kthread() into subfunctions\n\nThen rcu_gp_kthread() function is too large and furthermore needs to\nhave the force_quiescent_state() code pulled in.  This commit therefore\nbreaks up rcu_gp_kthread() into rcu_gp_init() and rcu_gp_cleanup().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "c856bafae7f5b3f59ac1d99279a9b99b3b36ad12",
      "tree": "2bc16cb69d397440c5082fd451d64db6efa67017",
      "parents": [
        "cabc49c1ff51baaf1958d501a7a616ce91245c93"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jun 21 08:19:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:53 2012 -0700"
      },
      "message": "rcu: Allow RCU grace-period cleanup to be preempted\n\nRCU grace-period cleanup is currently carried out with interrupts\ndisabled, which can result in excessive latency spikes on large systems\n(many hundreds or thousands of CPUs).  This patch therefore makes the\nRCU grace-period cleanup be preemptible, including voluntary preemption\npoints, which should eliminate those latency spikes.  Similar spikes from\nforcing of quiescent states will be dealt with similarly by later patches.\n\nUpdated to replace uses of spin_lock_irqsave() with spin_lock_irq(), as\nsuggested by Peter Zijlstra.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "cabc49c1ff51baaf1958d501a7a616ce91245c93",
      "tree": "9d99237196fb45d01b38fb9235815b32fd1995d7",
      "parents": [
        "755609a9087fa983f567dc5452b2fa7b089b591f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jun 20 17:07:14 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Move RCU grace-period cleanup into kthread\n\nAs a first step towards allowing grace-period cleanup to be preemptible,\nthis commit moves the RCU grace-period cleanup into the same kthread\nthat is now used to initialize grace periods.  This is needed to keep\nscheduling latency down to a dull roar.\n\n[ paulmck: Get rid of stray spin_lock_irqsave() calls. ]\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "755609a9087fa983f567dc5452b2fa7b089b591f",
      "tree": "8a0687cae001206535a22223efb73884daedde30",
      "parents": [
        "79bce6724366b3827c5c673fb07d7063082873cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 19 17:18:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Allow RCU grace-period initialization to be preempted\n\nRCU grace-period initialization is currently carried out with interrupts\ndisabled, which can result in 200-microsecond latency spikes on systems\non which RCU has been configured for 4096 CPUs.  This patch therefore\nmakes the RCU grace-period initialization be preemptible, which should\neliminate those latency spikes.  Similar spikes from grace-period cleanup\nand the forcing of quiescent states will be dealt with similarly by later\npatches.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "79bce6724366b3827c5c673fb07d7063082873cf",
      "tree": "87b02ed03a42a194324e369152049246ceb091e2",
      "parents": [
        "b3dbec76e5334fbb063987dea14e7b255602d7e4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 17 14:32:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Prevent initialization-time quiescent-state race\n\nThe next step in reducing RCU\u0027s grace-period initialization latency on\nlarge systems will make this initialization preemptible.  Unfortunately,\nmaking the grace-period initialization subject to interrupts (let alone\npreemption) exposes the following race on systems whose rcu_node tree\ncontains more than one node:\n\n1.\tCPU 31 starts initializing the grace period, including the\n    \tfirst leaf rcu_node structures, and is then preempted.\n\n2.\tCPU 0 refers to the first leaf rcu_node structure, and notes\n    \tthat a new grace period has started.  It passes through a\n    \tquiescent state shortly thereafter, and informs the RCU core\n    \tof this rite of passage.\n\n3.\tCPU 0 enters an RCU read-side critical section, acquiring\n    \ta pointer to an RCU-protected data item.\n\n4.\tCPU 31 takes an interrupt whose handler removes the data item\n\treferenced by CPU 0 from the data structure, and registers an\n\tRCU callback in order to free it.\n\n5.\tCPU 31 resumes initializing the grace period, including its\n    \town rcu_node structure.  In invokes rcu_start_gp_per_cpu(),\n    \twhich advances all callbacks, including the one registered\n    \tin #4 above, to be handled by the current grace period.\n\n6.\tThe remaining CPUs pass through quiescent states and inform\n    \tthe RCU core, but CPU 0 remains in its RCU read-side critical\n    \tsection, still referencing the now-removed data item.\n\n7.\tThe grace period completes and all the callbacks are invoked,\n    \tincluding the one that frees the data item that CPU 0 is still\n    \treferencing.  Oops!!!\n\nOne way to avoid this race is to remove grace-period acceleration from\nrcu_start_gp_per_cpu().  Now, the only reason for this acceleration was\nto allow CPUs bringing RCU out of idle state to have their callbacks\ninvoked after only one grace period, rather than the two grace periods\nthat would otherwise be required.  But this acceleration does not\nwork when RCU grace-period initialization is moved to a kthread because\nthe CPU posting the callback is no longer necessarily the CPU that is\ninitializing the resulting grace period.\n\nThis commit therefore removes this now-pointless (and soon to be dangerous)\ngrace-period acceleration, thus avoiding the above race.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b3dbec76e5334fbb063987dea14e7b255602d7e4",
      "tree": "5b75e737856baf09b2303bebf7d9893b8279c84e",
      "parents": [
        "a10d206ef1a83121ab7430cb196e0376a7145b22"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 18 18:36:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:41:52 2012 -0700"
      },
      "message": "rcu: Move RCU grace-period initialization into a kthread\n\nAs the first step towards allowing grace-period initialization to be\npreemptible, this commit moves the RCU grace-period initialization\ninto its own kthread.  This is needed to keep large-system scheduling\nlatency at reasonable levels.\n\nAlso change raw_spin_lock_irqsave() to raw_spin_lock_irq() as suggested\nby Peter Zijlstra in review comments.\n\nReported-by: Mike Galbraith \u003cmgalbraith@suse.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a10d206ef1a83121ab7430cb196e0376a7145b22",
      "tree": "2d213786e6a3fcb1f597c0b05f879014791555bc",
      "parents": [
        "7ece55a4a3a04abe37118b1d4fb0b702eeb1de4c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Sep 22 13:55:30 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:31:52 2012 -0700"
      },
      "message": "rcu: Fix day-one dyntick-idle stall-warning bug\n\nEach grace period is supposed to have at least one callback waiting\nfor that grace period to complete.  However, if CONFIG_NO_HZ\u003dn, an\nextra callback-free grace period is no big problem -- it will chew up\na tiny bit of CPU time, but it will complete normally.  In contrast,\nCONFIG_NO_HZ\u003dy kernels have the potential for all the CPUs to go to\nsleep indefinitely, in turn indefinitely delaying completion of the\ncallback-free grace period.  Given that nothing is waiting on this grace\nperiod, this is also not a problem.\n\nThat is, unless RCU CPU stall warnings are also enabled, as they are\nin recent kernels.  In this case, if a CPU wakes up after at least one\nminute of inactivity, an RCU CPU stall warning will result.  The reason\nthat no one noticed until quite recently is that most systems have enough\nOS noise that they will never remain absolutely idle for a full minute.\nBut there are some embedded systems with cut-down userspace configurations\nthat consistently get into this situation.\n\nAll this begs the question of exactly how a callback-free grace period\ngets started in the first place.  This can happen due to the fact that\nCPUs do not necessarily agree on which grace period is in progress.\nIf a CPU still believes that the grace period that just completed is\nstill ongoing, it will believe that it has callbacks that need to wait for\nanother grace period, never mind the fact that the grace period that they\nwere waiting for just completed.  This CPU can therefore erroneously\ndecide to start a new grace period.  Note that this can happen in\nTREE_RCU and TREE_PREEMPT_RCU even on a single-CPU system:  Deadlock\nconsiderations mean that the CPU that detected the end of the grace\nperiod is not necessarily officially informed of this fact for some time.\n\nOnce this CPU notices that the earlier grace period completed, it will\ninvoke its callbacks.  It then won\u0027t have any callbacks left.  If no\nother CPU has any callbacks, we now have a callback-free grace period.\n\nThis commit therefore makes CPUs check more carefully before starting a\nnew grace period.  This new check relies on an array of tail pointers\ninto each CPU\u0027s list of callbacks.  If the CPU is up to date on which\ngrace periods have completed, it checks to see if any callbacks follow\nthe RCU_DONE_TAIL segment, otherwise it checks to see if any callbacks\nfollow the RCU_WAIT_TAIL segment.  The reason that this works is that\nthe RCU_WAIT_TAIL segment will be promoted to the RCU_DONE_TAIL segment\nas soon as the CPU is officially notified that the old grace period\nhas ended.\n\nThis change is to cpu_needs_another_gp(), which is called in a number\nof places.  The only one that really matters is in rcu_start_gp(), where\nthe root rcu_node structure\u0027s -\u003elock is held, which prevents any\nother CPU from starting or completing a grace period, so that the\ncomparison that determines whether the CPU is missing the completion\nof a grace period is stable.\n\nReported-by: Becky Bruce \u003cbgillbruce@gmail.com\u003e\nReported-by: Subodh Nijsure \u003csnijsure@grid-net.com\u003e\nReported-by: Paul Walmsley \u003cpaul@pwsan.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Paul Walmsley \u003cpaul@pwsan.com\u003e  # OMAP3730, OMAP4430\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "62ab7072476ae1600e877cc62b43758e485f4f1e",
      "tree": "c1df0992432cf5bae0f9122d606e73628368fb8e",
      "parents": [
        "bcd951cf10f24e341defcd002c15a1f4eea13ddb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 16 10:42:38 2012 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 13 17:01:08 2012 +0200"
      },
      "message": "rcu: Use smp_hotplug_thread facility for RCUs per-CPU kthread\n\nBring RCU into the new-age CPU-hotplug fold by modifying RCU\u0027s per-CPU\nkthread code to use the new smp_hotplug_thread facility.\n\n[ tglx: Adapted it to use callbacks and to the simplified rcu yield ]\n    \nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20120716103948.673354828@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5d01bbd111d6ff9ea9d9847774f66dff39633776",
      "tree": "77cbce5ff479b3e70f95a29cc88ce50e025f9078",
      "parents": [
        "3bf671af14d591ede9251acb0085e8017f3705e7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jul 16 10:42:35 2012 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Aug 13 17:01:06 2012 +0200"
      },
      "message": "rcu: Yield simpler\n\nThe rcu_yield() code is amazing. It\u0027s there to avoid starvation of the\nsystem when lots of (boosting) work is to be done.\n\nNow looking at the code it\u0027s functionality is:\n\n Make the thread SCHED_OTHER and very nice, i.e. get it out of the way\n Arm a timer with 2 ticks\n schedule()\n\nNow if the system goes idle the rcu task returns, regains SCHED_FIFO\nand plugs on. If the systems stays busy the timer fires and wakes a\nper node kthread which in turn makes the per cpu thread SCHED_FIFO and\nbrings it back on the cpu. For the boosting thread the \"make it FIFO\"\nbit is missing and it just runs some magic boost checks. Now this is a\nlot of code with extra threads and complexity.\n\nIt\u0027s way simpler to let the tasks when they detect overload schedule\naway for 2 ticks and defer the normal wakeup as long as they are in\nyielded state and the cpu is not idle.\n\nThat solves the same problem and the only difference is that when the\ncpu goes idle it\u0027s not guaranteed that the thread returns right away,\nbut it won\u0027t be longer out than two ticks, so no harm is done. If\nthat\u0027s an issue than it is way simpler just to wake the task from\nidle as RCU has callbacks there anyway.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/20120716103948.131256723@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c701d5d9b384ff03ceb232ef21236364d784a411",
      "tree": "ae5b4793c478d3c575e506f1d36c798b73c542ff",
      "parents": [
        "02a0677b0be545a07ffb15a13419efd7c82881e0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 28 08:08:25 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 06:01:48 2012 -0700"
      },
      "message": "rcu: Fix code-style issues involving \"else\"\n\nThe Linux kernel coding style says that single-statement blocks should\nomit curly braces unless the other leg of the \"if\" statement has\nmultiple statements, in which case the curly braces should be included.\nThis commit fixes RCU\u0027s violations of this rule.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "02a0677b0be545a07ffb15a13419efd7c82881e0",
      "tree": "90a5e0699269465c16cc4e247bc5980d0655c3e6",
      "parents": [
        "ff015030c939f0bec68fa9b8898da3aaa7fe55ea",
        "72472a02a9c4507ef54d03d71bb253c26015f52c",
        "cfca927972e31a5b3da49bf641c525732ff3c357",
        "9d2ad24306f2fafc3612e5a216aab31f9e56e879"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:59:20 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:59:30 2012 -0700"
      },
      "message": "Merge branches \u0027bigrtm.2012.07.04a\u0027, \u0027doctorture.2012.07.02a\u0027, \u0027fixes.2012.07.06a\u0027 and \u0027fnh.2012.07.02a\u0027 into HEAD\n\nbigrtm: First steps towards getting RCU out of the way of\n\ttens-of-microseconds real-time response on systems compiled\n\twith NR_CPUS\u003d4096.  Also cleanups for and increased concurrency\n\tof rcu_barrier() family of primitives.\ndoctorture: rcutorture and documentation improvements.\nfixes:  Miscellaneous fixes.\nfnh: RCU_FAST_NO_HZ fixes and improvements.\n"
    },
    {
      "commit": "cfca927972e31a5b3da49bf641c525732ff3c357",
      "tree": "d77d787107b706189d4592ef2738901e98814217",
      "parents": [
        "cf01537ecf192d9ff15c32a355db5d5af22bea4d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jun 25 12:54:17 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 05:55:16 2012 -0700"
      },
      "message": "rcu: Introduce check for callback list/count mismatch\n\nThe recent bug that introduced the RCU callback list/count mismatch\nshowed the need for a diagnostic to check for this, which this commit\nadds.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "bf1304e9cd755be7814ac8365834b7a1d0f06b58",
      "tree": "0bbbb761dc42af26e555e6257bd280e5d390fee0",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:55:39 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:42 2012 -0700"
      },
      "message": "rcu: Dump only the current CPU\u0027s buffers for idle-entry/exit warnings\n\nProblems in RCU idle entry and exit are almost always confined to the\noffending CPU.  This commit therefore switches ftrace_dump() from\nDUMP_ALL to DUMP_ORIG.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Pascal Chapperon \u003cpascal.chapperon@wanadoo.fr\u003e\n"
    },
    {
      "commit": "cf01537ecf192d9ff15c32a355db5d5af22bea4d",
      "tree": "5561d7852d1a4dc88d706863f6c95256c783e9f4",
      "parents": [
        "95f0c1de3e6ed4383cc4b5f52ce4ecfb21026b49"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 11:26:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:25 2012 -0700"
      },
      "message": "rcu: Add check for CPUs going offline with callbacks queued\n\nIf a CPU goes offline with callbacks queued, those callbacks might be\nindefinitely postponed, which can result in a system hang.  This commit\ntherefore inserts warnings for this condition.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "95f0c1de3e6ed4383cc4b5f52ce4ecfb21026b49",
      "tree": "8099a405c03d9caabbf8f1752346e0aa0e30ee28",
      "parents": [
        "1c17e4d4437d8045a596d9f06c1558dc09e2b372"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 19 11:58:27 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:25 2012 -0700"
      },
      "message": "rcu: Disable preemption in rcu_blocking_is_gp()\n\nIt is time to optimize CONFIG_TREE_PREEMPT_RCU\u0027s synchronize_rcu()\nfor uniprocessor optimization, which means that rcu_blocking_is_gp()\ncan no longer rely on RCU read-side critical sections having disabled\npreemption.  This commit therefore disables preemption across\nrcu_blocking_is_gp()\u0027s scan of the cpu_online_mask.\n\n(Updated from previous version to fix embarrassing bug spotted by\nWu Fengguang.)\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "29154c57e35a191c83b19c61b1935c9f21957662",
      "tree": "e761fdd59279de1e8c45bb42b40361c8bc4ff04d",
      "parents": [
        "a16b7a693430406dc229ab0c6b154f669a2031c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 30 03:21:48 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Split RCU core processing out of __call_rcu()\n\nThe __call_rcu() function is a bit overweight, so this commit splits\nit into actual enqueuing of and accounting for the callback (__call_rcu())\nand associated RCU-core processing (__call_rcu_core()).\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a16b7a693430406dc229ab0c6b154f669a2031c5",
      "tree": "b43738c2f447eb4a88fc931d799c33190d56f689",
      "parents": [
        "62fde6edf12b60fddb13a3f0a779c8be0bb7447e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat May 26 08:56:01 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Prevent __call_rcu() from invoking RCU core on offline CPUs\n\nThe __call_rcu() function will invoke the RCU core, for example, if\nit detects that the current CPU has too many callbacks.  However, this\ncan happen on an offline CPU that is on its way to the idle loop, in\nwhich case it is an error to invoke the RCU core, and the excess callbacks\nwill be adopted in any case.  This commit therefore adds checks to\n__call_rcu() for running on an offline CPU, refraining from invoking\nthe RCU core in this case.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "62fde6edf12b60fddb13a3f0a779c8be0bb7447e",
      "tree": "2fa26e28ce311acb29c60f1595235240be6e7d97",
      "parents": [
        "28f5c693d03530eb15c5354f758b789189b98c37"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 22 22:10:24 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Make __call_rcu() handle invocation from idle\n\nAlthough __call_rcu() is handled correctly when called from a momentary\nnon-idle period, if it is called on a CPU that RCU believes to be idle\non RCU_FAST_NO_HZ kernels, the callback might be indefinitely postponed.\nThis commit therefore ensures that RCU is aware of the new callback and\nhas a chance to force the CPU out of dyntick-idle mode when a new callback\nis posted.\n\nReported-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "1d1fb395f6dbc07b36285bbedcf01a73b57f7cb5",
      "tree": "450c8e5e2d69c6e8b6fd7820d6a7dc112d60325b",
      "parents": [
        "3f5d3ea64f1783f0d4ea0d35890ae3297f045a8b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:44:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:22 2012 -0700"
      },
      "message": "rcu: Add ACCESS_ONCE() to -\u003eqlen accesses\n\nThe _rcu_barrier() function accesses other CPUs\u0027 rcu_data structure\u0027s\n-\u003eqlen field without benefit of locking.  This commit therefore adds\nthe required ACCESS_ONCE() wrappers around accesses and updates that\nneed it.\n\nACCESS_ONCE() is not needed when a CPU accesses its own -\u003eqlen, or\nin code that cannot run while _rcu_barrier() is sampling -\u003eqlen fields.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "3f5d3ea64f1783f0d4ea0d35890ae3297f045a8b",
      "tree": "1a472f1a751aa6171f8ab47e083dde4f5125a9b0",
      "parents": [
        "285fe29481d865ae381ad3924c80894e6968c2d8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 15:39:56 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:21 2012 -0700"
      },
      "message": "rcu: Consolidate duplicate callback-list initialization\n\nThere are a couple of open-coded initializations of the rcu_data\nstructure\u0027s RCU callback list.  This commit therefore consolidates\nthem into a new init_callback_list() function.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "285fe29481d865ae381ad3924c80894e6968c2d8",
      "tree": "e01e809f4c840770698f857e8176ebb083ff9ad8",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 09 08:45:12 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:21 2012 -0700"
      },
      "message": "rcu: Fix detection of abruptly-ending stall\n\nThe code that attempts to identify stalls that end just as we detect\nthem is broken by both flavors of initialization failure.  This commit\ntherefore properly initializes and computes the count of the number\nof reasons why the RCU grace period is stalled.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ff015030c939f0bec68fa9b8898da3aaa7fe55ea",
      "tree": "0cd57c23efb14f1b15764c927c5ef0bddb36f8ad",
      "parents": [
        "c0cc962da3e7770feb3665f087ea3e23d8c15479"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 13:16:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:24 2012 -0700"
      },
      "message": "rcu: RCU_SAVE_DYNTICK code no longer ever dead\n\nBefore RCU had unified idle, the RCU_SAVE_DYNTICK leg of the switch\nstatement in force_quiescent_state() was dead code for CONFIG_NO_HZ\u003dn\nkernel builds.  With unified idle, the code is never dead.  This commit\ntherefore removes the \"if\" statement designed to make gcc aware of when\nthe code was and was not dead.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "6ce75a2326e6f8b3bdfb60e1de7934b89858e87b",
      "tree": "c3ecd512422ad9f445f69c78037142a99bc8db2c",
      "parents": [
        "1bca8cf1a2c3c6683b12ad28a3e826ca7a834978"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 11:01:13 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:24 2012 -0700"
      },
      "message": "rcu: Introduce for_each_rcu_flavor() and use it\n\nThe arrival of TREE_PREEMPT_RCU some years back included some ugly\ncode involving either #ifdef or #ifdef\u0027ed wrapper functions to iterate\nover all non-SRCU flavors of RCU.  This commit therefore introduces\na for_each_rcu_flavor() iterator over the rcu_state structures for each\nflavor of RCU to clean up a bit of the ugliness.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1bca8cf1a2c3c6683b12ad28a3e826ca7a834978",
      "tree": "db7b56bd65c8ac7af376599febb44324698b53d4",
      "parents": [
        "d7e187c8e9f30543f9cadfed094896ff414acb8f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 12 09:40:38 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Remove unneeded __rcu_process_callbacks() argument\n\nWith the advent of __this_cpu_ptr(), it is no longer necessary to pass\nboth the rcu_state and rcu_data structures into __rcu_process_callbacks().\nThis commit therefore computes the rcu_data pointer from the rcu_state\npointer within __rcu_process_callbacks() so that callers can pass in\nonly the pointer to the rcu_state structure.  This paves the way for\nlinking the rcu_state structures together and iterating over them.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "a83eff0a82a7f3f14fea477fd41e6c082e7fc96a",
      "tree": "9fb65b061716c622962c42b8318f06fd0d2919cd",
      "parents": [
        "cf3a9c4842b1e097dbe0854933c471d43dd24f69"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed May 23 18:47:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Add tracing for _rcu_barrier()\n\nThis commit adds event tracing for _rcu_barrier() execution.  This\nis defined only if RCU_TRACE\u003dy.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "cf3a9c4842b1e097dbe0854933c471d43dd24f69",
      "tree": "5b2737cade79c491ba46cd642c01cc165118d723",
      "parents": [
        "cfed0a85dad921c683e9c0d25b072bcc5745ede0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 14:56:46 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:23 2012 -0700"
      },
      "message": "rcu: Increase rcu_barrier() concurrency\n\nThe traditional rcu_barrier() implementation has serialized all requests,\nregardless of RCU flavor, and also does not coalesce concurrent requests.\nIn the past, this has been good and sufficient.\n\nHowever, systems are getting larger and use of rcu_barrier() has been\nincreasing.  This commit therefore introduces a counter-based scheme\nthat allows _rcu_barrier() calls for the same flavor of RCU to take\nadvantage of each others\u0027 work.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cfed0a85dad921c683e9c0d25b072bcc5745ede0",
      "tree": "e318ff5559bd38ccd715aeff17085f9b3e3068cb",
      "parents": [
        "7be7f0be907224445acc62b3884c892f38b7ff40"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 15 18:22:05 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Remove needless initialization\n\nFor global variables, C defaults all fields to zero.  The initialization\nof the rcu_state structure\u0027s -\u003en_force_qs and -\u003en_force_qs_ngp fields\nis therefore redundant, so this commit removes these initializations.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7be7f0be907224445acc62b3884c892f38b7ff40",
      "tree": "9802c524d04374e6a4e5c5b9d3a0d3c9085ef2fd",
      "parents": [
        "7db74df88b52844f4e966901e2972bba725e6766"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 05:18:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_mutex to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its\nrcu_barrier() function, it is necessary to move the relevant\nstate to the rcu_state structure.  This commit therefore moves the\nrcu_barrier_mutex global variable to a new -\u003ebarrier_mutex field\nin the rcu_state structure.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7db74df88b52844f4e966901e2972bba725e6766",
      "tree": "ccb2139d2c4628591287bf456ede1164cef43d0f",
      "parents": [
        "24ebbca8ecdd5129d7f829a7cb5146aaeb531f77"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 03:03:37 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_completion to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its\nrcu_barrier() function, it is necessary to move the relevant\nstate to the rcu_state structure.  This commit therefore moves the\nrcu_barrier_completion global variable to a new -\u003ebarrier_completion\nfield in the rcu_state structure.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "24ebbca8ecdd5129d7f829a7cb5146aaeb531f77",
      "tree": "b7a4bb8044dcd1e13119113c77d2a4b96ba25a43",
      "parents": [
        "06668efa9180f4824fe846a8ff96338c18646bc7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue May 29 00:34:56 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:22 2012 -0700"
      },
      "message": "rcu: Move rcu_barrier_cpu_count to rcu_state structure\n\nIn order to allow each RCU flavor to concurrently execute its rcu_barrier()\nfunction, it is necessary to move the relevant state to the rcu_state\nstructure.  This commit therefore moves the rcu_barrier_cpu_count global\nvariable to a new -\u003ebarrier_cpu_count field in the rcu_state structure.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "06668efa9180f4824fe846a8ff96338c18646bc7",
      "tree": "2bda53825cb3437af82bc1db4a4114ee8e29e954",
      "parents": [
        "037b64ed0bf2405a1a01542164d3418564b44fff"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 23:57:46 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Move _rcu_barrier()\u0027s rcu_head structures to rcu_data structures\n\nIn order for multiple flavors of RCU to each concurrently run one\nrcu_barrier(), each flavor needs its own per-CPU set of rcu_head\nstructures.  This commit therefore moves _rcu_barrier()\u0027s set of\nper-CPU rcu_head structures from per-CPU variables to the existing\nper-CPU and per-RCU-flavor rcu_data structures.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "037b64ed0bf2405a1a01542164d3418564b44fff",
      "tree": "59aa7e486e1673564f2a5687992130dffa71ca1b",
      "parents": [
        "6c90cc7bf077f28144013e949ee0c122012d194a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 23:26:01 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Place pointer to call_rcu() in rcu_data structure\n\nThis is a preparatory commit for increasing rcu_barrier()\u0027s concurrency.\nIt adds a pointer in the rcu_data structure to the corresponding call_rcu()\nfunction.  This allows a pointer to the rcu_data structure to imply the\nfunction pointer, which allows _rcu_barrier() state to be placed in the\nrcu_state structure.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "6c90cc7bf077f28144013e949ee0c122012d194a",
      "tree": "aedacfab9695fb43af69e6c30c2f2fa3081e7dc6",
      "parents": [
        "cca6f3931920a7547d02e68adc2ca635bea5600c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 28 19:41:41 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Prevent excessive line length in RCU_STATE_INITIALIZER()\n\nUpcoming rcu_barrier() concurrency commits will result in line lengths\ngreater than 80 characters in the RCU_STATE_INITIALIZER(), so this commit\nshortens the name of the macro\u0027s argument to prevent this.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "cca6f3931920a7547d02e68adc2ca635bea5600c",
      "tree": "31e2cd3d9e73f080ca78a89a6dba474c1987beee",
      "parents": [
        "cc5df65b0370fc6aa2bfe3bb19e0451d5cafb99f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 08 21:00:28 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:21 2012 -0700"
      },
      "message": "rcu: Size rcu_node tree from nr_cpu_ids rather than NR_CPUS\n\nThe rcu_node tree array is sized based on compile-time constants,\nincluding NR_CPUS.  Although this approach has worked well in the past,\nthe recent trend by many distros to define NR_CPUS\u003d4096 results in\nexcessive grace-period-initialization latencies.\n\nThis commit therefore substitutes the run-time computed nr_cpu_ids for\nthe compile-time NR_CPUS when building the tree.  This can result in\nmuch of the compile-time-allocated rcu_node array being unused.  If\nthis is a major problem, you are in a specialized situation anyway,\nso you can manually adjust the NR_CPUS, RCU_FANOUT, and RCU_FANOUT_LEAF\nkernel config parameters.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "f885b7f2b2de70be266d2cecc476f773a1e2ca5d",
      "tree": "c4f4d03ca1469f22701b848274034a74c5ae2b04",
      "parents": [
        "cba6d0d64ee53772b285d0c0c288deefbeaf7775"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Apr 23 15:52:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:33:20 2012 -0700"
      },
      "message": "rcu: Control RCU_FANOUT_LEAF from boot-time parameter\n\nAlthough making RCU_FANOUT_LEAF a kernel configuration parameter rather\nthan a fixed constant makes it easier for people to decrease cache-miss\noverhead for large systems, it is of little help for people who must\nrun a single pre-built kernel binary.\n\nThis commit therefore allows the value of RCU_FANOUT_LEAF to be\nincreased (but not decreased!) via a boot-time parameter named\nrcutree.rcu_fanout_leaf.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cba6d0d64ee53772b285d0c0c288deefbeaf7775",
      "tree": "b2d3de62d15a77d23708c1af6f188c86f0d87fb9",
      "parents": [
        "6887a4131da3adaab011613776d865f4bcfb5678"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 07:08:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 11:39:19 2012 -0700"
      },
      "message": "Revert \"rcu: Move PREEMPT_RCU preemption to switch_to() invocation\"\n\nThis reverts commit 616c310e83b872024271c915c1b9ab505b9efad9.\n(Move PREEMPT_RCU preemption to switch_to() invocation).\nTesting by Sasha Levin \u003clevinsasha928@gmail.com\u003e showed that this\ncan result in deadlock due to invoking the scheduler when one of\nthe runqueue locks is held.  Because this commit was simply a\nperformance optimization, revert it.\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\n"
    },
    {
      "commit": "b41772abebc27c61dd578b76da99aa5240b4c99a",
      "tree": "cb26f8195bcda4aaf6bcbe5de782eec4cef52709",
      "parents": [
        "6b16351acbd415e66ba16bf7d473ece1574cf0bc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jun 21 20:50:42 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 25 12:35:25 2012 -0700"
      },
      "message": "rcu: Stop rcu_do_batch() from multiplexing the \"count\" variable\n\nCommit b1420f1c (Make rcu_barrier() less disruptive) rearranged the\ncode in rcu_do_batch(), moving the -\u003eqlen manipulation to follow\nthe requeueing of the callbacks.  Unfortunately, this rearrangement\nclobbered the value of the \"count\" local variable before the value\nof rdp-\u003eqlen was adjusted, resulting in the value of rdp-\u003eqlen being\ninaccurate.  This commit therefore introduces an index variable \"i\",\navoiding the inadvertent multiplexing.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "8f5af6f1f2d09fe5eac86a5dc1731a5917c1503a",
      "tree": "b7093c8c08377f23645cc7d3619f3fc5c5bdf6f8",
      "parents": [
        "f8f5701bdaf9134b1f90e5044a82c66324d2073f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri May 04 08:31:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jun 06 20:43:27 2012 -0700"
      },
      "message": "rcu: RCU_FAST_NO_HZ detection of callback adoption\n\nIn the present implementations of CPU hotplug, the outgoing CPU is\nguaranteed to run its stop-machine process on the way out, which\nwill guarantee that RCU_FAST_NO_HZ forces the CPU out of dyntick-idle\nmode.\n\nHowever, new versions of CPU hotplug might not work this way.  This\ncommit therefore removes this design constraint by explicitly notifying\nCPUs when they adopt non-lazy RCU callbacks.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Pascal Chapperon \u003cpascal.chapperon@wanadoo.fr\u003e\n"
    },
    {
      "commit": "2d84e023cb5ec00403ff5d447533c6fd58fcc7ff",
      "tree": "cb10d9a568ebb4be8593821a6f205efedf2f4ddd",
      "parents": [
        "9ff00d58a915b6747ba2e843ab2d04c712b4dc32",
        "dc36be4419311fd57becdf54bfeef6bd04a6741d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 08:41:20 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 08:41:46 2012 +0200"
      },
      "message": "Merge branch \u0027rcu/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu\n\nPull the v3.5 RCU tree from Paul E. McKenney:\n\n 1)\tA set of improvements and fixes to the RCU_FAST_NO_HZ feature\n\t(with more on the way for 3.6).  Posted to LKML:\n\thttps://lkml.org/lkml/2012/4/23/324 (commits 1-3 and 5),\n\thttps://lkml.org/lkml/2012/4/16/611 (commit 4),\n\thttps://lkml.org/lkml/2012/4/30/390 (commit 6), and\n\thttps://lkml.org/lkml/2012/5/4/410 (commit 7, combined with\n\tthe other commits for the convenience of the tester).\n\n 2)\tChanges to make rcu_barrier() avoid disrupting execution of CPUs\n\tthat have no RCU callbacks.  Posted to LKML:\n\thttps://lkml.org/lkml/2012/4/23/322.\n\n 3)\tA couple of commits that improve the efficiency of the interaction\n\tbetween preemptible RCU and the scheduler, these two being all\n\tthat survived an abortive attempt to allow preemptible RCU\u0027s\n\t__rcu_read_lock() to be inlined.  The full set was posted to\n\tLKML at https://lkml.org/lkml/2012/4/14/143, and the first and\n\tthird patches of that set remain.\n\n 4)\tLai Jiangshan\u0027s algorithmic implementation of SRCU, which includes\n\tcall_srcu() and srcu_barrier().  A major feature of this new\n\timplementation is that synchronize_srcu() no longer disturbs\n\tthe execution of other CPUs.  This work is based on earlier\n\timplementations by Peter Zijlstra and Paul E. McKenney.  Posted to\n\tLKML: https://lkml.org/lkml/2012/2/22/82.\n\n 5)\tA number of miscellaneous bug fixes and improvements which were\n\tposted to LKML at: https://lkml.org/lkml/2012/4/23/353 with\n\tsubsequent updates posted to LKML.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "dc36be4419311fd57becdf54bfeef6bd04a6741d",
      "tree": "179d34f4e56861b66142dd6c39dac1af1e1e10d9",
      "parents": [
        "b1420f1c8bfc30ecf6380a31d0f686884834b599",
        "048a0e8f5e1d94c01a5fc70f5b2f2fd2f4527326",
        "9dd8fb16c36178df2066387d2abd44d8b4dca8c8",
        "9fab97876af844c2abb7c39300bff34025926565"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 11 10:14:09 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 11 10:14:21 2012 -0700"
      },
      "message": "Merge branches \u0027barrier.2012.05.09a\u0027, \u0027fixes.2012.04.26a\u0027, \u0027inline.2012.05.02b\u0027 and \u0027srcu.2012.05.07b\u0027 into HEAD\n\nbarrier:  Reduce the amount of disturbance by rcu_barrier() to the rest of\n    \tthe system.  This branch also includes improvements to\n    \tRCU_FAST_NO_HZ, which are included here due to conflicts.\nfixes:  Miscellaneous fixes.\ninline:  Remaining changes from an abortive attempt to inline\n    \tpreemptible RCU\u0027s __rcu_read_lock().  These are (1) making\n    \texit_rcu() avoid unnecessary work and (2) avoiding having\n    \tpreemptible RCU record a blocked thread when the scheduler\n    \tdeclines to do a context switch.\nsrcu:\tLai Jiangshan\u0027s algorithmic implementation of SRCU, including\n    \tcall_srcu().\n"
    },
    {
      "commit": "b1420f1c8bfc30ecf6380a31d0f686884834b599",
      "tree": "56eb378bcd64175a7302a1031b388ecf569a30bb",
      "parents": [
        "98248a0e24327bc64eb7518145c44bff7bebebc3"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Mar 01 13:18:08 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 09 14:27:54 2012 -0700"
      },
      "message": "rcu: Make rcu_barrier() less disruptive\n\nThe rcu_barrier() primitive interrupts each and every CPU, registering\na callback on every CPU.  Once all of these callbacks have been invoked,\nrcu_barrier() knows that every callback that was registered before\nthe call to rcu_barrier() has also been invoked.\n\nHowever, there is no point in registering a callback on a CPU that\ncurrently has no callbacks, most especially if that CPU is in a\ndeep idle state.  This commit therefore makes rcu_barrier() avoid\ninterrupting CPUs that have no callbacks.  Doing this requires reworking\nthe handling of orphaned callbacks, otherwise callbacks could slip through\nrcu_barrier()\u0027s net by being orphaned from a CPU that rcu_barrier() had\nnot yet interrupted to a CPU that rcu_barrier() had already interrupted.\nThis reworking was needed anyway to take a first step towards weaning\nRCU from the CPU_DYING notifier\u0027s use of stop_cpu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "616c310e83b872024271c915c1b9ab505b9efad9",
      "tree": "1339bc7b3bef920b4641a5af2f182e9dfa2a6632",
      "parents": [
        "66f75a5d028beaf67c931435fdc3e7823125730c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Mar 27 16:02:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 02 14:43:23 2012 -0700"
      },
      "message": "rcu: Move PREEMPT_RCU preemption to switch_to() invocation\n\nCurrently, PREEMPT_RCU readers are enqueued upon entry to the scheduler.\nThis is inefficient because enqueuing is required only if there is a\ncontext switch, and entry to the scheduler does not guarantee a context\nswitch.\n\nThe commit therefore moves the enqueuing to immediately precede the\ncall to switch_to() from the scheduler.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c57afe80db4e169135eb675acc2d241e26cc064e",
      "tree": "ec011600725a2884efdca6f4c187ea7e3fa4d277",
      "parents": [
        "2ee3dc80660ac8285a37e662fd91b2e45c46f06a"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Feb 28 11:02:21 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:55:20 2012 -0700"
      },
      "message": "rcu: Make RCU_FAST_NO_HZ account for pauses out of idle\n\nBoth Steven Rostedt\u0027s new idle-capable trace macros and the RCU_NONIDLE()\nmacro can cause RCU to momentarily pause out of idle without the rest\nof the system being involved.  This can cause rcu_prepare_for_idle()\nto run through its state machine too quickly, which can in turn result\nin needless scheduling-clock interrupts.\n\nThis commit therefore adds code to enable rcu_prepare_for_idle() to\ndistinguish between an initial entry to idle on the one hand (which needs\nto advance the rcu_prepare_for_idle() state machine) and an idle reentry\ndue to idle-capable trace macros and RCU_NONIDLE() on the other hand\n(which should avoid advancing the rcu_prepare_for_idle() state machine).\nAdditional state is maintained to allow the timer to be correctly reposted\nwhen returning after a momentary pause out of idle, and even more state\nis maintained to detect when new non-lazy callbacks have been enqueued\n(which may require re-evaluation of the approach to idleness).\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6d8133919bac4270883b24328500875a49e71b36",
      "tree": "eae66c4640e429446ef254e468fafb9ceadb142b",
      "parents": [
        "dabb8aa96020bde8359bc73e76c484dd7ff9b7f2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 23 13:30:16 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:53 2012 -0700"
      },
      "message": "rcu: Document why rcu_blocking_is_gp() is safe\n\nThe rcu_blocking_is_gp() function tests to see if there is only one\nonline CPU, and if so, synchronize_sched() and friends become no-ops.\nHowever, for larger systems, num_online_cpus() scans a large vector,\nand might be preempted while doing so.  While preempted, any number\nof CPUs might come online and go offline, potentially resulting in\nnum_online_cpus() returning 1 when there never had only been one\nCPU online.  This could result in a too-short RCU grace period, which\ncould in turn result in total failure, except that the only way that\nthe grace period is too short is if there is an RCU read-side critical\nsection spanning it.  For RCU-sched and RCU-bh (which are the only\ncases using rcu_blocking_is_gp()), RCU read-side critical sections\nhave either preemption or bh disabled, which prevents CPUs from going\noffline.  This in turn prevents actual failures from occurring.\n\nThis commit therefore adds a large block comment to rcu_blocking_is_gp()\ndocumenting why it is safe.  This commit also moves rcu_blocking_is_gp()\ninto kernel/rcutree.c, which should help prevent unwary developers from\nmistaking it for a generally useful function.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "8932a63d5edb02f714d50c26583152fe0a97a69c",
      "tree": "ec71159908f1a78eb21e736d284ffe7ed7584b6c",
      "parents": [
        "d8169d4c369e8aa2fda10df705a4957331b5a4db"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 19 12:20:14 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:52 2012 -0700"
      },
      "message": "rcu: Reduce cache-miss initialization latencies for large systems\n\nCommit #0209f649 (rcu: limit rcu_node leaf-level fanout) set an upper\nlimit of 16 on the leaf-level fanout for the rcu_node tree.  This was\nneeded to reduce lock contention that was induced by the synchronization\nof scheduling-clock interrupts, which was in turn needed to improve\nenergy efficiency for moderate-sized lightly loaded servers.\n\nHowever, reducing the leaf-level fanout means that there are more\nleaf-level rcu_node structures in the tree, which in turn means that\nRCU\u0027s grace-period initialization incurs more cache misses.  This is\nnot a problem on moderate-sized servers with only a few tens of CPUs,\nbut becomes a major source of real-time latency spikes on systems with\nmany hundreds of CPUs.  In addition, the workloads running on these large\nsystems tend to be CPU-bound, which eliminates the energy-efficiency\nadvantages of synchronizing scheduling-clock interrupts.  Therefore,\nthese systems need maximal values for the rcu_node leaf-level fanout.\n\nThis commit addresses this problem by introducing a new kernel parameter\nnamed RCU_FANOUT_LEAF that directly controls the leaf-level fanout.\nThis parameter defaults to 16 to handle the common case of a moderate\nsized lightly loaded servers, but may be set higher on larger systems.\n\nReported-by: Mike Galbraith \u003cefault@gmx.de\u003e\nReported-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    }
  ],
  "next": "92c38702e98e58438c3760ebb279c40bbca8bd5f"
}
