)]}'
{
  "log": [
    {
      "commit": "bf3d846b783327359ddc4bd4f52627b36abb4d1d",
      "tree": "c6b8fddbf04a2962dfcf9f487af25033f11b10b9",
      "parents": [
        "54c0a4b46150db1571d955d598cd342c9f1d9657",
        "f6500801522c61782d4990fa1ad96154cb397cd4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 28 08:38:04 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 28 08:38:04 2014 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs updates from Al Viro:\n \"Assorted stuff; the biggest pile here is Christoph\u0027s ACL series.  Plus\n  assorted cleanups and fixes all over the place...\n\n  There will be another pile later this week\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (43 commits)\n  __dentry_path() fixes\n  vfs: Remove second variable named error in __dentry_path\n  vfs: Is mounted should be testing mnt_ns for NULL or error.\n  Fix race when checking i_size on direct i/o read\n  hfsplus: remove can_set_xattr\n  nfsd: use get_acl and -\u003eset_acl\n  fs: remove generic_acl\n  nfs: use generic posix ACL infrastructure for v3 Posix ACLs\n  gfs2: use generic posix ACL infrastructure\n  jfs: use generic posix ACL infrastructure\n  xfs: use generic posix ACL infrastructure\n  reiserfs: use generic posix ACL infrastructure\n  ocfs2: use generic posix ACL infrastructure\n  jffs2: use generic posix ACL infrastructure\n  hfsplus: use generic posix ACL infrastructure\n  f2fs: use generic posix ACL infrastructure\n  ext2/3/4: use generic posix ACL infrastructure\n  btrfs: use generic posix ACL infrastructure\n  fs: make posix_acl_create more useful\n  fs: make posix_acl_chmod more useful\n  ...\n"
    },
    {
      "commit": "a8d4b8345e0ee48b732126d980efaf0dc373e2b0",
      "tree": "4bdfc52ef4ad176f54e4ce7b81091c0fbef0fd04",
      "parents": [
        "2ccdc413196b43a02bb68b46be5b68850904e9ea"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jan 11 19:19:32 2014 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 25 03:14:36 2014 -0500"
      },
      "message": "introduce __fcheck_files() to fix rcu_dereference_check_fdtable(), kill rcu_my_thread_group_empty()\n\nrcu_dereference_check_fdtable() looks very wrong,\n\n1. rcu_my_thread_group_empty() was added by 844b9a8707f1 \"vfs: fix\n   RCU-lockdep false positive due to /proc\" but it doesn\u0027t really\n   fix the problem. A CLONE_THREAD (without CLONE_FILES) task can\n   hit the same race with get_files_struct().\n\n   And otoh rcu_my_thread_group_empty() can suppress the correct\n   warning if the caller is the CLONE_FILES (without CLONE_THREAD)\n   task.\n\n2. files-\u003ecount \u003d\u003d 1 check is not really right too. Even if this\n   files_struct is not shared it is not safe to access it lockless\n   unless the caller is the owner.\n\n   Otoh, this check is sub-optimal. files-\u003ecount \u003d\u003d 0 always means\n   it is safe to use it lockless even if files !\u003d current-\u003efiles,\n   but put_files_struct() has to take rcu_read_lock(). See the next\n   patch.\n\nThis patch removes the buggy checks and turns fcheck_files() into\n__fcheck_files() which uses rcu_dereference_raw(), the \"unshared\"\ncallers, fget_light() and fget_raw_light(), can use it to avoid\nthe warning from RCU-lockdep.\n\nfcheck_files() is trivially reimplemented as rcu_lockdep_assert()\nplus __fcheck_files().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0d3c55bc9fd58393bd3bd9974991ec1f815e1326",
      "tree": "e43037568ea831bef8c02d7b1fd768fb41ffc790",
      "parents": [
        "6c43c091bdc56b8cab888cfa6b0ee9effb5fc255",
        "bd73a7f5cd434f5aa611c9043490911c32084270",
        "0e342a87d5f0cd06697c3fdc5e8b49c61e558231",
        "462225ae47d7175f886281d8a91708550cd5178c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:35:38 2013 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:35:38 2013 -0800"
      },
      "message": "Merge branches \u0027doc.2013.12.03a\u0027, \u0027fixes.2013.12.12a\u0027, \u0027rcutorture.2013.12.03a\u0027 and \u0027sparse.2013.12.12a\u0027 into HEAD\n\ndoc.2013.12.03a: Topic branch for documentation changes.\nfixes.2013.12.12a: Topic branch for miscellaneous fixes.\nrcutorture.2013.12.03a: Topic branch for new rcutorture/KVM scripting.\nsparse.2013.12.12a: Topic branch for sparse-RCU changes.\n"
    },
    {
      "commit": "584dc4ce55267765b415a8517613d1207f1741e5",
      "tree": "e00dd5664b14f42ff7bc37e44808ba0919f56bf5",
      "parents": [
        "d10089508613f42b8b54cf33456a821c7cf3d442"
      ],
      "author": {
        "name": "Teodora Baluta",
        "email": "teobaluta@gmail.com",
        "time": "Mon Nov 11 17:11:23 2013 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:34:16 2013 -0800"
      },
      "message": "rcu: Remove \"extern\" from function declarations in include/linux/*rcu*.h\n\nFunction prototypes don\u0027t need to have the \"extern\" keyword since this\nis the default behavior. Its explicit use is redundant.  This commit\ntherefore removes them.\n\nSigned-off-by: Teodora Baluta \u003cteobaluta@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "462225ae47d7175f886281d8a91708550cd5178c",
      "tree": "46048d886502e6a177a485a965f5f3371f545d43",
      "parents": [
        "9d162cd06349dfee6b4f254b3abf1355cf0aee43"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 11 09:59:34 2013 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:24:23 2013 -0800"
      },
      "message": "rcu: Add an RCU_INITIALIZER for global RCU-protected pointers\n\nThere is currently no way to initialize a global RCU-protected pointer\nwithout either putting up with sparse complaints or open-coding an\nobscure cast.  This commit therefore creates RCU_INITIALIZER(), which\nis intended to be used as follows:\n\n\tstruct foo __rcu *p \u003d RCU_INITIALIZER(\u0026my_rcu_structure);\n\nThis commit also applies RCU_INITIALIZER() to eliminate repeated\nopen-coded obscure casts in __rcu_assign_pointer(), RCU_INIT_POINTER(),\nand RCU_POINTER_INITIALIZER().  This commit also inlines\n__rcu_assign_pointer() into its only caller, rcu_assign_pointer().\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9d162cd06349dfee6b4f254b3abf1355cf0aee43",
      "tree": "307513abf19d6dffb78929c1c60f4a68f59d903a",
      "parents": [
        "36708b89e00951b004b4dd6c14181301e2e98354"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josh@joshtriplett.org",
        "time": "Sun Sep 01 16:42:52 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:19:22 2013 -0800"
      },
      "message": "rcu: Make rcu_assign_pointer\u0027s assignment volatile and type-safe\n\nThe rcu_assign_pointer() primitive needs to use ACCESS_ONCE to make\nthe assignment to the destination pointer volatile, to protect against\ncompilers too clever for their own good.\n\nSigned-off-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ac7c8e3dd2ed6489be1f6bc722029fb4855c3a34",
      "tree": "40b1cd4b40f3fee8104cbf666cf930b24531cc6d",
      "parents": [
        "dc1ccc48159d63eca5089e507c82c7d22ef60839"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Oct 11 10:17:39 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Dec 12 12:19:08 2013 -0800"
      },
      "message": "rcu: Add comment on evaluate-once properties of rcu_assign_pointer().\n\nThe rcu_assign_pointer() macro, as with most cpp macros, must not evaluate\nits argument more than once.  And it in fact does not.  But this might\nnot be obvious to the casual observer, because one of the arguments\nappears no less than three times.  However, but one expansion is only\nvisible to sparse (__CHECKER__), and one lives inside a typeof (where\nit will never be evaluated), so this is in fact safe.\n\nThis commit therefore adds a comment making this explicit.\n\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": "24ef659a857c3cba40b64ea51ea4fce8d2fb7bbc",
      "tree": "a3059c0605de74b27d67bcfbb58bceabf3dff948",
      "parents": [
        "bc72d962d6a0ba8d9d5314d04fd1775261a9ec79"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Oct 28 09:22:24 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Dec 09 15:12:39 2013 -0800"
      },
      "message": "rcu: Provide better diagnostics for blocking in RCU callback functions\n\nCurrently blocking in an RCU callback function will result in\n\"scheduling while atomic\", which could be triggered for any number\nof reasons.  To aid debugging, this patch introduces a rcu_callback_map\nthat is used to tie the inappropriate voluntary context switch back\nto the fact that the function is being invoked from within a callback.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5c173eb8bcb9c1aa888bd6d14a4cb746f3dd2420",
      "tree": "5dd725412d2bccbdf0bcee0ac8fefc1f1a3d18c8",
      "parents": [
        "f9ffc31ebd38d2d74dbfe9f0b67274e99ad668f5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 13 17:20:11 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 25 06:45:06 2013 -0700"
      },
      "message": "rcu: Consistent rcu_is_watching() naming\n\nThe old rcu_is_cpu_idle() function is just __rcu_is_watching() with\npreemption disabled.  This commit therefore renames rcu_is_cpu_idle()\nto rcu_is_watching.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "cc6783f788d8fe8b23ec6fc2762f5e8c9a418eee",
      "tree": "dfecd009a80c422393c2c6130d9a38ec7329e851",
      "parents": [
        "c337f8f58ed7cf150651d232af8222421a71463d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Sep 06 17:39:49 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 25 06:44:41 2013 -0700"
      },
      "message": "rcu: Is it safe to enter an RCU read-side critical section?\n\nThere is currently no way for kernel code to determine whether it\nis safe to enter an RCU read-side critical section, in other words,\nwhether or not RCU is paying attention to the currently running CPU.\nGiven the large and increasing quantity of code shared by the idle loop\nand non-idle code, the this shortcoming is becoming increasingly painful.\n\nThis commit therefore adds __rcu_is_watching(), which returns true if\nit is safe to enter an RCU read-side critical section on the currently\nrunning CPU.  This function is quite fast, using only a __this_cpu_read().\nHowever, the caller must disable preemption.\n\nReported-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "0edd1b1784cbdad55aca2c1293be018f53c0ab1d",
      "tree": "61e17002ce447f0042a65429cfa33c6462f872a1",
      "parents": [
        "217af2a2ffbfc1498d1cf3a89fa478b5632df8f7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jun 21 16:37:22 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 31 14:43:50 2013 -0700"
      },
      "message": "nohz_full: Add full-system-idle state machine\n\nThis commit adds the state machine that takes the per-CPU idle data\nas input and produces a full-system-idle indication as output.  This\nstate machine is driven out of RCU\u0027s quiescent-state-forcing\nmechanism, which invokes rcu_sysidle_check_cpu() to collect per-CPU\nidle state and then rcu_sysidle_report() to drive the state machine.\n\nThe full-system-idle state is sampled using rcu_sys_is_idle(), which\nalso drives the state machine if RCU is idle (and does so by forcing\nRCU to become non-idle).  This function returns true if all but the\ntimekeeping CPU (tick_do_timer_cpu) are idle and have been idle long\nenough to avoid memory contention on the full_sysidle_state state\nvariable.  The rcu_sysidle_force_exit() may be called externally\nto reset the state machine back into non-idle state.\n\nFor large systems the state machine is driven out of RCU\u0027s\nforce-quiescent-state logic, which provides good scalability at the price\nof millisecond-scale latencies on the transition to full-system-idle\nstate.  This is not so good for battery-powered systems, which are usually\nsmall enough that they don\u0027t need to care about scalability, but which\ndo care deeply about energy efficiency.  Small systems therefore drive\nthe state machine directly out of the idle-entry code.  The number of\nCPUs in a \"small\" system is defined by a new NO_HZ_FULL_SYSIDLE_SMALL\nKconfig parameter, which defaults to 8.  Note that this is a build-time\ndefinition.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n[ paulmck: Use true and false for boolean constants per Lai Jiangshan. ]\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n[ paulmck: Simplify logic and provide better comments for memory barriers,\n  based on review comments and questions by Lai Jiangshan. ]\n"
    },
    {
      "commit": "feed66ed26a53e700ca02ce1744fed7d0c647292",
      "tree": "63ce47c2a3882ff58c281ea53f3b19afaa1a4882",
      "parents": [
        "f7f7bac9cb1c50783f15937a11743655a5756a36"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 09 08:55:54 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Aug 18 18:06:44 2013 -0700"
      },
      "message": "rcu: Eliminate unused APIs intended for adaptive ticks\n\nThe rcu_user_enter_after_irq() and rcu_user_exit_after_irq()\nfunctions were intended for use by adaptive ticks, but changes\nin implementation have rendered them unnecessary.  This commit\ntherefore removes them.\n\nReported-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": "e66c33d579ea566d10e8c8695a7168aae3e02992",
      "tree": "b316d091004d823319afb6995539d4ad09386296",
      "parents": [
        "102c9323c35a83789ad5ebd3c45fa8fb389add88"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jul 12 16:50:28 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 29 17:07:49 2013 -0400"
      },
      "message": "rcu: Add const annotation to char * for RCU tracepoints and functions\n\nAll the RCU tracepoints and functions that reference char pointers do\nso with just \u0027char *\u0027 even though they do not modify the contents of\nthe string itself. This will cause warnings if a const char * is used\nin one of these functions.\n\nThe RCU tracepoints store the pointer to the string to refer back to them\nwhen the trace output is displayed. As this can be minutes, hours or\neven days later, those strings had better be constant.\n\nThis change also opens the door to allow the RCU tracepoint strings and\ntheir addresses to be exported so that userspace tracing tools can\ntranslate the contents of the pointers of the RCU tracepoints.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2439b696cb5303f1eeb6aeebcee19e0056c3dd6e",
      "tree": "d3f58ced257743911040a2cff5b03cd82aacc8a7",
      "parents": [
        "7807acdb6b794b3af42dfa1912edd4fba8d0b622"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 11 10:15:52 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 10 13:45:52 2013 -0700"
      },
      "message": "rcu: Shrink TINY_RCU by moving exit_rcu()\n\nNow that TINY_PREEMPT_RCU is no more, exit_rcu() is always an empty\nfunction.  But if TINY_RCU is going to have an empty function, it should\nbe in include/linux/rcutiny.h, where it does not bloat the kernel.\nThis commit therefore moves exit_rcu() out of kernel/rcupdate.c to\nkernel/rcutree_plugin.h, and places a static inline empty function in\ninclude/linux/rcutiny.h in order to shrink TINY_RCU a bit.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "9dc5ad32488a75504349372330cc228d4dd678db",
      "tree": "794a5a4ac485fa4e6141dc6f14d23b0963c4bbab",
      "parents": [
        "58c4e69d43df91fd6a55bc070474aad6b7cfb18d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 27 10:11:15 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 10 13:45:51 2013 -0700"
      },
      "message": "rcu: Simplify RCU_TINY RCU callback invocation\n\nTINY_PREEMPT_RCU could use a kthread to handle RCU callback invocation,\nwhich required an API to abstract kthread vs. softirq invocation.\nNow that TINY_PREEMPT_RCU is no longer with us, this commit retires\nthis API in favor of direct use of the relevant softirq primitives.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "127781d1ba1ee5bbe1780afa35dd0e71583b143d",
      "tree": "3c9b5961bc02e7f380a7bd7932181329ecbec397",
      "parents": [
        "efc151c33b971148894789dc7c5589dec46d4348"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 27 08:44:00 2013 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 10 13:45:49 2013 -0700"
      },
      "message": "rcu: Remove TINY_PREEMPT_RCU\n\nTINY_PREEMPT_RCU adds significant code and complexity, but does not\noffer commensurate benefits.  People currently using TINY_PREEMPT_RCU\ncan get much better memory footprint with TINY_RCU, or, if they really\nneed preemptible RCU, they can use TREE_PREEMPT_RCU with a relatively\nminor degradation in memory footprint.  Please note that this move\nhas been widely publicized on LKML (https://lkml.org/lkml/2012/11/12/545)\nand on LWN (http://lwn.net/Articles/541037/).\n\nThis commit therefore removes TINY_PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n[ paulmck: Updated to eliminate #else in rcutiny.h as suggested by Josh ]\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "12bcbe66d7b3cc9f9f86cd02f925666eaa3c2107",
      "tree": "54e70e0f7450aedfee1418742758dc538d9649e5",
      "parents": [
        "6721cb60022629ae76365551f05d9658b8d14c55"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 28 14:38:42 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 28 22:47:13 2013 -0400"
      },
      "message": "rcu: Add _notrace variation of rcu_dereference_raw() and hlist_for_each_entry_rcu()\n\nAs rcu_dereference_raw() under RCU debug config options can add quite a\nbit of checks, and that tracing uses rcu_dereference_raw(), these checks\nhappen with the function tracer. The function tracer also happens to trace\nthese debug checks too. This added overhead can livelock the system.\n\nAdd a new interface to RCU for both rcu_dereference_raw_notrace() as well\nas hlist_for_each_entry_rcu_notrace() as the hlist iterator uses the\nrcu_dereference_raw() as well, and is used a bit with the function tracer.\n\nLink: http://lkml.kernel.org/r/20130528184209.304356745@goodmis.org\n\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c032862fba51a3ca504752d3a25186b324c5ce83",
      "tree": "955dc2ba4ab3df76ecc2bb780ee84aca04967e8d",
      "parents": [
        "fda76e074c7737fc57855dd17c762e50ed526052",
        "8700c95adb033843fc163d112b9d21d4fda78018"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 02 17:37:49 2013 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 02 17:54:19 2013 +0200"
      },
      "message": "Merge commit \u00278700c95adb03\u0027 into timers/nohz\n\nThe full dynticks tree needs the latest RCU and sched\nupstream updates in order to fix some dependencies.\n\nMerge a common upstream merge point that has these\nupdates.\n\nConflicts:\n\tinclude/linux/perf_event.h\n\tkernel/rcutree.h\n\tkernel/rcutree_plugin.h\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d1e43fa5f8bb25f83a86a29f11fcfb57ed4d7566",
      "tree": "9eff00255c1061248b6aef2c8341ea527610150c",
      "parents": [
        "0453b435df0d69dd0d8c42eb9b3015aaf0d8a032"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Mar 26 23:47:24 2013 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Apr 19 13:54:04 2013 +0200"
      },
      "message": "nohz: Ensure full dynticks CPUs are RCU nocbs\n\nWe need full dynticks CPU to also be RCU nocb so\nthat we don\u0027t have to keep the tick to handle RCU\ncallbacks.\n\nMake sure the range passed to nohz_full\u003d boot\nparameter is a subset of rcu_nocbs\u003d\n\nThe CPUs that fail to meet this requirement will be\nexcluded from the nohz_full range. This is checked\nearly in boot time, before any CPU has the opportunity\nto stop its tick.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\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: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Kevin Hilman \u003ckhilman@linaro.org\u003e\nCc: Li Zhong \u003czhong@linux.vnet.ibm.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c0f4dfd4f90f1667d234d21f15153ea09a2eaa66",
      "tree": "e06fa6eef015a373849855249752ec525ca8ad4b",
      "parents": [
        "b11cc5760a9c48c870ad286e8a6d8fdb998fa58d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Dec 28 11:30:36 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 26 08:04:51 2013 -0700"
      },
      "message": "rcu: Make RCU_FAST_NO_HZ take advantage of numbered callbacks\n\nBecause RCU callbacks are now associated with the number of the grace\nperiod that they must wait for, CPUs can now take advance callbacks\ncorresponding to grace periods that ended while a given CPU was in\ndyntick-idle mode.  This eliminates the need to try forcing the RCU\nstate machine while entering idle, thus reducing the CPU intensiveness\nof RCU_FAST_NO_HZ, which should increase its energy efficiency.\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": "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": "90f45e4e729a7ffaa3ed2423834aad612870b427",
      "tree": "d2f6fe002804dd51cffa9d950f2a567af31f455a",
      "parents": [
        "347f42382184f7448fa96bf9e9fa4eb6f6d1099e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jan 10 05:24:49 2013 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Jan 26 16:34:49 2013 -0800"
      },
      "message": "rcu: Remove obsolete Kconfig option from comment\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "52494535103986dbbf689b44d8c2c7efe2132b16",
      "tree": "88dd5a9d064608e9711c36f05b3b4aab8e255a4f",
      "parents": [
        "dc975e94f322e60fa8fcc44dec1820fde4de174c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Wed Nov 14 16:26:40 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Jan 08 14:14:55 2013 -0800"
      },
      "message": "rcu: Reduce rcutorture tracing\n\nCurrently, rcutorture traces every read-side access.  This can be\nproblematic because even a two-minute rcutorture run on a two-CPU system\ncan generate 28,853,363 reads.  Normally, only a failing read is of\ninterest, so this commit traces adjusts rcutorture\u0027s tracing to only\ntrace failing reads.  The resulting event tracing records the time\nand the -\u003ecompleted value captured at the beginning of the RCU read-side\ncritical section, allowing correlation with other event-tracing messages.\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[ paulmck: Add fix to build problem located by Randy Dunlap based on\n  diagnosis by Steven Rostedt. ]\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": "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": "4d9a5d4319e22670ec6d6227e12b54f361c46d0f",
      "tree": "d82eb23f01225bf31027e19ce983cd05e9b900bd",
      "parents": [
        "6f0c0580b70c89094b3422ba81118c7b959c7556"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Oct 11 01:47:16 2012 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Oct 23 14:54:06 2012 -0700"
      },
      "message": "rcu: Remove rcu_switch()\n\nIt\u0027s only there to call rcu_user_hooks_switch(). Let\u0027s\njust call rcu_user_hooks_switch() directly, we don\u0027t need this\nfunction in the middle.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\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": "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": "b4270ee356e5ecef5394ab80c0a0301c1676b7f0",
      "tree": "d600c6dcea20363414220b9b369832af97a8a090",
      "parents": [
        "1e3fd2b38cea41f5386bf23440f2cbdd74cf13d0"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jul 31 10:12:48 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Sep 23 07:42:49 2012 -0700"
      },
      "message": "rcu: Permit RCU_NONIDLE() to be used from interrupt context\n\nThere is a need to use RCU from interrupt context, but either before\nrcu_irq_enter() is called or after rcu_irq_exit() is called.  If the\ninterrupt occurs from idle, then lockdep-RCU will complain about such\nuses, as they appear to be illegal uses of RCU from the idle loop.\nIn other environments, RCU_NONIDLE() could be used to properly protect\nthe use of RCU, but RCU_NONIDLE() currently cannot be invoked except\nfrom process context.\n\nThis commit therefore modifies RCU_NONIDLE() to permit its use more\nglobally.\n\nReported-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\n"
    },
    {
      "commit": "5cf05ad758c30d17ff23c2be346b5de982bc2121",
      "tree": "884adcc248b81628ffea41916655d41efb934042",
      "parents": [
        "c701d5d9b384ff03ceb232ef21236364d784a411"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 17 15:12:45 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Jul 06 06:01:49 2012 -0700"
      },
      "message": "rcu: Fix broken strings in RCU\u0027s source code.\n\nAlthough the C language allows you to break strings across lines, doing\nthis makes it hard for people to find the Linux kernel code corresponding\nto a given console message.  This commit therefore fixes broken strings\nthroughout RCU\u0027s source code.\n\nSuggested-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSuggested-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\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": "4fa3b6cb1bc8c14b81b4c8ffdfd3f2500a7e9367",
      "tree": "97699d9c5f5330f1fc1c39dda5be49f2d5157525",
      "parents": [
        "e84c48ae3024ac2f14ed1c3671e5ea37c60fb838"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Tue Jun 05 15:53:53 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:43 2012 -0700"
      },
      "message": "rcu: Fix qlen_lazy breakage\n\nCommit d8169d4c (Make __kfree_rcu() less dependent on compiler choices)\ncreated a macro out of an inline function in order to avoid build\nbreakage for certain combinations of gcc flags.  Unfortunately, it also\nconverted a kfree_call_rcu() to a call_rcu(), which made the rcu_data\nstructure\u0027s -\u003eqlen_lazy field lose counts.  This commit therefore changes\nthe call_rcu() back to kfree_call_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": "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": "28f5c693d03530eb15c5354f758b789189b98c37",
      "tree": "91f226e7afdceb3d62ba51505883dc260619c99e",
      "parents": [
        "2a3fa843b555d202e682bf08c65ee1a4a93c79cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri May 25 14:25:58 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:24 2012 -0700"
      },
      "message": "rcu: Remove function versions of __kfree_rcu and __is_kfree_rcu_offset\n\nCommit d8169d4c (Make __kfree_rcu() less dependent on compiler choices)\nadded cpp macro versions of __kfree_rcu() and __is_kfree_rcu_offset(),\nbut failed to remove the old inline-function versions.  This commit does\nthis cleanup.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "2a3fa843b555d202e682bf08c65ee1a4a93c79cf",
      "tree": "b7db689ab83f041319b80493b12a8f7ecc79ad0f",
      "parents": [
        "e9023c4061054cbf59c5288068118a4d0b152f01"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon May 21 11:58:36 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Consolidate tree/tiny __rcu_read_{,un}lock() implementations\n\nThe CONFIG_TREE_PREEMPT_RCU and CONFIG_TINY_PREEMPT_RCU versions of\n__rcu_read_lock() and __rcu_read_unlock() are identical, so this commit\nconsolidates them into kernel/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "e9023c4061054cbf59c5288068118a4d0b152f01",
      "tree": "0bd37bdc925686170b4329eca61962f1df4d3687",
      "parents": [
        "e5c1f444d28b1a9eaf9c3927041db0414f684ef4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:51:08 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Remove return value from rcu_assign_pointer()\n\nThe return value from rcu_assign_pointer() is not used, and using it\nwould be quite ugly, for example:\n\n\tq \u003d rcu_assign_pointer(global_p, p);\n\nTo prevent this sort of ugliness from spreading, this commit wraps\nrcu_assign_pointer() in a do-while loop.\n\nReported-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\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": "d1b88eb9e3bccaa43fb5d1bde1cbe210b3434731",
      "tree": "0cb3f4f8b8b9234c306a738d41233db9d8ee709c",
      "parents": [
        "d36cc701b28983ea2c8d80afe68aae5452aea3bf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:42:30 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 02 12:34:23 2012 -0700"
      },
      "message": "rcu: Remove return value from RCU_INIT_POINTER()\n\nThe return value from RCU_INIT_POINTER() is not used, and using it\nwould be quite ugly, for example:\n\n\tq \u003d RCU_INIT_POINTER(global_p, p);\n\nTo prevent this sort of ugliness from appearing, this commit wraps\nRCU_INIT_POINTER() in a do-while loop.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "172708d002e0a2aca032b04fe6f2b8525c29244a",
      "tree": "5245232b443036a68ffb2cccdadd797678aeb0c7",
      "parents": [
        "1d1fb395f6dbc07b36285bbedcf01a73b57f7cb5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 16 15:23:45 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 a gcc-style structure initializer for RCU pointers\n\nRCU_INIT_POINTER() returns a value that is never used, and which should\nbe abolished due to terminal ugliness:\n\n\tq \u003d RCU_INIT_POINTER(global_p, p);\n\nHowever, there are two uses that cannot be handled by a do-while\nformulation because they do gcc-style initialization:\n\n\tRCU_INIT_POINTER(.real_cred, \u0026init_cred),\n\tRCU_INIT_POINTER(.cred, \u0026init_cred),\n\nThis usage is clever, but not necessarily the nicest approach.\nThis commit therefore creates an RCU_POINTER_INITIALIZER() macro that\nis specifically designed for gcc-style initialization.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.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": "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": "9dd8fb16c36178df2066387d2abd44d8b4dca8c8",
      "tree": "330ac5704044c12bcc94ec6bf96dbb27d1057f5d",
      "parents": [
        "616c310e83b872024271c915c1b9ab505b9efad9"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Apr 13 12:54:22 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 02 14:48:27 2012 -0700"
      },
      "message": "rcu: Make exit_rcu() more precise and consolidate\n\nWhen running preemptible RCU, if a task exits in an RCU read-side\ncritical section having blocked within that same RCU read-side critical\nsection, the task must be removed from the list of tasks blocking a\ngrace period (perhaps the current grace period, perhaps the next grace\nperiod, depending on timing).  The exit() path invokes exit_rcu() to\ndo this cleanup.\n\nHowever, the current implementation of exit_rcu() needlessly does the\ncleanup even if the task did not block within the current RCU read-side\ncritical section, which wastes time and needlessly increases the size\nof the state space.  Fix this by only doing the cleanup if the current\ntask is actually on the list of tasks blocking some grace period.\n\nWhile we are at it, consolidate the two identical exit_rcu() functions\ninto a single function.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nConflicts:\n\n\tkernel/rcupdate.c\n"
    },
    {
      "commit": "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": "d8169d4c369e8aa2fda10df705a4957331b5a4db",
      "tree": "ce8a08d5bd1a58f5e4703f39b2cc2033a8b03994",
      "parents": [
        "c9336643e1440f4dfc89ad4ac6185813619abb8c"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Thu Apr 19 11:44:39 2012 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Apr 24 20:54:51 2012 -0700"
      },
      "message": "rcu: Make __kfree_rcu() less dependent on compiler choices\n\nCurrently, __kfree_rcu() is implemented as an inline function, and\ncontains a BUILD_BUG_ON() that malfunctions if __kfree_rcu() is compiled\nas an out-of-line function.  Unfortunately, there are compiler settings\n(e.g., -O0) that can result in __kfree_rcu() being compiled out of line,\nresulting in annoying build breakage.  This commit therefore converts\nboth __kfree_rcu() and __is_kfree_rcu_offset() from inline functions to\nmacros to prevent such misbehavior on the part of the compiler.\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ed2d265d1266736bd294332d7f649003943ae36e",
      "tree": "860e5b7bb72933e4a9abacdc2f2d75a0e6254e32",
      "parents": [
        "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
        "6c03438edeb5c359af35f060ea016ca65671c269"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "message": "Merge tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/bug.h\u003e cleanup from Paul Gortmaker:\n \"The changes shown here are to unify linux\u0027s BUG support under the one\n  \u003clinux/bug.h\u003e file.  Due to historical reasons, we have some BUG code\n  in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in\n  linux/kernel.h predates the addition of linux/bug.h, but old code in\n  kernel.h wasn\u0027t moved to bug.h at that time.  As a band-aid, kernel.h\n  was including \u003casm/bug.h\u003e to pseudo link them.\n\n  This has caused confusion[1] and general yuck/WTF[2] reactions.  Here\n  is an example that violates the principle of least surprise:\n\n      CC      lib/string.o\n      lib/string.c: In function \u0027strlcat\u0027:\n      lib/string.c:225:2: error: implicit declaration of function \u0027BUILD_BUG_ON\u0027\n      make[2]: *** [lib/string.o] Error 1\n      $\n      $ grep linux/bug.h lib/string.c\n      #include \u003clinux/bug.h\u003e\n      $\n\n  We\u0027ve included \u003clinux/bug.h\u003e for the BUG infrastructure and yet we\n  still get a compile fail! [We\u0027ve not kernel.h for BUILD_BUG_ON.] Ugh -\n  very confusing for someone who is new to kernel development.\n\n  With the above in mind, the goals of this changeset are:\n\n  1) find and fix any include/*.h files that were relying on the\n     implicit presence of BUG code.\n  2) find and fix any C files that were consuming kernel.h and hence\n     relying on implicitly getting some/all BUG code.\n  3) Move the BUG related code living in kernel.h to \u003clinux/bug.h\u003e\n  4) remove the asm/bug.h from kernel.h to finally break the chain.\n\n  During development, the order was more like 3-4, build-test, 1-2.  But\n  to ensure that git history for bisect doesn\u0027t get needless build\n  failures introduced, the commits have been reorderd to fix the problem\n  areas in advance.\n\n\t[1]  https://lkml.org/lkml/2012/1/3/90\n\t[2]  https://lkml.org/lkml/2012/1/17/414\"\n\nFix up conflicts (new radeon file, reiserfs header cleanups) as per Paul\nand linux-next.\n\n* tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  kernel.h: doesn\u0027t explicitly use bug.h, so don\u0027t include it.\n  bug: consolidate BUILD_BUG_ON with other bug code\n  BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n  bug.h: add include of it to various implicit C users\n  lib: fix implicit users of kernel.h for TAINT_WARN\n  spinlock: macroize assert_spin_locked to avoid bug.h dependency\n  x86: relocate get/set debugreg fcns to include/asm/debugreg.\n"
    },
    {
      "commit": "7ccaba5314caf3a2b1052edb3146ccc969b4d466",
      "tree": "b2d2c6a0c188794bf334b163bd89d827c84c1462",
      "parents": [
        "10db4e1e4e9a910a26b94045660e5ba7e7c71419"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@suse.com",
        "time": "Fri Mar 23 15:01:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:31 2012 -0700"
      },
      "message": "consolidate WARN_...ONCE() static variables\n\nDue to the alignment of following variables, these typically consume\nmore than just the single byte that \u0027bool\u0027 requires, and as there are a\nfew hundred instances, the cache pollution (not so much the waste of\nmemory) sums up.  Put these variables into their own section, outside of\nany half way frequently used memory range.\n\nDo the same also to the __warned variable of rcu_lockdep_assert().\n(Don\u0027t, however, include the ones used by printk_once() and alike, as\nthey can potentially be hot.)\n\nSigned-off-by: Jan Beulich \u003cjbeulich@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "8a2ecf474d3ee8dd5d001490349e422cec52f39f",
      "tree": "aa706d632a059dd10d9305cc6abbea5889a839d9",
      "parents": [
        "29e37d814188ac8d60f2120583704d3ef6d634b4"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Feb 02 15:42:04 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:13 2012 -0800"
      },
      "message": "rcu: Add RCU_NONIDLE() for idle-loop RCU read-side critical sections\n\nRCU, RCU-bh, and RCU-sched read-side critical sections are forbidden\nin the inner idle loop, that is, between the rcu_idle_enter() and the\nrcu_idle_exit() -- RCU will happily ignore any such read-side critical\nsections.  However, things like powertop need tracepoints in the inner\nidle loop.\n\nThis commit therefore provides an RCU_NONIDLE() macro that can be used to\nwrap code in the idle loop that requires RCU read-side critical sections.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Deepthi Dharwar \u003cdeepthi@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bde23c6892878e48f64de668660778991bc2fb56",
      "tree": "50d3ed77d58acc9098a2030be66728bc8c59f63e",
      "parents": [
        "7129d383d9f46eb8276bee5fb46df63f09a70130"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Feb 01 10:30:46 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:09 2012 -0800"
      },
      "message": "rcu: Convert WARN_ON_ONCE() in rcu_lock_acquire() to lockdep\n\nThe WARN_ON_ONCE() in rcu_lock_acquire() results in infinite recursion\non S390, and also doesn\u0027t print very much information.  Remove this.\n\nUpdated patch to add lockdep-RCU assertions to RCU\u0027s read-side primitives.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c0d6d01bffdce19fa19baad6cb8cc3eed7bfd6f5",
      "tree": "ea4c20ddc87b94d7bef2402fe6dbe3186be263c2",
      "parents": [
        "24cd7fd0eaa0d9f5e197ff77a83b006a86696068"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Jan 23 12:41:26 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:06:03 2012 -0800"
      },
      "message": "rcu: Check for illegal use of RCU from offlined CPUs\n\nAlthough it is legal to use RCU during early boot, it is anything\nbut legal to use RCU at runtime from an offlined CPU.  After all, RCU\nexplicitly ignores offlined CPUs.  This commit therefore adds checks\nfor runtime use of RCU from offlined CPUs.\n\nThese checks are not perfect, in particular, they can be subverted\nthrough use of things like rcu_dereference_raw().  Note that it is not\npossible to put checks in rcu_read_lock() and friends due to the fact\nthat these primitives are used in code that might be used under either\nRCU or lock-based protection, which means that checking rcu_read_lock()\ngets you fat piles of false positives.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5e1ee6e1016763812018bf5c5e966992821dc47e",
      "tree": "f2acb5d76a39da392d1f43e5c78a5ffc1482ef71",
      "parents": [
        "50406b98b6372e7de21d903d2cf3914e9d64e094"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jan 12 17:21:20 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:46 2012 -0800"
      },
      "message": "rcu: Note that rcu_access_pointer() can be used for teardown\n\nThere is no convenient expression for rcu_deference_protected()\nwhen it is used in tearing down multilinked structures following\na grace period.  For example, suppose that an element containing an\nRCU-protected pointer to a second element is removed from an enclosing\nRCU-protected data structure, then the write-side lock is released,\nand finally synchronize_rcu() is invoked to wait for a grace period.\nThen it is necessary to traverse the pointer in order to free up the\nsecond element.  But we are not in an RCU read-side critical section\nand we are holding no locks, so the usual rcu_dereference_check() and\nrcu_dereference_protected() primitives are not appropriate.  Neither\nis rcu_dereference_raw(), as it is intended for use in data structures\nwhere the user defines the locking design (for example, list_head).\n\nSo this responsibility is added to rcu_access_pointer()\u0027s list, and\nthis commit updates rcu_assign_pointer()\u0027s header comment accordingly.\n\nSuggested-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "50406b98b6372e7de21d903d2cf3914e9d64e094",
      "tree": "d53077fbca12714e1af5f9982e08efb923a550c6",
      "parents": [
        "c44e2cddacc2cf299186bad5697d738ea19668b7"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Thu Jan 12 13:49:19 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:46 2012 -0800"
      },
      "message": "rcu: Make rcu_sleep_check() also check rcu_lock_map\n\nAlthough it is OK to be preempted in an RCU read-side critical section\nfor TREE_PREEMPT_RCU, it is definitely not OK to be preempted, block,\nor might_sleep() within an RCU read-side critical section for TREE_RCU.\nUnfortunately, rcu_might_sleep() currently only checks for RCU-bh and\nRCU-sched read-side critical sections.  This commit therefore makes\nrcu_might_sleep() check for RCU read-side critical sections, but only\nin TREE_RCU builds.\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "486e259340fc4c60474f2c14703e3b3634bb58ca",
      "tree": "70a58702194588fa0773463523f72c682785d040",
      "parents": [
        "0bb7b59d6e2b8440cd7097097dd4bbfc4d76ed07"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jan 06 14:11:30 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:25 2012 -0800"
      },
      "message": "rcu: Avoid waking up CPUs having only kfree_rcu() callbacks\n\nWhen CONFIG_RCU_FAST_NO_HZ is enabled, RCU will allow a given CPU to\nenter dyntick-idle mode even if it still has RCU callbacks queued.\nRCU avoids system hangs in this case by scheduling a timer for several\njiffies in the future.  However, if all of the callbacks on that CPU\nare from kfree_rcu(), there is no reason to wake the CPU up, as it is\nnot a problem to defer freeing of memory.\n\nThis commit therefore tracks the number of callbacks on a given CPU\nthat are from kfree_rcu(), and avoids scheduling the timer if all of\na given CPU\u0027s callbacks are from kfree_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "3842a0832a1d6eb0b31421f8810a813135967512",
      "tree": "67aff02fde9c32e647d7b3c4cea948d7867f664d",
      "parents": [
        "f0e7c19db8798b4b991a2c71911e71f5dfdb348f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 28 10:42:42 2011 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:32:06 2011 -0800"
      },
      "message": "rcu: Document same-context read-side constraints\n\nThe intent is that a given RCU read-side critical section be confined\nto a single context.  For example, it is illegal to invoke rcu_read_lock()\nin an exception handler and then invoke rcu_read_unlock() from the\ncontext of the task that received the exception.\n\nSuggested-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d8ab29f8be918b34a1ccd174569a53f0eb04b0a5",
      "tree": "397799eee7eecc96c98f866db1536a19f863b513",
      "parents": [
        "00f49e5729af602deb559b0cf293a00b625e8636"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Oct 07 18:22:03 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:32 2011 -0800"
      },
      "message": "rcu: Remove one layer of abstraction from PROVE_RCU checking\n\nSimplify things a bit by substituting the definitions of the single-line\nrcu_read_acquire(), rcu_read_release(), rcu_read_acquire_bh(),\nrcu_read_release_bh(), rcu_read_acquire_sched(), and\nrcu_read_release_sched() functions at their call points.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "00f49e5729af602deb559b0cf293a00b625e8636",
      "tree": "3e3d5162d8a62bf6aa91b546f5760512637e6cf6",
      "parents": [
        "0464e937485f15d2add78e3b0f498469f4e6600d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Oct 07 18:22:02 2011 +0200"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:31 2011 -0800"
      },
      "message": "rcu: Warn when rcu_read_lock() is used in extended quiescent state\n\nWe are currently able to detect uses of rcu_dereference_check() inside\nextended quiescent states (such as the RCU-free window in idle).\nBut rcu_read_lock() and friends can be used without rcu_dereference(),\nso that the earlier commit checking for use of rcu_dereference() and\nfriends while in RCU idle mode miss some error conditions.  This commit\ntherefore adds extended quiescent state checking to rcu_read_lock() and\nfriends.\n\nUses of RCU from within RCU-idle mode are totally ignored by\nRCU, hence the importance 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": "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": "91afaf300269aa99a4d646969b3258b74294ac4d",
      "tree": "b4d7dd5f5c9933be7873b206624f7b55eb25d906",
      "parents": [
        "a8eecf2248a45bf69f0625b23c003ad2ccd765ee"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sun Oct 02 07:44:32 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Dec 11 10:31:26 2011 -0800"
      },
      "message": "rcu: Add failure tracing to rcutorture\n\nTrace the rcutorture RCU accesses and dump the trace buffer when the\nfirst failure is detected.\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": "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": "6206ab9bab620fc0fbbed30ce20d145b0b3d1840",
      "tree": "b57912ba9fff6f2deba89c0178d3122bbd1fda6e",
      "parents": [
        "6846c0c54074d47927c90eab4a805115e1ae3292"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Mon Aug 01 06:22:11 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:35 2011 -0700"
      },
      "message": "rcu: Move __rcu_read_unlock()\u0027s barrier() within if-statement\n\nWe only need to constrain the compiler if we are actually exiting\nthe top-level RCU read-side critical section.  This commit therefore\nmoves the first barrier() cal in __rcu_read_unlock() to inside the\n\"if\" statement, thus avoiding needless register flushes for inner\nrcu_read_unlock() calls.\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": "6846c0c54074d47927c90eab4a805115e1ae3292",
      "tree": "8f074445ca802a48d976b9a9c8595ac7fe603f22",
      "parents": [
        "d322f45ceed525daa9401154590bbae3222cfefb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Jul 31 22:33:02 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:34 2011 -0700"
      },
      "message": "rcu: Improve rcu_assign_pointer() and RCU_INIT_POINTER() documentation\n\nThe differences between rcu_assign_pointer() and RCU_INIT_POINTER() are\nsubtle, and it is easy to use the the cheaper RCU_INIT_POINTER() when\nthe more-expensive rcu_assign_pointer() should have been used instead.\nThe consequences of this mistake are quite severe.\n\nThis commit therefore carefully lays out the situations in which it it\npermissible to use RCU_INIT_POINTER().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d322f45ceed525daa9401154590bbae3222cfefb",
      "tree": "f9c2534f0b10d149af2f899ad200125dc29f631b",
      "parents": [
        "7eb4f4553ceaa6c64da83c8a71d5a991c0188655"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Sun Jul 31 22:09:25 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:33 2011 -0700"
      },
      "message": "rcu: Make rcu_assign_pointer() unconditionally insert a memory barrier\n\nRecent changes to gcc give warning messages on rcu_assign_pointers()\u0027s\nchecks that allow it to determine when it is OK to omit the memory\nbarrier.  Stephen Hemminger tried a number of gcc tricks to silence\nthis warning, but #pragmas and CPP macros do not work together in the\nway that would be required to make this work.\n\nHowever, we now have RCU_INIT_POINTER(), which already omits this\nmemory barrier, and which therefore may be used when assigning NULL to\nan RCU-protected pointer that is accessible to readers.  This commit\ntherefore makes rcu_assign_pointer() unconditionally emit the memory\nbarrier.\n\nReported-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "22507ed9b9d587486fb4681e93a8c58837738a25",
      "tree": "55038e53e869f1753de448df931255449b2385c8",
      "parents": [
        "8cd889cbb6dd13b47c2ea448a22c49c270ab94a2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jul 18 16:54:51 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:38:26 2011 -0700"
      },
      "message": "rcu: Remove unused and redundant interfaces\n\nThe rcu_dereference_bh_protected() and rcu_dereference_sched_protected()\nmacros are synonyms for rcu_dereference_protected() and are not used\nanywhere in mainline.  This commit therefore removes them.\n\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": "990987511c200877bb20201772d5de46644151f2",
      "tree": "a7f7bf9f2775a575a9a8c80a165706cea2f18afe",
      "parents": [
        "b3fbab0571eb09746cc0283648165ec00efc8eb2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 31 21:03:55 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:38 2011 -0700"
      },
      "message": "rcu: Move rcu_head definition to types.h\n\nTake a first step towards untangling Linux kernel header files by\nplacing the struct rcu_head definition into include/linux/types.h\nand including include/linux/types.h in include/linux/rcupdate.h\nwhere struct rcu_head used to be defined.  The actual inclusion point\nfor include/linux/types.h is with the rest of the #include directives\nrather than at the point where struct rcu_head used to be defined,\nas suggested by Mathieu Desnoyers.\n\nOnce this is in place, then header files that need only rcu_head\ncan include types.h rather than rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\n"
    },
    {
      "commit": "b3fbab0571eb09746cc0283648165ec00efc8eb2",
      "tree": "63bc01cbf03a5df34a96af292a00df4a96dc148a",
      "parents": [
        "d5988af53102f3b73e5e0788be024ccfa51869de"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue May 24 08:31:09 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Sep 28 21:36:37 2011 -0700"
      },
      "message": "rcu: Restore checks for blocking in RCU read-side critical sections\n\nLong ago, using TREE_RCU with PREEMPT would result in \"scheduling\nwhile atomic\" diagnostics if you blocked in an RCU read-side critical\nsection.  However, PREEMPT now implies TREE_PREEMPT_RCU, which defeats\nthis diagnostic.  This commit therefore adds a replacement diagnostic\nbased on PROVE_RCU.\n\nBecause rcu_lockdep_assert() and lockdep_rcu_dereference() are now being\nused for things that have nothing to do with rcu_dereference(), rename\nlockdep_rcu_dereference() to lockdep_rcu_suspicious() and add a third\nargument that is a string indicating what is suspicious.  This third\nargument is passed in from a new third argument to rcu_lockdep_assert().\nUpdate all calls to rcu_lockdep_assert() to add an informative third\nargument.\n\nAlso, add a pair of rcu_lockdep_assert() calls from within\nrcu_note_context_switch(), one complaining if a context switch occurs\nin an RCU-bh read-side critical section and another complaining if a\ncontext switch occurs in an RCU-sched read-side critical section.\nThese are present only if the PROVE_RCU kernel parameter is enabled.\n\nFinally, fix some checkpatch whitespace complaints in lockdep.c.\n\nAgain, you must enable PROVE_RCU to see these new diagnostics.  But you\nare enabling PROVE_RCU to check out new RCU uses in any case, aren\u0027t you?\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bdd4e85dc36cdbcfc1608a5b2a17c80a9db8986a",
      "tree": "9cee98e78a5aa6a00f3b7ce805b1e39a0137b4a4",
      "parents": [
        "2da8c8bc44b572cbf623629ff736608dc7968436"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Jun 08 01:13:27 2011 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Jun 10 15:15:40 2011 +0200"
      },
      "message": "sched: Isolate preempt counting in its own config option\n\nCreate a new CONFIG_PREEMPT_COUNT that handles the inc/dec\nof preempt count offset independently. So that the offset\ncan be updated by preempt_disable() and preempt_enable()\neven without the need for CONFIG_PREEMPT beeing set.\n\nThis prepares to make CONFIG_DEBUG_SPINLOCK_SLEEP working\nwith !CONFIG_PREEMPT where it currently doesn\u0027t detect\ncode that sleeps inside explicit preemption disabled\nsections.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: 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\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": "b0c9d7ff2793502650ad987c3f237d5fe5587a1e",
      "tree": "04a19658925baa1eda66bad18d8a2ebd061ddac5",
      "parents": [
        "fc2ecf7ec76c5ee150b83dcefc863fa03fd365fb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 29 12:56:56 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:57 2011 -0700"
      },
      "message": "rcu: add DEBUG_OBJECTS_RCU_HEAD check for alignment\n\nVerify that rcu_head structures are aligned to a four-byte boundary.\nThis check is enabled by CONFIG_DEBUG_OBJECTS_RCU_HEAD.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4a29865689dbb87a02e3b0fff4a4ae5041273173",
      "tree": "72c9f1641a9fb05e3ae4d8cc068f62f9c566bae9",
      "parents": [
        "d71df90eadfc35aa549ff9a850842673febca71f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Sun Apr 03 21:33:51 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 05 23:16:56 2011 -0700"
      },
      "message": "rcu: make rcutorture version numbers available through debugfs\n\nIt is not possible to accurately correlate rcutorture output with that\nof debugfs.  This patch therefore adds a debugfs file that prints out\nthe rcutorture version number, permitting easy correlation.\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": "a4dd99250dc49031e6a92a895dbcc230a4832083",
      "tree": "3d0b6f45620f66044400ea14a6af019bf0af67e7",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 01 07:15:14 2011 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 01 07:27:31 2011 -0700"
      },
      "message": "rcu: create new rcu_access_index() and use in mce\n\nThe MCE subsystem needs to sample an RCU-protected index outside of\nany protection for that index.  If this was a pointer, we would use\nrcu_access_pointer(), but there is no corresponding rcu_access_index().\nThis commit therefore creates an rcu_access_index() and applies it\nto MCE.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nTested-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\n"
    },
    {
      "commit": "e27fc9641e8ddc8146f8e01f06e5eba2469698de",
      "tree": "5cff4c23cb113b901718d9c0f4a6e3081f3173bd",
      "parents": [
        "46fdb0937f26124700fc9fc80da4776330cc00d3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 22 21:36:11 2010 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Dec 17 12:34:08 2010 -0800"
      },
      "message": "rcu: increase synchronize_sched_expedited() batching\n\nThe fix in commit #6a0cc49 requires more than three concurrent instances\nof synchronize_sched_expedited() before batching is possible.  This\npatch uses a ticket-counter-like approach that is also not unrelated to\nLai Jiangshan\u0027s Ring RCU to allow sharing of expedited grace periods even\nwhen there are only two concurrent instances of synchronize_sched_expedited().\n\nThis commit builds on Tejun\u0027s original posting, which may be found at\nhttp://lkml.org/lkml/2010/11/9/204, adding memory barriers, avoiding\noverflow of signed integers (other than via atomic_t), and fixing the\ndetection of batching.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7b27d5475f86186914e54e4a6bb994e9a985337b",
      "tree": "36349c88d75497db89956d6721d82c4f889cbc2b",
      "parents": [
        "deb7a41815a8a32d4f9ea2af7a48ed1175222cec"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Oct 21 11:29:05 2010 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Nov 29 22:01:58 2010 -0800"
      },
      "message": "rcu,cleanup: move synchronize_sched_expedited() out of sched.c\n\nThe first version of synchronize_sched_expedited() used the migration\ncode in the scheduler, and was therefore implemented in kernel/sched.c.\nHowever, the more recent version of this code no longer uses the\nmigration code, so this commit moves it to the main RCU source files.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "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": "53ecfba259f54b6967a35d19f4a564e3bc07997f",
      "tree": "eaaeebe2a38abe1a401a0d2d40181abaefa80d48",
      "parents": [
        "829f8ed2c963df7c23d1c644db6c4387eb1601fa"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Sep 13 17:24:21 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Sep 23 09:15:01 2010 -0700"
      },
      "message": "rcu: only one evaluation of arg in rcu_dereference_check() unless sparse\n\nThe current version of the __rcu_access_pointer(), __rcu_dereference_check(),\nand __rcu_dereference_protected() macros evaluate their \"p\" argument\nthree times, not counting typeof()s.  This is bad news if that argument\ncontains a side effect.  This commit therefore evaluates this argument\nonly once in normal kernel builds.  However, the straightforward approach\ndefeats sparse\u0027s RCU-pointer checking, so when __CHECKER__ is defined,\nthe additional pair of evaluations of the \"p\" argument are performed in\norder to permit sparse to detect misuse of RCU-protected pointers.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "7b0b759b65247cbc66384a912be9acf8d4800636",
      "tree": "085a18f506193725ab16fa61cae41f93dcc7c3e9",
      "parents": [
        "73d4da4d360136826b36f78f5cf72b29da82c8a6"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Aug 17 14:18:46 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:16 2010 -0700"
      },
      "message": "rcu: combine duplicate code, courtesy of CONFIG_PREEMPT_RCU\n\nThe CONFIG_PREEMPT_RCU kernel configuration parameter was recently\nre-introduced, but as an indication of the type of RCU (preemptible\nvs. non-preemptible) instead of as selecting a given implementation.\nThis commit uses CONFIG_PREEMPT_RCU to combine duplicate code\nfrom include/linux/rcutiny.h and include/linux/rcutree.h into\ninclude/linux/rcupdate.h.  This commit also combines a few other pieces\nof duplicate code that have accumulated.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a3dc3fb161f9b4066c0fce22db72638af8baf83b",
      "tree": "e41a30edd7e4965807b199da7637a6d6e44d4ed1",
      "parents": [
        "53d84e004d5e8c018be395c4330dc72fd60bd13e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 13 16:16:25 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:13 2010 -0700"
      },
      "message": "rcu: repair code-duplication FIXMEs\n\nCombine the duplicate definitions of ULONG_CMP_GE(), ULONG_CMP_LT(),\nand rcu_preempt_depth() into include/linux/rcupdate.h.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9079fd7c2e06a92cf27d05224a1f478581916c5b",
      "tree": "9f093e0efc716c18c3ca66fbd670e3f1099e4fe6",
      "parents": [
        "a57eb940d130477a799dfb24a570ee04979c0f7f"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 07 21:59:54 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Aug 20 09:00:10 2010 -0700"
      },
      "message": "rcu: update obsolete rcu_read_lock() comment.\n\nThe comment says that blocking is illegal in rcu_read_lock()-style\nRCU read-side critical sections, which is no longer entirely true\ngiven preemptible RCU.  This commit provides a fix.\n\nSuggested-by: David Miller \u003cdavem@davemloft.net\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": "5e8067adfdbaf97039a97540765b1e16eb8d61cc",
      "tree": "3648ffdd0265024baff2a0136d01b02bede19f63",
      "parents": [
        "4d2deb40b20c2608486598364e63e37b09a9ac2f"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:41 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:03 2010 -0700"
      },
      "message": "rcu head remove init\n\nRCU heads really don\u0027t need to be initialized. Their state before call_rcu()\nreally does not matter.\n\nWe need to keep init/destroy_rcu_head_on_stack() though, since we want\ndebugobjects to be able to keep track of these objects.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\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: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "77d8485a8b5416c615b6acd95f01bfcacd7d81ff",
      "tree": "725742c078b9712d875e9c633d249b6da14e5f00",
      "parents": [
        "742734eea0cf5314cde5945963ed964be167bd84"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jul 08 17:38:59 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:02 2010 -0700"
      },
      "message": "rcu: improve kerneldoc for rcu_read_lock(), call_rcu(), and synchronize_rcu()\n\nMake it explicit that new RCU read-side critical sections that start\nafter call_rcu() and synchronize_rcu() start might still be running\nafter the end of the relevant grace period.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "4221a9918e38b7494cee341dda7b7b4bb8c04bde",
      "tree": "b79ed7629dd526a9c54dc116b7943cc496b3c19e",
      "parents": [
        "394f99a9007d4274f7076bb8553ab0ff9707688b"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@I-love.SAKURA.ne.jp",
        "time": "Sat Jun 26 01:08:19 2010 +0900"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:18:02 2010 -0700"
      },
      "message": "Add RCU check for find_task_by_vpid().\n\nfind_task_by_vpid() says \"Must be called under rcu_read_lock().\". But due to\ncommit 3120438 \"rcu: Disable lockdep checking in RCU list-traversal primitives\",\nwe are currently unable to catch \"find_task_by_vpid() with tasklist_lock held\nbut RCU lock not held\" errors due to the RCU-lockdep checks being\nsuppressed in the RCU variants of the struct list_head traversals.\nThis commit therefore places an explicit check for being in an RCU\nread-side critical section in find_task_by_pid_ns().\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: suspicious rcu_dereference_check() usage. ]\n  ---------------------------------------------------\n  kernel/pid.c:386 invoked rcu_dereference_check() without protection!\n\n  other info that might help us debug this:\n\n  rcu_scheduler_active \u003d 1, debug_locks \u003d 1\n  1 lock held by rc.sysinit/1102:\n   #0:  (tasklist_lock){.+.+..}, at: [\u003cc1048340\u003e] sys_setpgid+0x40/0x160\n\n  stack backtrace:\n  Pid: 1102, comm: rc.sysinit Not tainted 2.6.35-rc3-dirty #1\n  Call Trace:\n   [\u003cc105e714\u003e] lockdep_rcu_dereference+0x94/0xb0\n   [\u003cc104b4cd\u003e] find_task_by_pid_ns+0x6d/0x70\n   [\u003cc104b4e8\u003e] find_task_by_vpid+0x18/0x20\n   [\u003cc1048347\u003e] sys_setpgid+0x47/0x160\n   [\u003cc1002b50\u003e] sysenter_do_call+0x12/0x36\n\nCommit updated to use a new rcu_lockdep_assert() exported API rather than\nthe old internal __do_rcu_dereference().\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "ca5ecddfa8fcbd948c95530e7e817cee9fb43a3d",
      "tree": "0ad1c320c2e6612a9a230a58d8588850701c048c",
      "parents": [
        "d34a16661ed0fed433c9469d7cfa3ca4d30ca42e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Apr 28 14:39:09 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Aug 19 17:17:59 2010 -0700"
      },
      "message": "rcu: define __rcu address space modifier for sparse\n\nThis commit provides definitions for the __rcu annotation defined earlier.\nThis annotation permits sparse to check for correct use of RCU-protected\npointers.  If a pointer that is annotated with __rcu is accessed\ndirectly (as opposed to via rcu_dereference(), rcu_assign_pointer(),\nor one of their variants), sparse can be made to complain.  To enable\nsuch complaints, use the new default-disabled CONFIG_SPARSE_RCU_POINTER\nkernel configuration option.  Please note that these sparse complaints are\nintended to be a debugging aid, -not- a code-style-enforcement mechanism.\n\nThere are special rcu_dereference_protected() and rcu_access_pointer()\naccessors for use when RCU read-side protection is not required, for\nexample, when no other CPU has access to the data structure in question\nor while the current CPU hold the update-side lock.\n\nThis patch also updates a number of docbook comments that were showing\ntheir age.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Christopher Li \u003csparse@chrisli.org\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "f5155b33277c9678041a27869165619bb34f722f",
      "tree": "16cef227f7e05e3b8d97a68d7b7a60e86255cb98",
      "parents": [
        "551d55a944b143ef26fbd482d1c463199d6f65cf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 30 06:42:01 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Jun 14 16:37:26 2010 -0700"
      },
      "message": "rcu: add an rcu_dereference_index_check()\n\nThe sparse RCU-pointer checking relies on type magic that dereferences\nthe pointer in question.  This does not work if the pointer is in fact\nan array index.  This commit therefore supplies a new RCU API that\nomits the sparse checking to continue to support rcu_dereference()\non integers.\n\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": "4376030a54860dedab9d848dfa7cc700a6025c0b",
      "tree": "b9817d81777636eaa882563d35fcd2cd31b7e678",
      "parents": [
        "a5d8e467f83f6672104f276223a88e3b50cbd375"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:39 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 16:53:55 2010 -0700"
      },
      "message": "rcu head introduce rcu head init on stack\n\nPEM:\no     Would it be possible to make this bisectable as follows?\n\n      a.      Insert a new patch after current patch 4/6 that\n              defines destroy_rcu_head_on_stack(),\n              init_rcu_head_on_stack(), and init_rcu_head() with\n              their !CONFIG_DEBUG_OBJECTS_RCU_HEAD definitions.\n\nThis patch performs this transition.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\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\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": "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": "32c141a0a1dfa29e0a07d78bec0c0919fc4b9f88",
      "tree": "e85572d2d80f750ca8487e75fd63b9895c5c5db5",
      "parents": [
        "d20200b591f59847ab6a5c23507084a7d29e23c5"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 10:59:28 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: fix now-bogus rcu_scheduler_active comments.\n\nThe rcu_scheduler_active check has been wrapped into the new\ndebug_lockdep_rcu_enabled() function, so update the comments to\nreflect this new reality.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d20200b591f59847ab6a5c23507084a7d29e23c5",
      "tree": "565d6f26eae873ab7c1b4ee406e5e767dabd24f0",
      "parents": [
        "5db356736acb9ba717df1aa9444e4e44cbb30a71"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Mar 30 10:52:21 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:32 2010 -0700"
      },
      "message": "rcu: Fix bogus CONFIG_PROVE_LOCKING in comments to reflect reality.\n\nIt is CONFIG_DEBUG_LOCK_ALLOC rather than CONFIG_PROVE_LOCKING, so fix it.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2b3fc35f6919344e3cf722dde8308f47235c0b70",
      "tree": "2bc2cfc9c1a032d51a3d99a10e309e100b9eea4a",
      "parents": [
        "b57f95a38233a2e73b679bea4a5453a1cc2a1cc9"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Apr 20 16:23:07 2010 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 11:08:31 2010 -0700"
      },
      "message": "rcu: optionally leave lockdep enabled after RCU lockdep splat\n\nThere is no need to disable lockdep after an RCU lockdep splat,\nso remove the debug_lockdeps_off() from lockdep_rcu_dereference().\nTo avoid repeated lockdep splats, use a static variable in the inlined\nrcu_dereference_check() and rcu_dereference_protected() macros so that\na given instance splats only once, but so that multiple instances can\nbe detected per boot.\n\nThis is controlled by a new config variable CONFIG_PROVE_RCU_REPEATEDLY,\nwhich is disabled by default.  This provides the normal lockdep behavior\nby default, but permits people who want to find multiple RCU-lockdep\nsplats per boot to easily do so.\n\nRequested-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nTested-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "ee84b8243b07c33a5c8aed42b4b2da60cb16d1d2",
      "tree": "a5b3cad55179fe8340c6422deaf6e11120222ad1",
      "parents": [
        "ad4ba375373937817404fd92239ef4cadbded23b"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 06 09:28:41 2010 -0700"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu May 06 09:28:41 2010 -0700"
      },
      "message": "rcu: create rcu_my_thread_group_empty() wrapper\n\nSome RCU-lockdep splat repairs need to know whether they are running\nin a single-threaded process.  Unfortunately, the thread_group_empty()\nprimitive is defined in sched.h, and can induce #include hell.  This\ncommit therefore introduces a rcu_my_thread_group_empty() wrapper that\nis defined in rcupdate.c, thus avoiding the need to include sched.h\neverywhere.\n\nSigned-off-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bc293d62b26ec590afc90a9e0a31c45d355b7bd8",
      "tree": "4b61dee53e849f0ba1d5a7fef58522e224be836e",
      "parents": [
        "50aec0024eccb1d5f540ab64a1958eebcdb9340c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Apr 15 12:50:39 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 19 08:37:19 2010 +0200"
      },
      "message": "rcu: Make RCU lockdep check the lockdep_recursion variable\n\nThe lockdep facility temporarily disables lockdep checking by\nincrementing the current-\u003elockdep_recursion variable.  Such\ndisabling happens in NMIs and in other situations where lockdep\nmight expect to recurse on itself.\n\nThis patch therefore checks current-\u003elockdep_recursion, disabling RCU\nlockdep splats when this variable is non-zero.  In addition, this patch\nremoves the \"likely()\", as suggested by Lai Jiangshan.\n\nReported-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReported-by: David Miller \u003cdavem@davemloft.net\u003e\nTested-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c20100415195039.GA22623@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c08c68dd76bd6b776bc0eb45a5e8f354ed772cdf",
      "tree": "5324c73474b1e73631392de814e8ecebd5956d5b",
      "parents": [
        "b62730baea32f86fe91a7930e4b7ee8d82778b79"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 09 15:39:11 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:20:04 2010 +0200"
      },
      "message": "rcu: Better explain the condition parameter of rcu_dereference_check()\n\nBetter explain the condition parameter of\nrcu_dereference_check() that describes the conditions under\nwhich the dereference is permitted to take place (and\nincorporate Yong Zhang\u0027s suggestion).  This condition is only\nchecked under lockdep proving.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1270852752-25278-2-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b62730baea32f86fe91a7930e4b7ee8d82778b79",
      "tree": "97910bcb8a0790b10ff687dad901e158a2da63f4",
      "parents": [
        "2ba3abd8186f24c7fb418927025b4e2120e3a362"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Apr 09 15:39:10 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:19:51 2010 +0200"
      },
      "message": "rcu: Add rcu_access_pointer and rcu_dereference_protected\n\nThis patch adds variants of rcu_dereference() that handle\nsituations where the RCU-protected data structure cannot change,\nperhaps due to our holding the update-side lock, or where the\nRCU-protected pointer is only to be fetched, not dereferenced.\nThese are needed due to some performance concerns with using\nrcu_dereference() where it is not required, aside from the need\nfor lockdep/sparse checking.\n\nThe new rcu_access_pointer() primitive is for the case where the\npointer is be fetch and not dereferenced.  This primitive may be\nused without protection, RCU or otherwise, due to the fact that\nit uses ACCESS_ONCE().\n\nThe new rcu_dereference_protected() primitive is for the case\nwhere updates are prevented, for example, due to holding the\nupdate-side lock.  This primitive does neither ACCESS_ONCE() nor\nsmp_read_barrier_depends(), so can only be used when updates are\nsomehow prevented.\n\nSuggested-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1270852752-25278-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0cff810f54b3b52075c27f7a7021d5b195264b6c",
      "tree": "671189b10e1ac4d12a26d9a337a2ca053faed107",
      "parents": [
        "7f5b774275df8c76a959eae7488128b637fcbfc8"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Thu Mar 18 12:25:33 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 18 21:25:32 2010 +0100"
      },
      "message": "rcu: Fix local_irq_disable() CONFIG_PROVE_RCU\u003dy false positives\n\nIt is documented that local_irq_disable() also delimits RCU_SCHED\nread-site critical sections.\n\nSee the document of synchronize_sched() or\nDocumentation/RCU/whatisRCU.txt.\n\nSo we have to test irqs_disabled() in rcu_read_lock_sched_held().\nOtherwise rcu-lockdep brings incorrect complaint.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: eric.dumazet@gmail.com\nLKML-Reference: \u003c1268940334-10892-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e3818b8dce2a934cd1521dbc4827e5238d8f45d8",
      "tree": "871d73c67a9bfd84b7ed7c49e9d4027eac7e577f",
      "parents": [
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Mar 15 17:03:43 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 16 09:57:49 2010 +0100"
      },
      "message": "rcu: Make rcu_read_lock_bh_held() allow for disabled BH\n\nDisabling BH can stand in for rcu_read_lock_bh(), and this patch\nupdates rcu_read_lock_bh_held() to allow for this.  In order to\navoid include-file hell, this function is moved out of line to\nkernel/rcupdate.c.\n\nThis fixes a false positive RCU warning.\n\nReported-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nReported-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\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: \u003c20100316000343.GA25857@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "4e3eaddd142e2142c048c5052a0a9d2604fccfc6"
}
