)]}'
{
  "commit": "88ec22d3edb72b261f8628226cd543589a6d5e1b",
  "tree": "ca547c82ab6adce0b9e29afb6ceddf50cd417d44",
  "parents": [
    "efbbd05a595343a413964ad85a2ad359b7b7efbd"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "a.p.zijlstra@chello.nl",
    "time": "Wed Dec 16 18:04:41 2009 +0100"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Wed Dec 16 19:01:58 2009 +0100"
  },
  "message": "sched: Remove the cfs_rq dependency from set_task_cpu()\n\nIn order to remove the cfs_rq dependency from set_task_cpu() we\nneed to ensure the task is cfs_rq invariant for all callsites.\n\nThe simple approach is to substract cfs_rq-\u003emin_vruntime from\nse-\u003evruntime on dequeue, and add cfs_rq-\u003emin_vruntime on\nenqueue.\n\nHowever, this has the downside of breaking FAIR_SLEEPERS since\nwe loose the old vruntime as we only maintain the relative\nposition.\n\nTo solve this, we observe that we only migrate runnable tasks,\nwe do this using deactivate_task(.sleep\u003d0) and\nactivate_task(.wakeup\u003d0), therefore we can restrain the\nmin_vruntime invariance to that state.\n\nThe only other case is wakeup balancing, since we want to\nmaintain the old vruntime we cannot make it relative on dequeue,\nbut since we don\u0027t migrate inactive tasks, we can do so right\nbefore we activate it again.\n\nThis is where we need the new pre-wakeup hook, we need to call\nthis while still holding the old rq-\u003elock. We could fold it into\n-\u003eselect_task_rq(), but since that has multiple callsites and\nwould obfuscate the locking requirements, that seems like a\nfudge.\n\nThis leaves the fork() case, simply make sure that -\u003etask_fork()\nleaves the -\u003evruntime in a relative state.\n\nThis covers all cases where set_task_cpu() gets called, and\nensures it sees a relative vruntime.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nLKML-Reference: \u003c20091216170518.191697025@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c9fa1ccebff9042dd2d441332a5b0da33815a8a",
      "old_mode": 33188,
      "old_path": "include/linux/sched.h",
      "new_id": "973b2b89f86de8fdbeda198029b23e832a70925b",
      "new_mode": 33188,
      "new_path": "include/linux/sched.h"
    },
    {
      "type": "modify",
      "old_id": "6c571bdd5658e4d80b2449567569e56435e4016b",
      "old_mode": 33188,
      "old_path": "kernel/sched.c",
      "new_id": "f92ce63edfff1ee8475d889a3eb291eb1c38ee5a",
      "new_mode": 33188,
      "new_path": "kernel/sched.c"
    },
    {
      "type": "modify",
      "old_id": "ec1d2715620c70c8344243e73eaa58dad51b81bd",
      "old_mode": 33188,
      "old_path": "kernel/sched_fair.c",
      "new_id": "42ac3c9f66f68868bb651f6c163483d6713b6eea",
      "new_mode": 33188,
      "new_path": "kernel/sched_fair.c"
    }
  ]
}
