)]}'
{
  "log": [
    {
      "commit": "8a2ecf474d3ee8dd5d001490349e422cec52f39f",
      "tree": "aa706d632a059dd10d9305cc6abbea5889a839d9",
      "parents": [
        "29e37d814188ac8d60f2120583704d3ef6d634b4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 02 15:42:04 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:13 2012 -0800"
      },
      "message": "rcu: Add RCU_NONIDLE() for idle-loop RCU read-side critical sections\n\nRCU, RCU-bh, and RCU-sched read-side critical sections are forbidden\nin the inner idle loop, that is, between the rcu_idle_enter() and the\nrcu_idle_exit() -- RCU will happily ignore any such read-side critical\nsections.  However, things like powertop need tracepoints in the inner\nidle loop.\n\nThis commit therefore provides an RCU_NONIDLE() macro that can be used to\nwrap code in the idle loop that requires RCU read-side critical sections.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Deepthi Dharwar \u003cdeepthi@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "29e37d814188ac8d60f2120583704d3ef6d634b4",
      "tree": "1619796097a7aead2c9bec3ba10a8b84f2643013",
      "parents": [
        "ce5df97be530e4746bf9a4ac14589a1cfdfd8efc"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Nov 17 16:55:56 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:12 2012 -0800"
      },
      "message": "rcu: Allow nesting of rcu_idle_enter() and rcu_idle_exit()\n\nUse of RCU in the idle loop is incorrect, quite a few instances of\njust that have made their way into mainline, primarily event tracing.\nThe problem with RCU read-side critical sections on CPUs that RCU believes\nto be idle is that RCU is completely ignoring the CPU, along with any\nattempts and RCU read-side critical sections.\n\nThe approaches of eliminating the offending uses and of pushing the\ndefinition of idle down beyond the offending uses have both proved\nimpractical.  The new approach is to encapsulate offending uses of RCU\nwith rcu_idle_exit() and rcu_idle_enter(), but this requires nesting\nfor code that is invoked both during idle and and during normal execution.\nTherefore, this commit modifies rcu_idle_enter() and rcu_idle_exit() to\npermit nesting.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Deepthi Dharwar \u003cdeepthi@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "486e259340fc4c60474f2c14703e3b3634bb58ca",
      "tree": "70a58702194588fa0773463523f72c682785d040",
      "parents": [
        "0bb7b59d6e2b8440cd7097097dd4bbfc4d76ed07"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jan 06 14:11:30 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:25 2012 -0800"
      },
      "message": "rcu: Avoid waking up CPUs having only kfree_rcu() callbacks\n\nWhen CONFIG_RCU_FAST_NO_HZ is enabled, RCU will allow a given CPU to\nenter dyntick-idle mode even if it still has RCU callbacks queued.\nRCU avoids system hangs in this case by scheduling a timer for several\njiffies in the future.  However, if all of the callbacks on that CPU\nare from kfree_rcu(), there is no reason to wake the CPU up, as it is\nnot a problem to defer freeing of memory.\n\nThis commit therefore tracks the number of callbacks on a given CPU\nthat are from kfree_rcu(), and avoids scheduling the timer if all of\na given CPU\u0027s callbacks are from kfree_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fe15d706cfc1cb321dbe2329b04b5ca185edff60",
      "tree": "bec14ab52167f4f0210e8c207c93922c8270402f",
      "parents": [
        "18fec7d8758dd416904da205375e6fa667defc80"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jan 04 13:30:33 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:23 2012 -0800"
      },
      "message": "rcu: Add lockdep-RCU checks for simple self-deadlock\n\nIt is illegal to have a grace period within a same-flavor RCU read-side\ncritical section, so this commit adds lockdep-RCU checks to splat when\nsuch abuse is encountered.  This commit does not detect more elaborate\nRCU deadlock situations.  These situations might be a job for lockdep\nenhancements.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4968c300e1fa5389fdf1f1ebd8b8e4aec9aa4a9e",
      "tree": "3424a8c3d2543096acad7319ec57fa8f62813620",
      "parents": [
        "101db7b41d8d6c070278bca1f7bce814ecbf781d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Dec 07 16:32:40 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:22 2011 -0800"
      },
      "message": "rcu: Augment rcu_batch_end tracing for idle and callback state\n\nThe current rcu_batch_end event trace records only the name of the RCU\nflavor and the total number of callbacks that remain queued on the\ncurrent CPU.  This is insufficient for testing and tuning the new\ndyntick-idle RCU_FAST_NO_HZ code, so this commit adds idle state along\nwith whether or not any of the callbacks that were ready to invoke\nat the beginning of rcu_do_batch() are still queued.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "99745b6a83414006f5c1e83efaebb423b41b67ef",
      "tree": "454ab3cf035a8d9a42f378066b166e8b2e6ba927",
      "parents": [
        "c4f3060843506ba6d473ab9a0afe5bd5dc93a00d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Nov 10 15:48:45 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:48 2011 -0800"
      },
      "message": "rcu: Make RCU use the new is_idle_task() API\n\nChange from direct comparison of -\u003epid with zero to is_idle_task().\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": "11dbaa8cb79a6e4a234a134898436f717a663f01",
      "tree": "79d18cd1af72016fcc54768388e46253208abe2e",
      "parents": [
        "aea1b35e29e658d42d7ba2237f3aa7f93e18509d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Nov 02 07:38:25 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:44 2011 -0800"
      },
      "message": "rcu: Fix idle-task checks\n\nRCU has traditionally relied on idle_cpu() to determine whether a given\nCPU is running in the context of an idle task, but commit 908a3283\n(Fix idle_cpu()) has invalidated this approach.  After commit 908a3283,\nidle_cpu() will return true if the current CPU is currently running the\nidle task, and will be doing so for the foreseeable future.  RCU instead\nneeds to know whether or not the current CPU is currently running the\nidle task, regardless of what the near future might bring.\n\nThis commit therefore switches from idle_cpu() to \"current-\u003epid !\u003d 0\".\n\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSuggested-by: Carsten Emde \u003cC.Emde@osadl.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nTested-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0989cb46783188ea7346ba6490be0046b9b7a725",
      "tree": "ab3ca7e6099efd9ca814e9202a679388f36ecc90",
      "parents": [
        "4145fa7fbee3ec1e61c52825b146192885d9759f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Nov 01 08:57:21 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:42 2011 -0800"
      },
      "message": "rcu: Add more information to the wrong-idle-task complaint\n\nThe current code just complains if the current task is not the idle task.\nThis commit therefore adds printing of the identity of the idle task.\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": "4145fa7fbee3ec1e61c52825b146192885d9759f",
      "tree": "58e0767a59bf110acb99da3fb5c1f0f0b5170be8",
      "parents": [
        "9ceae0e248fb553c702d51d5275167d462f4efd2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Oct 31 15:01:54 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:42 2011 -0800"
      },
      "message": "rcu: Deconfuse dynticks entry-exit tracing\n\nThe trace_rcu_dyntick() trace event did not print both the old and\nthe new value of the nesting level, and furthermore printed only\nthe low-order 32 bits of it.  This could result in some confusion\nwhen interpreting trace-event dumps, so this commit prints both\nthe old and the new value, prints the full 64 bits, and also selects\nthe process-entry/exit increment to print nicely in hexadecimal.\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": "e6b80a3b0994ea6c3d876d72464f2debbfcfeb05",
      "tree": "207337c207fecf2e05e52ffb3003831d240529fd",
      "parents": [
        "a0f8eefb127f5be07628954f310a7fc8c82b2fc3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 16:25:18 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:30 2011 -0800"
      },
      "message": "rcu: Detect illegal rcu dereference in extended quiescent state\n\nReport that none of the rcu read lock maps are held while in an RCU\nextended quiescent state (the section between rcu_idle_enter()\nand rcu_idle_exit()). This helps detect any use of rcu_dereference()\nand friends from within the section in idle where RCU is not allowed.\n\nThis way we can guarantee an extended quiescent window where the CPU\ncan be put in dyntick idle mode or can simply aoid to be part of any\nglobal grace period completion while in the idle loop.\n\nUses of RCU from such mode are totally ignored by RCU, hence the\nimportance of these checks.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9b2e4f1880b789be1f24f9684f7a54b90310b5c0",
      "tree": "1fa922e0616e298837a7079cb49118188a58186c",
      "parents": [
        "b804cb9e91c6c304959c69d4f9daeef4ffdba71c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Sep 30 12:10:22 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:24 2011 -0800"
      },
      "message": "rcu: Track idleness independent of idle tasks\n\nEarlier versions of RCU used the scheduling-clock tick to detect idleness\nby checking for the idle task, but handled idleness differently for\nCONFIG_NO_HZ\u003dy.  But there are now a number of uses of RCU read-side\ncritical sections in the idle task, for example, for tracing.  A more\nfine-grained detection of idleness is therefore required.\n\nThis commit presses the old dyntick-idle code into full-time service,\nso that rcu_idle_enter(), previously known as rcu_enter_nohz(), is\nalways invoked at the beginning of an idle loop iteration.  Similarly,\nrcu_idle_exit(), previously known as rcu_exit_nohz(), is always invoked\nat the end of an idle-loop iteration.  This allows the idle task to\nuse RCU everywhere except between consecutive rcu_idle_enter() and\nrcu_idle_exit() calls, in turn allowing architecture maintainers to\nspecify exactly where in the idle loop that RCU may be used.\n\nBecause some of the userspace upcall uses can result in what looks\nto RCU like half of an interrupt, it is not possible to expect that\nthe irq_enter() and irq_exit() hooks will give exact counts.  This\npatch therefore expands the -\u003edynticks_nesting counter to 64 bits\nand uses two separate bitfields to count process/idle transitions\nand interrupt entry/exit transitions.  It is presumed that userspace\nupcalls do not happen in the idle loop or from usermode execution\n(though usermode might do a system call that results in an upcall).\nThe counter is hard-reset on each process/idle transition, which\navoids the interrupt entry/exit error from accumulating.  Overflow\nis avoided by the 64-bitness of the -\u003edyntick_nesting counter.\n\nThis commit also adds warnings if a non-idle task asks RCU to enter\nidle state (and these checks will need some adjustment before applying\nFrederic\u0027s OS-jitter patches (http://lkml.org/lkml/2011/10/7/246).\nIn addition, validation of -\u003edynticks and -\u003edynticks_nesting is added.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "bdfa97bf7263657b83bc5b68567a3a60dde84c5b",
      "tree": "9bb8abdef63da8aa324808eb62009eaf732bd40f",
      "parents": [
        "72a59aaada499d9bbf19f2fb68daa37502e4a9bb"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Tue Oct 25 13:13:57 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:13 2011 -0400"
      },
      "message": "kernel: fix up module header handling in rcutiny files\n\nThe file rcutiny.c does not need moduleparam.h header, as\nthere are no modparams in this file.\n\nHowever rcutiny_plugin.h does define a module_init() and\na module_exit() and it uses the various MODULE_ macros, so\nit really does need module.h included.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "d4c08f2ac311a360230eef7e5395b0ec8d8f0670",
      "tree": "06e425b8153e076fbe43b037cf4497ac50afddb7",
      "parents": [
        "965a002b4f1a458c5dcb334ec29f48a0046faa25"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Jun 25 06:36:56 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:21 2011 -0700"
      },
      "message": "rcu: Add grace-period, quiescent-state, and call_rcu trace events\n\nAdd trace events to record grace-period start and end, quiescent states,\nCPUs noticing grace-period start and end, grace-period initialization,\ncall_rcu() invocation, tasks blocking in RCU read-side critical sections,\ntasks exiting those same critical sections, force_quiescent_state()\ndetection of dyntick-idle and offline CPUs, CPUs entering and leaving\ndyntick-idle mode (except from NMIs), CPUs coming online and going\noffline, and CPUs being kicked for staying in dyntick-idle mode for too\nlong (as in many weeks, even on 32-bit systems).\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\nrcu: Add the rcu flavor to callback trace events\n\nThe earlier trace events for registering RCU callbacks and for invoking\nthem did not include the RCU flavor (rcu_bh, rcu_preempt, or rcu_sched).\nThis commit adds the RCU flavor to those trace events.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "965a002b4f1a458c5dcb334ec29f48a0046faa25",
      "tree": "9aa3847fd44b322a73631758e7337632e5e3a32d",
      "parents": [
        "385680a9487d2f85382ad6d74e2a15837e47bfd9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sat Jun 18 09:55:39 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:20 2011 -0700"
      },
      "message": "rcu: Make TINY_RCU also use softirq for RCU_BOOST\u003dn\n\nThis patch #ifdefs TINY_RCU kthreads out of the kernel unless RCU_BOOST\u003dy,\nthus eliminating context-switch overhead if RCU priority boosting has\nnot been configured.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "72fe701b70e6ced35d734b676c13efbc8fc769a9",
      "tree": "87bece8406b18e27409a33355c384c9f759915ae",
      "parents": [
        "e99033c5c160f1f247c665923a66acec693a967c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 21 01:14:54 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:15 2011 -0700"
      },
      "message": "rcu: Add RCU type to callback-invocation tracing\n\nAdd a string to the rcu_batch_start() and rcu_batch_end() trace\nmessages that indicates the RCU type (\"rcu_sched\", \"rcu_bh\", or\n\"rcu_preempt\").  The trace messages for the actual invocations\nthemselves are not marked, as it should be clear from the\nrcu_batch_start() and rcu_batch_end() events before and after.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e99033c5c160f1f247c665923a66acec693a967c",
      "tree": "c5b0863ad4b673134070872a159055237186f0fe",
      "parents": [
        "300df91ca9358f7f09298eec9503c12b32054ef7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 21 00:13:44 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:14 2011 -0700"
      },
      "message": "rcu: Put names into TINY_RCU structures under RCU_TRACE\n\nIn order to allow event tracing to distinguish between flavors of\nRCU, we need those names in the relevant RCU data structures.  TINY_RCU\nhas avoided them for memory-footprint reasons, so add them only if\nCONFIG_RCU_TRACE\u003dy.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "29c00b4a1d9e277786120032aa8364631820d863",
      "tree": "23bf0c8cdb5268ef92ef9ed007639705e922b1b0",
      "parents": [
        "9d68197c05201d8edc70d58bd1d5dad05d8455e8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jun 17 15:53:19 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:12 2011 -0700"
      },
      "message": "rcu: Add event-tracing for RCU callback invocation\n\nThere was recently some controversy about the overhead of invoking RCU\ncallbacks.  Add TRACE_EVENT()s to obtain fine-grained timings for the\nstart and stop of a batch of callbacks and also for each callback invoked.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2c42818e962e2858334bf45bfc56662b3752df34",
      "tree": "192364123c9aeeab282c53168e51eddece9d8be4",
      "parents": [
        "f039d1f1884b2fe9c13d28f59d8330f0b0518fc4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 26 22:14:36 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:42 2011 -0700"
      },
      "message": "rcu: Abstract common code for RCU grace-period-wait primitives\n\nPull the code that waits for an RCU grace period into a single function,\nwhich is then called by synchronize_rcu() and friends in the case of\nTREE_RCU and TREE_PREEMPT_RCU, and from rcu_barrier() and friends in\nthe case of TINY_RCU and TINY_PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "268bb0ce3e87872cb9290c322b0d35bce230d88f",
      "tree": "c8331ade4a3e24fc589c4eb62731bc2312d35333",
      "parents": [
        "257313b2a87795e07a0bdf58d0fffbdba8b31051"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 12:50:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 12:50:29 2011 -0700"
      },
      "message": "sanitize \u003clinux/prefetch.h\u003e usage\n\nCommit e66eed651fd1 (\"list: remove prefetching from regular list\niterators\") removed the include of prefetch.h from list.h, which\nuncovered several cases that had apparently relied on that rather\nobscure header file dependency.\n\nSo this fixes things up a bit, using\n\n   grep -L linux/prefetch.h $(git grep -l \u0027[^a-z_]prefetchw*(\u0027 -- \u0027*.[ch]\u0027)\n   grep -L \u0027prefetchw*(\u0027 $(git grep -l \u0027linux/prefetch.h\u0027 -- \u0027*.[ch]\u0027)\n\nto guide us in finding files that either need \u003clinux/prefetch.h\u003e\ninclusion, or have it despite not needing it.\n\nThere are more of them around (mostly network drivers), but this gets\nmany core ones.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b554d7de8d112fca4188da3bf0d7f8b56f42fb95",
      "tree": "3641a25b7356da1bdcb52f6ff160f605ed778cd4",
      "parents": [
        "2655d57ef35aa327a2e58a1c5dc7b65c65003f4e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 28 07:23:45 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:59 2011 -0700"
      },
      "message": "rcu: optimize rcutiny\n\nrcu_sched_qs() currently calls local_irq_save()/local_irq_restore() up\nto three times.\n\nRemove irq masking from rcu_qsctr_help() / invoke_rcu_kthread()\nand do it once in rcu_sched_qs() / rcu_bh_qs()\n\nThis generates smaller code as well.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n   2314\t    156\t     24\t   2494\t    9be\tkernel/rcutiny.old.o\n   2250\t    156\t     24\t   2430\t    97e\tkernel/rcutiny.new.o\n\nFix an outdated comment for rcu_qsctr_help()\nMove invoke_rcu_kthread() definition before its use.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@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": "9ab1544eb4196ca8d05c433b2eb56f74496b1ee3",
      "tree": "be3a7897cf52920df4da41ded060e23150bdb849",
      "parents": [
        "6cc68793e380bb51f447d8d02af873b7bc01f222"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 11:15:47 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:59 2011 -0700"
      },
      "message": "rcu: introduce kfree_rcu()\n\nMany rcu callbacks functions just call kfree() on the base structure.\nThese functions are trivial, but their size adds up, and furthermore\nwhen they are used in a kernel module, that module must invoke the\nhigh-latency rcu_barrier() function at module-unload time.\n\nThe kfree_rcu() function introduced by this commit addresses this issue.\nRather than encoding a function address in the embedded rcu_head\nstructure, kfree_rcu() instead encodes the offset of the rcu_head\nstructure within the base structure.  Because the functions are not\nallowed in the low-order 4096 bytes of kernel virtual memory, offsets\nup to 4095 bytes can be accommodated.  If the offset is larger than\n4095 bytes, a compile-time error will be generated in __kfree_rcu().\nIf this error is triggered, you can either fall back to use of call_rcu()\nor rearrange the structure to position the rcu_head structure into the\nfirst 4096 bytes.\n\nNote that the allowable offset might decrease in the future, for example,\nto allow something like kmem_cache_free_rcu().\n\nThe new kfree_rcu() function can replace code as follows:\n\n\tcall_rcu(\u0026p-\u003ercu, simple_kfree_callback);\n\nwhere \"simple_kfree_callback()\" might be defined as follows:\n\n\tvoid simple_kfree_callback(struct rcu_head *p)\n\t{\n\t\tstruct foo *q \u003d container_of(p, struct foo, rcu);\n\n\t\tkfree(q);\n\t}\n\nwith the following:\n\n\tkfree_rcu(\u0026p-\u003ercu, rcu);\n\nNote that the \"rcu\" is the name of a field in the structure being\nfreed.  The reason for using this rather than passing in a pointer\nto the base structure is that the above approach allows better type\nchecking.\n\nThis commit is based on earlier work by Lai Jiangshan and Manfred Spraul:\n\nLai\u0027s V1 patch: http://lkml.org/lkml/2008/9/18/1\nManfred\u0027s patch: http://lkml.org/lkml/2009/1/2/115\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "b24efdfdf679cf9b05947c531971905fc727dd40",
      "tree": "06d8532819315ad0aa84d8ff64a1d35901b018fb",
      "parents": [
        "c072a388d59a1d48e36864d0e66f42d71745be1c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Jan 12 14:18:11 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jan 14 04:58:08 2011 -0800"
      },
      "message": "rcu: avoid pointless blocked-task warnings\n\nIf the RCU callback-processing kthread has nothing to do, it parks in\na wait_event().  If RCU remains idle for more than two minutes, the\nkernel complains about this.  This commit changes from wait_event()\nto wait_event_interruptible() to prevent the kernel from complaining\njust because RCU is idle.\n\nReported-by: Russell King \u003crmk+kernel@arm.linux.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\nTested-by: Thomas Weber \u003cweber@corscience.de\u003e\nTested-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "9e571a82f0cb205a65a0ea41657f19f22b7fabb8",
      "tree": "64a83a06e18d0fd82af91560a2bf0947e0e3d071",
      "parents": [
        "24278d148316d2180be6df40e06db013d8b232b8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 30 21:26:52 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:55 2010 -0800"
      },
      "message": "rcu: add tracing for TINY_RCU and TINY_PREEMPT_RCU\n\nAdd tracing for the tiny RCU implementations, including statistics on\nboosting in the case of TINY_PREEMPT_RCU and RCU_BOOST.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "24278d148316d2180be6df40e06db013d8b232b8",
      "tree": "6a579d483f8f799b352e39b972a7e03cc6204fc1",
      "parents": [
        "b2c0710c464ede15e1fc52fb1e7ee9ba54cea186"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Sep 27 17:25:23 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:54 2010 -0800"
      },
      "message": "rcu: priority boosting for TINY_PREEMPT_RCU\n\nAdd priority boosting, but only for TINY_PREEMPT_RCU.  This is enabled\nby the default-off RCU_BOOST kernel parameter.  The priority to which to\nboost preempted RCU readers is controlled by the RCU_BOOST_PRIO kernel\nparameter (defaulting to real-time priority 1) and the time to wait\nbefore boosting the readers blocking a given grace period is controlled\nby the RCU_BOOST_DELAY kernel parameter (defaulting to 500 milliseconds).\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b2c0710c464ede15e1fc52fb1e7ee9ba54cea186",
      "tree": "7524518fec8a02e53c3fab558b40a5e94f0bb5ec",
      "parents": [
        "8e8be45e8e55daa381028aec339829929ddb53a5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Sep 09 13:40:39 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Nov 17 15:45:09 2010 -0800"
      },
      "message": "rcu: move TINY_RCU from softirq to kthread\n\nIf RCU priority boosting is to be meaningful, callback invocation must\nbe boosted in addition to preempted RCU readers.  Otherwise, in presence\nof CPU real-time threads, the grace period ends, but the callbacks don\u0027t\nget invoked.  If the callbacks don\u0027t get invoked, the associated memory\ndoesn\u0027t get freed, so the system is still subject to OOM.\n\nBut it is not reasonable to priority-boost RCU_SOFTIRQ, so this commit\nmoves the callback invocations to a kthread, which can be boosted easily.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a57eb940d130477a799dfb24a570ee04979c0f7f",
      "tree": "5add1c135a302cf1c1a454b0620ed17eb802923b",
      "parents": [
        "4d87ffadbba88105f33271bef5f2c79366c6a4e1"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jun 29 16:49:16 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 08:55:00 2010 -0700"
      },
      "message": "rcu: Add a TINY_PREEMPT_RCU\n\nImplement a small-memory-footprint uniprocessor-only implementation of\npreemptible RCU.  This implementation uses but a single blocked-tasks\nlist rather than the combinatorial number used per leaf rcu_node by\nTREE_PREEMPT_RCU, which reduces memory consumption and greatly simplifies\nprocessing.  This version also takes advantage of uniprocessor execution\nto accelerate grace periods in the case where there are no readers.\n\nThe general design is otherwise broadly similar to that of TREE_PREEMPT_RCU.\n\nThis implementation is a step towards having RCU implementation driven\noff of the SMP and PREEMPT kernel configuration variables, which can\nhappen once this implementation has accumulated sufficient experience.\n\nRemoved ACCESS_ONCE() from __rcu_read_unlock() and added barrier() as\nsuggested by Steve Rostedt in order to avoid the compiler-reordering\nissue noted by Mathieu Desnoyers (http://lkml.org/lkml/2010/8/16/183).\n\nAs can be seen below, CONFIG_TINY_PREEMPT_RCU represents almost 5Kbyte\nsavings compared to CONFIG_TREE_PREEMPT_RCU.  Of course, for non-real-time\nworkloads, CONFIG_TINY_RCU is even better.\n\n\tCONFIG_TREE_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   6170\t    825\t     28\t   7023\t   kernel/rcutree.o\n\t\t\t\t   ----\n\t\t\t\t   7026    Total\n\n\tCONFIG_TINY_PREEMPT_RCU\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t   2081\t     81\t      8\t   2170\t   kernel/rcutiny.o\n\t\t\t\t   ----\n\t\t\t\t   2183    Total\n\n\tCONFIG_TINY_RCU (non-preemptible)\n\n\t   text\t   data\t    bss\t    dec\t   filename\n\t     13\t      0\t      0\t     13\t   kernel/rcupdate.o\n\t    719\t     25\t      0\t    744\t   kernel/rcutiny.o\n\t\t\t\t    ---\n\t\t\t\t    757    Total\n\nRequested-by: Loïc Minier \u003cloic.minier@canonical.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "551d55a944b143ef26fbd482d1c463199d6f65cf",
      "tree": "6911d3f8e8719ba5ca43c83acdf87cbc8276d7d1",
      "parents": [
        "875352c94224c88f5aa28cb77206f993bd31b7a2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:42 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 14 16:37:26 2010 -0700"
      },
      "message": "tree/tiny rcu: Add debug RCU head objects\n\nHelps finding racy users of call_rcu(), which results in hangs because list\nentries are overwritten and/or skipped.\n\nChangelog since v4:\n- Bissectability is now OK\n- Now generate a WARN_ON_ONCE() for non-initialized rcu_head passed to\n  call_rcu(). Statically initialized objects are detected with\n  object_is_static().\n- Rename rcu_head_init_on_stack to init_rcu_head_on_stack.\n- Remove init_rcu_head() completely.\n\nChangelog since v3:\n- Include comments from Lai Jiangshan\n\nThis new patch version is based on the debugobjects with the newly introduced\n\"active state\" tracker.\n\nNon-initialized entries are all considered as \"statically initialized\". An\nactivation fixup (triggered by call_rcu()) takes care of performing the debug\nobject initialization without issuing any warning. Since we cannot increase the\nsize of struct rcu_head, I don\u0027t see much room to put an identifier for\nstatically initialized rcu_head structures. So for now, we have to live without\n\"activation without explicit init\" detection. But the main purpose of this debug\noption is to detect double-activations (double call_rcu() use of a rcu_head\nbefore the callback is executed), which is correctly addressed here.\n\nThis also detects potential internal RCU callback corruption, which would cause\nthe callbacks to be executed twice.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: tglx@linutronix.de\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "72d5a9f7a9542f88397558c65bcfc3b115a65e34",
      "tree": "e46d3ad1948de45b9641d1a8b88f88bfb3809007",
      "parents": [
        "4376030a54860dedab9d848dfa7cc700a6025c0b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 17:12:17 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 11 16:10:47 2010 -0700"
      },
      "message": "rcu: remove all rcu head initializations, except on_stack initializations\n\nRemove all rcu head inits. We don\u0027t care about the RCU head state before passing\nit to call_rcu() anyway. Only leave the \"on_stack\" variants so debugobjects can\nkeep track of objects on stack.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bbad937983147c017c25406860287cb94da9af7c",
      "tree": "57311598c360b92b189c7ec337146e4bc779c73d",
      "parents": [
        "25502a6c13745f4650cc59322bd198194f55e796"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 02 16:17:17 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:34 2010 -0700"
      },
      "message": "rcu: slim down rcutiny by removing rcu_scheduler_active and friends\n\nTINY_RCU does not need rcu_scheduler_active unless CONFIG_DEBUG_LOCK_ALLOC.\nSo conditionally compile rcu_scheduler_active in order to slim down\nrcutiny a bit more.  Also gets rid of an EXPORT_SYMBOL_GPL, which is\nresponsible for most of the slimming.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "99652b54de1ee094236f7171485214071af4ef31",
      "tree": "fd3691aacd46a6afd9ee6ae6f38ca5e9aafb5783",
      "parents": [
        "da848c47bc6e873a54a445ea1960423a495b6b32"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 15:50:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: rename rcutiny rcu_ctrlblk to rcu_sched_ctrlblk\n\nMake naming line up in preparation for CONFIG_TINY_PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "da848c47bc6e873a54a445ea1960423a495b6b32",
      "tree": "4c0eaef1a5990585730f00caca0cfcba21fe9f9f",
      "parents": [
        "32c141a0a1dfa29e0a07d78bec0c0919fc4b9f88"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 15:46:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: shrink rcutiny by making synchronize_rcu_bh() be inline\n\nBecause synchronize_rcu_bh() is identical to synchronize_sched(),\nmake the former a static inline invoking the latter, saving the\noverhead of an EXPORT_SYMBOL_GPL() and the duplicate code.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9f680ab41485edfdc96331b70afa7513aa0a7720",
      "tree": "620b34f8129c0ea4ddee033c9875a9f60bfba2ae",
      "parents": [
        "b668c9cf3e58739dac54a1d6f42f2b4bdd980b3e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Nov 22 08:53:49 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 22 18:58:16 2009 +0100"
      },
      "message": "rcu: Eliminate unneeded function wrapping\n\nThe functions rcu_init() is a wrapper for __rcu_init(), and also\nsets up the CPU-hotplug notifier for rcu_barrier_cpu_hotplug().\nBut TINY_RCU doesn\u0027t need CPU-hotplug notification, and the\nrcu_barrier_cpu_hotplug() is a simple wrapper for\nrcu_cpu_notify().\n\nSo push rcu_init() out to kernel/rcutree.c and kernel/rcutiny.c\nand get rid of the wrapper function rcu_barrier_cpu_hotplug().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12589088302320-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4ce5b90340879ce93d169b7b523c2cbbe7c45843",
      "tree": "1372672a37f331a49c3825876a4c3e71ad2df3a0",
      "parents": [
        "cf886c44ec418a01b2c52493465accb81acbf930"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 26 07:55:55 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 26 09:40:40 2009 +0100"
      },
      "message": "rcu: Do tiny cleanups in rcutiny\n\nNo change in functionality - just straighten out a few small\nstylistic details.\n\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: avi@redhat.com\nCc: mtosatti@redhat.com\nLKML-Reference: \u003c12565226351355-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9b1d82fa1611706fa7ee1505f290160a18caf95d",
      "tree": "7b2eed068360465d0b028d345eb318b1a8217305",
      "parents": [
        "0edf1a683e499191b27a067956ae9f5fa6e046c6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Oct 25 19:03:50 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 26 09:40:29 2009 +0100"
      },
      "message": "rcu: \"Tiny RCU\", The Bloatwatch Edition\n\nThis patch is a version of RCU designed for !SMP provided for a\nsmall-footprint RCU implementation.  In particular, the\nimplementation of synchronize_rcu() is extremely lightweight and\nhigh performance. It passes rcutorture testing in each of the\nfour relevant configurations (combinations of NO_HZ and PREEMPT)\non x86.  This saves about 1K bytes compared to old Classic RCU\n(which is no longer in mainline), and more than three kilobytes\ncompared to Hierarchical RCU (updated to 2.6.30):\n\n\tCONFIG_TREE_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t    183       4       0     187     kernel/rcupdate.o\n\t   2783     520      36    3339     kernel/rcutree.o\n\t\t\t\t   3526 Total (vs 4565 for v7)\n\n\tCONFIG_TREE_PREEMPT_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t    263       4       0     267     kernel/rcupdate.o\n\t   4594     776      52    5422     kernel/rcutree.o\n\t   \t\t\t   5689 Total (6155 for v7)\n\n\tCONFIG_TINY_RCU:\n\n\t   text\t   data\t    bss\t    dec\t    filename\n\t     96       4       0     100     kernel/rcupdate.o\n\t    734      24       0     758     kernel/rcutiny.o\n\t    \t\t\t    858 Total (vs 848 for v7)\n\nThe above is for x86.  Your mileage may vary on other platforms.\nFurther compression is possible, but is being procrastinated.\n\nChanges from v7 (http://lkml.org/lkml/2009/10/9/388)\n\no\tApply Lai Jiangshan\u0027s review comments (aside from\nmight_sleep() \tin synchronize_sched(), which is covered by SMP builds).\n\no\tFix up expedited primitives.\n\nChanges from v6 (http://lkml.org/lkml/2009/9/23/293).\n\no\tForward ported to put it into the 2.6.33 stream.\n\no\tAdded lockdep support.\n\no\tMake lightweight rcu_barrier.\n\nChanges from v5 (http://lkml.org/lkml/2009/6/23/12).\n\no\tPorted to latest pre-2.6.32 merge window kernel.\n\n\t- Renamed rcu_qsctr_inc() to rcu_sched_qs().\n\t- Renamed rcu_bh_qsctr_inc() to rcu_bh_qs().\n\t- Provided trivial rcu_cpu_notify().\n\t- Provided trivial exit_rcu().\n\t- Provided trivial rcu_needs_cpu().\n\t- Fixed up the rcu_*_enter/exit() functions in linux/hardirq.h.\n\no\tRemoved the dependence on EMBEDDED, with a view to making\n\tTINY_RCU default for !SMP at some time in the future.\n\no\tAdded (trivial) support for expedited grace periods.\n\nChanges from v4 (http://lkml.org/lkml/2009/5/2/91) include:\n\no\tSqueeze the size down a bit further by removing the\n\t-\u003ecompleted field from struct rcu_ctrlblk.\n\no\tThis permits synchronize_rcu() to become the empty function.\n\tPrevious concerns about rcutorture were unfounded, as\n\trcutorture correctly handles a constant value from\n\trcu_batches_completed() and rcu_batches_completed_bh().\n\nChanges from v3 (http://lkml.org/lkml/2009/3/29/221) include:\n\no\tChanged rcu_batches_completed(), rcu_batches_completed_bh()\n\trcu_enter_nohz(), rcu_exit_nohz(), rcu_nmi_enter(), and\n\trcu_nmi_exit(), to be static inlines, as suggested by David\n\tHowells.  Doing this saves about 100 bytes from rcutiny.o.\n\t(The numbers between v3 and this v4 of the patch are not directly\n\tcomparable, since they are against different versions of Linux.)\n\nChanges from v2 (http://lkml.org/lkml/2009/2/3/333) include:\n\no\tFix whitespace issues.\n\no\tChange short-circuit \"||\" operator to instead be \"+\" in order\nto \tfix performance bug noted by \"kraai\" on LWN.\n\n\t\t(http://lwn.net/Articles/324348/)\n\nChanges from v1 (http://lkml.org/lkml/2009/1/13/440) include:\n\no\tThis version depends on EMBEDDED as well as !SMP, as suggested\n\tby Ingo.\n\no\tUpdated rcu_needs_cpu() to unconditionally return zero,\n\tpermitting the CPU to enter dynticks-idle mode at any time.\n\tThis works because callbacks can be invoked upon entry to\n\tdynticks-idle mode.\n\no\tPaul is now OK with this being included, based on a poll at\nthe \tKernel Miniconf at linux.conf.au, where about ten people said\n\tthat they cared about saving 900 bytes on single-CPU systems.\n\no\tApplies to both mainline and tip/core/rcu.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: avi@redhat.com\nCc: mtosatti@redhat.com\nLKML-Reference: \u003c12565226351355-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
