)]}'
{
  "commit": "2aa792e6faf1a00f5accf1f69e87e11a390ba2cd",
  "tree": "9cae97455e0258207ed4045558584930df75209a",
  "parents": [
    "ade9862470dd0595d8e292ecea8445ed90b98df5"
  ],
  "author": {
    "name": "Pranith Kumar",
    "email": "bobby.prani@gmail.com",
    "time": "Tue Aug 12 13:07:47 2014 -0400"
  },
  "committer": {
    "name": "Paul E. McKenney",
    "email": "paulmck@linux.vnet.ibm.com",
    "time": "Sun Sep 07 16:18:19 2014 -0700"
  },
  "message": "rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads\n\nThe rcu_gp_kthread_wake() function checks for three conditions before\nwaking up grace period kthreads:\n\n*  Is the thread we are trying to wake up the current thread?\n*  Are the gp_flags zero? (all threads wait on non-zero gp_flags condition)\n*  Is there no thread created for this flavour, hence nothing to wake up?\n\nIf any one of these condition is true, we do not call wake_up().\nIt was found that there are quite a few avoidable wake ups both during\nidle time and under stress induced by rcutorture.\n\nIdle:\n\nTotal:66000, unnecessary:66000, case1:61827, case2:66000, case3:0\nTotal:68000, unnecessary:68000, case1:63696, case2:68000, case3:0\n\nrcutorture:\n\nTotal:254000, unnecessary:254000, case1:199913, case2:254000, case3:0\nTotal:256000, unnecessary:256000, case1:201784, case2:256000, case3:0\n\nHere case{1-3} are the cases listed above. We can avoid these wake\nups by using rcu_gp_kthread_wake() to conditionally wake up the grace\nperiod kthreads.\n\nThere is a comment about an implied barrier supplied by the wake_up()\nlogic.  This barrier is necessary for the awakened thread to see the\nupdated -\u003egp_flags.  This flag is always being updated with the root node\nlock held. Also, the awakened thread tries to acquire the root node lock\nbefore reading -\u003egp_flags because of which there is proper ordering.\n\nHence this commit tries to avoid calling wake_up() whenever we can by\nusing rcu_gp_kthread_wake() function.\n\nSigned-off-by: Pranith Kumar \u003cbobby.prani@gmail.com\u003e\nCC: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd6c8b519691c4cadd7b933d7c05080266bce8c1",
      "old_mode": 33188,
      "old_path": "kernel/rcu/tree.c",
      "new_id": "9e83cd9a32f112dd7e476aeb5f7e86d3653aac4d",
      "new_mode": 33188,
      "new_path": "kernel/rcu/tree.c"
    }
  ]
}
