)]}'
{
  "log": [
    {
      "commit": "632ee200130899252508c478ad0e808222573fbc",
      "tree": "e3f44ca9daf2a2da2186419f703bc9cec8faa058",
      "parents": [
        "996de8c6fe95c5a9fc524241cc8f142ef0605d3d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:45 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 09:40:59 2010 +0100"
      },
      "message": "rcu: Introduce lockdep-based checking to RCU read-side primitives\n\nInspection is proving insufficient to catch all RCU misuses,\nwhich is understandable given that rcu_dereference() might be\nprotected by any of four different flavors of RCU (RCU, RCU-bh,\nRCU-sched, and SRCU), and might also/instead be protected by any\nof a number of locking primitives. It is therefore time to\nenlist the aid of lockdep.\n\nThis set of patches is inspired by earlier work by Peter\nZijlstra and Thomas Gleixner, and takes the following approach:\n\no\tSet up separate lockdep classes for RCU, RCU-bh, and RCU-sched.\n\no\tSet up separate lockdep classes for each instance of SRCU.\n\no\tCreate primitives that check for being in an RCU read-side\n\tcritical section.  These return exact answers if lockdep is\n\tfully enabled, but if unsure, report being in an RCU read-side\n\tcritical section.  (We want to avoid false positives!)\n\tThe primitives are:\n\n\tFor RCU: rcu_read_lock_held(void)\n\n\tFor RCU-bh: rcu_read_lock_bh_held(void)\n\n\tFor RCU-sched: rcu_read_lock_sched_held(void)\n\n\tFor SRCU: srcu_read_lock_held(struct srcu_struct *sp)\n\no\tAdd rcu_dereference_check(), which takes a second argument\n\tin which one places a boolean expression based on the above\n\tprimitives and/or lockdep_is_held().\n\no\tA new kernel configuration parameter, CONFIG_PROVE_RCU, enables\n\trcu_dereference_check().  This depends on CONFIG_PROVE_LOCKING,\n\tand should be quite helpful during the transition period while\n\tCONFIG_PROVE_RCU-unaware patches are in flight.\n\nThe existing rcu_dereference() primitive does no checking, but\nupcoming patches will change that.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "017c426138122c8e9b9f5057fbd0567c37b35247",
      "tree": "648d35f773bc08e83d06f0c02a68cae02c46a4cd",
      "parents": [
        "4c54005ca438a8b46dd542b497d4f0dc2ca375e8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Thu Jan 14 16:10:58 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 16 10:25:22 2010 +0100"
      },
      "message": "rcu: Fix sparse warnings\n\nRename local variable \"i\" in rcu_init() to avoid conflict with\nRCU_INIT_FLAVOR(), restrict the scope of RCU_TREE_NONCORE, and\nmake __synchronize_srcu() static.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c12635142581560-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0cd397d33608ae6c97d2ee6c8c43462b419b7e26",
      "tree": "7c6ac61e7d8cc9cf410251024f1a6e515987b478",
      "parents": [
        "9b1d82fa1611706fa7ee1505f290160a18caf95d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sun Oct 25 19:03:51 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 26 09:40:30 2009 +0100"
      },
      "message": "rcu: Add synchronize_srcu_expedited()\n\nThis patch creates a synchronize_srcu_expedited() that uses\nsynchronize_sched_expedited() where synchronize_srcu()\nuses synchronize_sched().  The synchronize_srcu() and\nsynchronize_srcu_expedited() functions become one-liners that\npass synchronize_sched() or synchronize_sched_expedited(),\nrepectively, to a new __synchronize_srcu() function.\n\nWhile in the file, move the EXPORT_SYMBOL_GPL()s to immediately\nfollow the corresponding functions.\n\nRequested-by: Avi Kivity \u003cavi@redhat.com\u003e\nTested-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nReviewed-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: avi@redhat.com\nLKML-Reference: \u003c12565226354038-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bb695170d8dff3f22682b6c19df64dc093f58c0a",
      "tree": "a78249958fe4c0906f5cbcd3501cc409b4f88841",
      "parents": [
        "f17d30a803e8434c4ef381bb5cfa1956ff0201f0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Feb 06 01:36:45 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:02 2008 -0800"
      },
      "message": "make srcu_readers_active() static\n\nMake the needlessly global srcu_readers_active() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6a92013ba458804161c0c5b6d134d82204dc233",
      "tree": "ecee5fdcef80d1dba0ac6ea87370931ea39ffecd",
      "parents": [
        "eabc069401bcf45bcc3f19e643017bf761780aa8"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Oct 04 02:17:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:30 2006 -0700"
      },
      "message": "[PATCH] SRCU: report out-of-memory errors\n\nCurrently the init_srcu_struct() routine has no way to report out-of-memory\nerrors.  This patch (as761) makes it return -ENOMEM when the per-cpu data\nallocation fails.\n\nThe patch also makes srcu_init_notifier_head() report a BUG if a notifier\nhead can\u0027t be initialized.  Perhaps it should return -ENOMEM instead, but\nin the most likely cases where this might occur I don\u0027t think any recovery\nis possible.  Notifier chains generally are not created dynamically.\n\n[akpm@osdl.org: avoid statement-with-side-effect in macro]\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "621934ee7ed5b073c7fd638b347e632c53572761",
      "tree": "5722f9cda22c099ad60545f963410dcbc762ee65",
      "parents": [
        "95d77884c77beed676036d2f74d10b470a483c63"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@us.ibm.com",
        "time": "Wed Oct 04 02:17:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:30 2006 -0700"
      },
      "message": "[PATCH] srcu-3: RCU variant permitting read-side blocking\n\nUpdated patch adding a variant of RCU that permits sleeping in read-side\ncritical sections.  SRCU is as follows:\n\no\tEach use of SRCU creates its own srcu_struct, and each\n\tsrcu_struct has its own set of grace periods.  This is\n\tcritical, as it prevents one subsystem with a blocking\n\treader from holding up SRCU grace periods for other\n\tsubsystems.\n\no\tThe SRCU primitives (srcu_read_lock(), srcu_read_unlock(),\n\tand synchronize_srcu()) all take a pointer to a srcu_struct.\n\no\tThe SRCU primitives must be called from process context.\n\no\tsrcu_read_lock() returns an int that must be passed to\n\tthe matching srcu_read_unlock().  Realtime RCU avoids the\n\tneed for this by storing the state in the task struct,\n\tbut SRCU needs to allow a given code path to pass through\n\tmultiple SRCU domains -- storing state in the task struct\n\twould therefore require either arbitrary space in the\n\ttask struct or arbitrary limits on SRCU nesting.  So I\n\tkicked the state-storage problem up to the caller.\n\n\tOf course, it is not permitted to call synchronize_srcu()\n\twhile in an SRCU read-side critical section.\n\no\tThere is no call_srcu().  It would not be hard to implement\n\tone, but it seems like too easy a way to OOM the system.\n\t(Hey, we have enough trouble with call_rcu(), which does\n\t-not- permit readers to sleep!!!)  So, if you want it,\n\tplease tell me why...\n\n[josht@us.ibm.com: sparse notation]\nSigned-off-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
