)]}'
{
  "commit": "3f029d3c6d62068d59301d90c18dbde8ee402107",
  "tree": "c9c4e49bc0c8b919a81bf428180b9cffedbef389",
  "parents": [
    "c3a2ae3d93c0f10d29c071f599764d00b8de00cb"
  ],
  "author": {
    "name": "Gregory Haskins",
    "email": "ghaskins@novell.com",
    "time": "Wed Jul 29 11:08:47 2009 -0400"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Sun Aug 02 14:26:10 2009 +0200"
  },
  "message": "sched: Enhance the pre/post scheduling logic\n\nWe currently have an explicit \"needs_post\" vtable method which\nreturns a stack variable for whether we should later run\npost-schedule.  This leads to an awkward exchange of the\nvariable as it bubbles back up out of the context switch. Peter\nZijlstra observed that this information could be stored in the\nrun-queue itself instead of handled on the stack.\n\nTherefore, we revert to the method of having context_switch\nreturn void, and update an internal rq-\u003epost_schedule variable\nwhen we require further processing.\n\nIn addition, we fix a race condition where we try to access\ncurrent-\u003esched_class without holding the rq-\u003elock.  This is\ntechnically racy, as the sched-class could change out from\nunder us.  Instead, we reference the per-rq post_schedule\nvariable with the runqueue unlocked, but with preemption\ndisabled to see if we need to reacquire the rq-\u003elock.\n\nFinally, we clean the code up slightly by removing the #ifdef\nCONFIG_SMP conditionals from the schedule() call, and implement\nsome inline helper functions instead.\n\nThis patch passes checkpatch, and rt-migrate.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20090729150422.17691.55590.stgit@dev.haskins.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c35bc29d2a91a863daec532c34ea85f79ef24c8",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "195d72d5c102bb43ecd9c9f10391485ca5476941",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "a030d4514cdc00f0143d2f7eb94dabd29604da9f",
      "old_mode": 33188,
      "old_path": "kernel/sched.c",
      "new_id": "613fee54fc89a2ac4f443e6f92fe2479e4e9dbba",
      "new_mode": 33188,
      "new_path": "kernel/sched.c"
    },
    {
      "type": "modify",
      "old_id": "3918e01994e0a92bd734d22eebef7047e0a17a57",
      "old_mode": 33188,
      "old_path": "kernel/sched_rt.c",
      "new_id": "a8f89bc3e5ebc66d46348a3b493b5719cdf908b1",
      "new_mode": 33188,
      "new_path": "kernel/sched_rt.c"
    }
  ]
}
