)]}'
{
  "commit": "8bd93a2c5d4cab2ae17d06350daa7dbf546a4634",
  "tree": "3facbdbfbcc1b169fad20f456b0a2521adadfb25",
  "parents": [
    "998f2ac3fea93bfa8b55c279fff68f7c5b9ab93d"
  ],
  "author": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Mon Feb 22 17:04:59 2010 -0800"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Thu Feb 25 10:34:55 2010 +0100"
  },
  "message": "rcu: Accelerate grace period if last non-dynticked CPU\n\nCurrently, rcu_needs_cpu() simply checks whether the current CPU\nhas an outstanding RCU callback, which means that the last CPU\nto go into dyntick-idle mode might wait a few ticks for the\nrelevant grace periods to complete.  However, if all the other\nCPUs are in dyntick-idle mode, and if this CPU is in a quiescent\nstate (which it is for RCU-bh and RCU-sched any time that we are\nconsidering going into dyntick-idle mode), then the grace period\nis instantly complete.\n\nThis patch therefore repeatedly invokes the RCU grace-period\nmachinery in order to force any needed grace periods to complete\nquickly.  It does so a limited number of times in order to\nprevent starvation by an RCU callback function that might pass\nitself to call_rcu().\n\nHowever, if any CPU other than the current one is not in\ndyntick-idle mode, fall back to simply checking (with fix to bug\nnoted by Lai Jiangshan).  Also, take advantage of last\ngrace-period forcing, the opportunity to do so noted by Steve\nRostedt.  And apply simplified #ifdef condition suggested by\nFrederic Weisbecker.\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-15-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d77b54733c5b63980c51fe354ee91de1a41ce81a",
      "old_mode": 33188,
      "old_path": "include/linux/cpumask.h",
      "new_id": "dbcee7647d9a3a9c54dcf3c960d3828ad01ef314",
      "new_mode": 33188,
      "new_path": "include/linux/cpumask.h"
    },
    {
      "type": "modify",
      "old_id": "d95ca7cd5d45f092fe33e175a577e0a94675c549",
      "old_mode": 33188,
      "old_path": "init/Kconfig",
      "new_id": "42bf914b325af249784468022b70db98f54f0b7a",
      "new_mode": 33188,
      "new_path": "init/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "099a255ede4ca77b7bb73155c50e00146421b025",
      "old_mode": 33188,
      "old_path": "kernel/rcutree.c",
      "new_id": "29d88c08d8755017189aab1008aba007a2290ff1",
      "new_mode": 33188,
      "new_path": "kernel/rcutree.c"
    },
    {
      "type": "modify",
      "old_id": "e77cdf321e13ebbbe910dc92fca4d8483c633408",
      "old_mode": 33188,
      "old_path": "kernel/rcutree_plugin.h",
      "new_id": "a82566696b0b55ab2433507e824374a124139a30",
      "new_mode": 33188,
      "new_path": "kernel/rcutree_plugin.h"
    }
  ]
}
