)]}'
{
  "log": [
    {
      "commit": "c32b4fce799d3a6157df9048d03e429956c58818",
      "tree": "b9f3064e19516f70888c9f0ab66e735b1bec05c2",
      "parents": [
        "a44702e8858a071aa0f2365113ea4a2e51c8b575"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 11 01:09:48 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 18 10:46:56 2010 +0200"
      },
      "message": "sched: task_tick_rt: Remove the obsolete -\u003esignal !\u003d NULL check\n\nRemove the obsolete -\u003esignal !\u003d NULL check in watchdog().\nSince ea6d290c -\u003esignal can\u0027t be NULL.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20100610230948.GA25911@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "371fd7e7a56a5c136d31aa980011bd2f131c3ef5",
      "tree": "cf52014018e8258acd8bcfd486d855f098a02c03",
      "parents": [
        "cc87f76a601d2d256118f7bab15e35254356ae21"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Mar 24 16:38:48 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:12:05 2010 +0200"
      },
      "message": "sched: Add enqueue/dequeue flags\n\nIn order to reduce the dependency on TASK_WAKING rework the enqueue\ninterface to support a proper flags field.\n\nReplace the int wakeup, bool head arguments with an int flags argument\nand create the following flags:\n\n  ENQUEUE_WAKEUP - the enqueue is a wakeup of a sleeping task,\n  ENQUEUE_WAKING - the enqueue has relative vruntime due to\n                   having sched_class::task_waking() called,\n  ENQUEUE_HEAD - the waking task should be places on the head\n                 of the priority queue (where appropriate).\n\nFor symmetry also convert sched_class::dequeue() to a flags scheme.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0017d735092844118bef006696a750a0e4ef6ebd",
      "tree": "8ed1540aaeb63da726f93da12950a8eaa0e0a3e0",
      "parents": [
        "9084bb8246ea935b98320554229e2f371f7f52fa"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Mar 24 18:34:10 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:12:03 2010 +0200"
      },
      "message": "sched: Fix TASK_WAKING vs fork deadlock\n\nOleg noticed a few races with the TASK_WAKING usage on fork.\n\n - since TASK_WAKING is basically a spinlock, it should be IRQ safe\n - since we set TASK_WAKING (*) without holding rq-\u003elock it could\n   be there still is a rq-\u003elock holder, thereby not actually\n   providing full serialization.\n\n(*) in fact we clear PF_STARTING, which in effect enables TASK_WAKING.\n\nCure the second issue by not setting TASK_WAKING in sched_fork(), but\nonly temporarily in wake_up_new_task() while calling select_task_rq().\n\nCure the first by holding rq-\u003elock around the select_task_rq() call,\nthis will disable IRQs, this however requires that we push down the\nrq-\u003elock release into select_task_rq_fair()\u0027s cgroup stuff.\n\nBecause select_task_rq_fair() still needs to drop the rq-\u003elock we\ncannot fully get rid of TASK_WAKING.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c9494727cf293ae2ec66af57547a3e79c724fec2",
      "tree": "44ae197b64fa7530ee695a90ad31326dda06f1e1",
      "parents": [
        "6427462bfa50f50dc6c088c07037264fcc73eca1",
        "42be79e37e264557f12860fa4cc84b4de3685954"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:02:55 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:03:08 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nMerge reason: update to latest upstream\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "80a186074e72e2cd61f6716d90cf32ce54981a56",
      "tree": "c5f75a83498df0ea2109067b797ec7986479dda0",
      "parents": [
        "15c989d4d14b82f43cae7efc6a7794cdd556f274",
        "3d07467b7aa91623b31d7b5888a123a2c8c8e9cc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:46:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:46:18 2010 -0800"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: Fix pick_next_highest_task_rt() for cgroups\n  sched: Cleanup: remove unused variable in try_to_wake_up()\n  x86: Fix sched_clock_cpu for systems with unsynchronized TSC\n"
    },
    {
      "commit": "41acab8851a0408c1d5ad6c21a07456f88b54d40",
      "tree": "28b23b930571c1f6dfd5c4e8129a2a7ea2056307",
      "parents": [
        "3d07467b7aa91623b31d7b5888a123a2c8c8e9cc"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.de.marchi@gmail.com",
        "time": "Wed Mar 10 23:37:45 2010 -0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 15:22:28 2010 +0100"
      },
      "message": "sched: Implement group scheduler statistics in one struct\n\nPut all statistic fields of sched_entity in one struct, sched_statistics,\nand embed it into sched_entity.\n\nThis change allows to memset the sched_statistics to 0 when needed (for\ninstance when forking), avoiding bugs of non initialized fields.\n\nSigned-off-by: Lucas De Marchi \u003clucas.de.marchi@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1268275065-18542-1-git-send-email-lucas.de.marchi@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3d07467b7aa91623b31d7b5888a123a2c8c8e9cc",
      "tree": "f7acd28870838db783146b3c87f1d56bd1c42ef2",
      "parents": [
        "ab3b3aa5dd01b3aaa6b15caee113b21b1b6520c4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Mar 10 17:07:24 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 15:21:50 2010 +0100"
      },
      "message": "sched: Fix pick_next_highest_task_rt() for cgroups\n\nSince pick_next_highest_task_rt() already iterates all the cgroups and\nis really only interested in tasks, skip over the !task entries.\n\nReported-by: Dhaval Giani \u003cdhaval.giani@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Dhaval Giani \u003cdhaval.giani@gmail.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78d7d407b62a021e6d2e8dc24c0b90e390ab58a1",
      "tree": "8c1074b84db4b977bad6802a3701e0113c0a7739",
      "parents": [
        "d4bb527438b4181cd3c564ae04dd344c381283a1"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Fri Mar 05 13:42:54 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:33 2010 -0800"
      },
      "message": "kernel core: use helpers for rlimits\n\nMake sure compiler won\u0027t do weird things with limits.  E.g.  fetching them\ntwice may return 2 different values after writable limits are implemented.\n\nI.e.  either use rlimit helpers added in commit 3e10e716abf3 (\"resource:\nadd helpers for fetching rlimits\") or ACCESS_ONCE if not applicable.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@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": "74b7eb5885415ed41d012f432398d1b697115b5f",
      "tree": "2014e5d505c797dce846c0193a9362003cac3bbd",
      "parents": [
        "4a461c85b643258e305eb5a3aced34009db2f818"
      ],
      "author": {
        "name": "Yong Zhang",
        "email": "yong.zhang0@gmail.com",
        "time": "Fri Jan 29 14:57:52 2010 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 04 09:57:32 2010 +0100"
      },
      "message": "sched: Change usage of rt_rq-\u003ert_se to rt_rq-\u003etg-\u003ert_se[cpu]\n\nThis is the first step to remove rt_rq member rt_se because it have the\nsame meaning with tg-\u003ert_se[cpu]. And the latter style is also used by\nthe fair scheduling class.\n\nSigned-off-by: Yong Zhang \u003cyong.zhang0@gmail.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c2674af741001282257r28c97a92o9f90cf16fe8d3d84@mail.gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "37dad3fce97f01e5149d69de0833d8452c0e862e",
      "tree": "b61b32fd56301211e06c4ff8d7d72a08eb7af182",
      "parents": [
        "ea87bb7853168434f4a82426dd1ea8421f9e604d"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jan 20 20:59:01 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jan 22 18:09:59 2010 +0100"
      },
      "message": "sched: Implement head queueing for sched_rt\n\nThe ability of enqueueing a task to the head of a SCHED_FIFO priority\nlist is required to fix some violations of POSIX scheduling policy.\n\nImplement the functionality in sched_rt.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nTested-by: Carsten Emde \u003ccbe@osadl.org\u003e\nTested-by: Mathias Weber \u003cmathias.weber.mw1@roche.com\u003e\nLKML-Reference: \u003c20100120171629.772169931@linutronix.de\u003e\n"
    },
    {
      "commit": "ea87bb7853168434f4a82426dd1ea8421f9e604d",
      "tree": "fcadec9b0fd1c57e4d1b625e2492c13c852972f1",
      "parents": [
        "7c9414385ebfdd87cc542d4e7e3bb0dbb2d3ce25"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jan 20 20:58:57 2010 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jan 22 18:09:59 2010 +0100"
      },
      "message": "sched: Extend enqueue_task to allow head queueing\n\nThe ability of enqueueing a task to the head of a SCHED_FIFO priority\nlist is required to fix some violations of POSIX scheduling policy.\n\nExtend the related functions with a \"head\" argument.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nTested-by: Carsten Emde \u003ccbe@osadl.org\u003e\nTested-by: Mathias Weber \u003cmathias.weber.mw1@roche.com\u003e\nLKML-Reference: \u003c20100120171629.734886007@linutronix.de\u003e\n\n"
    },
    {
      "commit": "3d45fd804a95055ecab5b3eed81f5ab2dbb047a2",
      "tree": "3ac7d2dbe75c4e406864b7d8c895f9318f308575",
      "parents": [
        "1e3c88bdeb1260edc341e45c9fb8efd182a5c511"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Dec 17 17:12:46 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 21 13:40:09 2010 +0100"
      },
      "message": "sched: Remove the sched_class load_balance methods\n\nTake out the sched_class methods for load-balancing.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6d686f4564f3fc7c6e678852919e48ad331d276b",
      "tree": "642c214879c1e1e5fbadc88c33ad47fe67a94433",
      "parents": [
        "d894837f23f491aa7ed167aae767fc07cfe6e6e6"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Wed Jan 13 20:21:52 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 17 08:09:45 2010 +0100"
      },
      "message": "sched: Don\u0027t expose local functions\n\nkernel/sched: don\u0027t expose local functions\n\nThe get_rr_interval_* functions are all class methods of\nstruct sched_class. They are not exported so make them\nstatic.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003c201001132021.53253.hartleys@visionengravers.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "efbbd05a595343a413964ad85a2ad359b7b7efbd",
      "tree": "c1bf0d86134187e127a00067b50b0684c2988860",
      "parents": [
        "881232b70b195768a71cd74ff4b4e8ab9502997b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Dec 16 18:04:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 16 19:01:58 2009 +0100"
      },
      "message": "sched: Add pre and post wakeup hooks\n\nAs will be apparent in the next patch, we need a pre wakeup hook\nfor sched_fair task migration, hence rename the post wakeup hook\nand one pre wakeup.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nLKML-Reference: \u003c20091216170518.114746117@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0986b11b12ad2baed338385f79fd0dec58a23fc6",
      "tree": "36bdf3985704f87f0c278a35e53470f6248419e2",
      "parents": [
        "05fa785cf80c9b7c0254c3056037147aed3ea16b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 15:32:06 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "sched: Convert rt_runtime_lock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "05fa785cf80c9b7c0254c3056037147aed3ea16b",
      "tree": "3d5c69d449b9240dc6d1005dddf344e467de4f34",
      "parents": [
        "a26724591edba5acc528d41f3906a972590e8f54"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 14:28:38 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "sched: Convert rq-\u003elock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n"
    },
    {
      "commit": "dba091b9e3522b9d32fc9975e48d3b69633b45f0",
      "tree": "91549e3921971b6d0074fd34c29223b593381c8a",
      "parents": [
        "3160568371da441b7f2fb57f2f1225404207e8f2"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Dec 09 09:32:03 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 09 10:01:07 2009 +0100"
      },
      "message": "sched: Protect sched_rr_get_param() access to task-\u003esched_class\n\nsched_rr_get_param calls\ntask-\u003esched_class-\u003eget_rr_interval(task) without protection\nagainst a concurrent sched_setscheduler() call which modifies\ntask-\u003esched_class.\n\nSerialize the access with task_rq_lock(task) and hand the rq\npointer into get_rr_interval() as it\u0027s needed at least in the\nsched_fair implementation.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003calpine.LFD.2.00.0912090930120.3089@localhost.localdomain\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e2c880630438f80b474378d5487b511b07665051",
      "tree": "0f35b58cd657a3b50e03a93a12367ab82bd569ef",
      "parents": [
        "45a5c8bad827ebb9c9798becc15bce2e804d49e0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 03 14:53:15 2009 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 04 13:16:38 2009 +0100"
      },
      "message": "cpumask: Simplify sched_rt.c\n\nfind_lowest_rq() wants to call pick_optimal_cpu() on the\nintersection of sched_domain_span(sd) and lowest_mask.  Rather\nthan doing a cpus_and into a temporary, we can open-code it.\n\nThis actually makes the code slightly clearer, IMHO.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c200911031453.15350.rusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1",
      "tree": "54c0c8dc201122483bdd7e8975103b07f6afd34b",
      "parents": [
        "cb5fd13f1178dee4302646b2890d884c380160e1"
      ],
      "author": {
        "name": "Peter Williams",
        "email": "pwil3058@bigpond.net.au",
        "time": "Mon Sep 21 01:31:53 2009 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 21 09:53:55 2009 +0200"
      },
      "message": "sched: Simplify sys_sched_rr_get_interval() system call\n\nBy removing the need for it to know details of scheduling classes.\n\nThis allows PlugSched to define orthogonal scheduling classes.\n\nSigned-off-by: Peter Williams \u003cpwil3058@bigpond.net.au\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nLKML-Reference: \u003c06d1b89ee15a0eef82d7.1253496713@mudlark.pw.nest\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7d47872146398dbede13223299fe1cb368ebc781",
      "tree": "c472424ecbabdb8136e2b93f49f75af9414f03f3",
      "parents": [
        "0763a660a84220cc3900fd32abdd7ad109e2278d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 14 19:55:44 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 15 16:51:30 2009 +0200"
      },
      "message": "sched: Rename sync arguments\n\nIn order to extend the functions to have more than 1 flag (sync),\nrename the argument to flags, and explicitly define a WF_ space for\nindividual flags.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0763a660a84220cc3900fd32abdd7ad109e2278d",
      "tree": "1b745884fb79627e05c026ee5bfb115b1f722db8",
      "parents": [
        "8e6598af3f35629c37249a610cf13e73f70db279"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 14 19:37:39 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 15 16:51:29 2009 +0200"
      },
      "message": "sched: Rename select_task_rq() argument\n\nIn order to be able to rename the sync argument, we need to rename\nthe current flag argument.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5f3edc1b1ead6d9bd45a85c551f44eff8fe76b9f",
      "tree": "46f987010ca017be945831b76d8ea846f1ba8fc9",
      "parents": [
        "aaee1203ca52b9db799433c33c9bffc33cdf8909"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Sep 10 13:42:00 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 15 16:01:04 2009 +0200"
      },
      "message": "sched: Hook sched_balance_self() into sched_class::select_task_rq()\n\nRather ugly patch to fully place the sched_balance_self() code\ninside the fair class.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e9e9250bc78e7f6342517214c0178a529807964b",
      "tree": "9466a437ccfa93b200f4ee434fe807dd6b5fc050",
      "parents": [
        "ab29230e673c646292c90c8b9d378b9562145af0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Sep 01 10:34:37 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 04 10:09:55 2009 +0200"
      },
      "message": "sched: Scale down cpu_power due to RT tasks\n\nKeep an average on the amount of time spend on RT tasks and use\nthat fraction to scale down the cpu_power for regular tasks.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nAcked-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nAcked-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nLKML-Reference: \u003c20090901083826.287778431@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bcf08df3b23b3d13bf8c4ad6bd744a6ad30015fb",
      "tree": "c3c37cfa34a15c05a37bbacc7b67a2ffc19bc856",
      "parents": [
        "693525e3bea25cf2ee6cf2b862ba7c148e891df2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 12:11:10 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 15:15:51 2009 +0200"
      },
      "message": "sched: Fix cpupri build on !CONFIG_SMP\n\nThis build bug:\n\n In file included from kernel/sched.c:1765:\n kernel/sched_rt.c: In function ‘has_pushable_tasks’:\n kernel/sched_rt.c:1069: error: ‘struct rt_rq’ has no member named ‘pushable_tasks’\n kernel/sched_rt.c: In function ‘pick_next_task_rt’:\n kernel/sched_rt.c:1084: error: ‘struct rq’ has no member named ‘post_schedule’\n\nTriggers because both pushable_tasks and post_schedule are\nSMP-only fields.\n\nMove pushable_tasks() to the SMP section and #ifdef the post_schedule use.\n\nCc: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: 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"
    },
    {
      "commit": "8f48894fcc89ddec62e1762f73a0825793e59e91",
      "tree": "63b071af185d7049c854cbf4d000949968236bac",
      "parents": [
        "00aec93d10a051ea64f83eff75d4065a19508ea6"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 12:25:30 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 14:26:14 2009 +0200"
      },
      "message": "sched: Add debug check to task_of()\n\nA frequent mistake appears to be to call task_of() on a\nscheduler entity that is not actually a task, which can result\nin a wild pointer.\n\nAdd a check to catch these mistakes.\n\nSuggested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "00aec93d10a051ea64f83eff75d4065a19508ea6",
      "tree": "010148caeaf4d4b36188ba15828343aa6c74efc9",
      "parents": [
        "3f029d3c6d62068d59301d90c18dbde8ee402107"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Thu Jul 30 10:57:23 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 14:26:12 2009 +0200"
      },
      "message": "sched: Fully integrate cpus_active_map and root-domain code\n\nReflect \"active\" cpus in the rq-\u003erd-\u003eonline field, instead of\nthe online_map.\n\nThe motivation is that things that use the root-domain code\n(such as cpupri) only care about cpus classified as \"active\"\nanyway. By synchronizing the root-domain state with the active\nmap, we allow several optimizations.\n\nFor instance, we can remove an extra cpumask_and from the\nscheduler hotpath by utilizing rq-\u003erd-\u003eonline (since it is now\na cached version of cpu_active_map \u0026 rq-\u003erd-\u003espan).\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20090730145723.25226.24493.stgit@dev.haskins.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "a1ba4d8ba9f06a397e97cbd67a93ee306860b40a",
      "tree": "f0e0f92a2c0763f8ec162c2b0e2abc389075b207",
      "parents": [
        "d4ec36bac3de39b7e10ec8f42fbdd20d9a9ed753"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Apr 01 18:40:15 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 10 10:43:29 2009 +0200"
      },
      "message": "sched_rt: Fix overload bug on rt group scheduling\n\nFixes an easily triggerable BUG() when setting process affinities.\n\nMake sure to count the number of migratable tasks in the same place:\nthe root rt_rq. Otherwise the number doesn\u0027t make sense and we\u0027ll hit\nthe BUG in set_cpus_allowed_rt().\n\nAlso, make sure we only count tasks, not groups (this is probably\nalready taken care of by the fact that rt_se-\u003enr_cpus_allowed will be 0\nfor groups, but be more explicit)\n\nTested-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: stable@kernel.org\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nLKML-Reference: \u003c1247067476.9777.57.camel@twins\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eaa958402ea40851097d051f52ba1bb7a885efe9",
      "tree": "9187f59ff0ee6ac138b5c81a2212bc10f46d04a5",
      "parents": [
        "0281b5dc0350cbf6dd21ed558a33cccce77abc02"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Jun 06 14:51:36 2009 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jun 09 22:30:27 2009 +0930"
      },
      "message": "cpumask: alloc zeroed cpumask for static cpumask_var_ts\n\nThese are defined as static cpumask_var_t so if MAXSMP is not used,\nthey are cleared already.  Avoid surprises when MAXSMP is enabled.\n\nSigned-off-by: Yinghai Lu \u003cyinghai.lu@kernel.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5af8c4e0fac9838428bd718040b664043a05f37c",
      "tree": "75a01d98ed244db45fe3c734c4a81c1a3d92ac37",
      "parents": [
        "46e0bb9c12f4bab539736f1714cbf16600f681ec",
        "577c9c456f0e1371cbade38eaf91ae8e8a308555"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 17:25:42 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 17:26:00 2009 +0200"
      },
      "message": "Merge commit \u0027v2.6.30-rc1\u0027 into sched/urgent\n\nMerge reason: update to latest upstream to queue up fix\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "13b8bd0a5713bdf05659019badd7c0407984ece1",
      "tree": "378950741dd647b672a2b3e61988725b52557f2d",
      "parents": [
        "a18b83b7ef3c98cd8b4bb885e4a649a8f30fb7b0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Mar 25 15:01:22 2009 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 01 13:24:51 2009 +0200"
      },
      "message": "sched_rt: don\u0027t allocate cpumask in fastpath\n\nImpact: cleanup\n\nAs pointed out by Steven Rostedt.  Since the arg in question is\nunused, we simply change cpupri_find() to accept NULL.\n\nReported-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c200903251501.22664.rusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6e15cf04860074ad032e88c306bea656bbdd0f22",
      "tree": "c346383bb7563e8d66b2f4a502f875b259c34870",
      "parents": [
        "be0ea69674ed95e1e98cb3687a241badc756d228",
        "60db56422043aaa455ac7f858ce23c273220f9d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 26 21:39:17 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 27 17:28:43 2009 +0100"
      },
      "message": "Merge branch \u0027core/percpu\u0027 into percpu-cpumask-x86-for-linus-2\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n\tarch/x86/include/asm/fixmap_64.h\n\tarch/x86/include/asm/setup.h\n\tkernel/irq/handle.c\n\nSemantic merge:\n        arch/x86/include/asm/fixmap.h\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "140573d33b703194b7e1893711e78b7f546cca7c",
      "tree": "8e215102e7c5222013df84ceed8b961728d2db91",
      "parents": [
        "34cb61359b503d7aff6447acb037a5efd6ce93b2",
        "ceacc2c1c85ac498ca4cf297bdfe5b4aaa9fd0e0",
        "483b4ee60edbefdfbff0dd538fb81f368d9e7c0d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 08 20:12:46 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 08 20:12:46 2009 +0100"
      },
      "message": "Merge branches \u0027sched/rt\u0027 and \u0027sched/urgent\u0027 into sched/core\n"
    },
    {
      "commit": "3d398703ef06fd97b4c28c86b580546d5b57e7b7",
      "tree": "8d0d22c32d4610392af39a8184e38971554e7e5b",
      "parents": [
        "a571bbeafbcc501d9989fbce1cddcd810bd51d71"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 31 23:21:24 2009 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 01 10:49:52 2009 +0100"
      },
      "message": "sched_rt: don\u0027t use first_cpu on cpumask created with cpumask_and\n\ncpumask_and() only initializes nr_cpu_ids bits, so the (deprecated)\nfirst_cpu() might find one of those uninitialized bits if nr_cpu_ids\nis less than NR_CPUS (as it can be for CONFIG_CPUMASK_OFFSTACK).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ceacc2c1c85ac498ca4cf297bdfe5b4aaa9fd0e0",
      "tree": "4bac6a3e5544d90da1ee9437845120204d4bb382",
      "parents": [
        "398a153b16b09a68739928d4502455db9725ac86"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Jan 16 14:46:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 16 15:01:31 2009 +0100"
      },
      "message": "sched: make plist a library facility\n\nIngo Molnar wrote:\n\n\u003e here\u0027s a new build failure with tip/sched/rt:\n\u003e\n\u003e   LD      .tmp_vmlinux1\n\u003e kernel/built-in.o: In function `set_curr_task_rt\u0027:\n\u003e sched.c:(.text+0x3675): undefined reference to `plist_del\u0027\n\u003e kernel/built-in.o: In function `pick_next_task_rt\u0027:\n\u003e sched.c:(.text+0x37ce): undefined reference to `plist_del\u0027\n\u003e kernel/built-in.o: In function `enqueue_pushable_task\u0027:\n\u003e sched.c:(.text+0x381c): undefined reference to `plist_del\u0027\n\nEliminate the plist library kconfig and make it available\nunconditionally.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "398a153b16b09a68739928d4502455db9725ac86",
      "tree": "3a584f77d92c49ac8e5a047fd120607c3b5f9727",
      "parents": [
        "b07430ac37103218b5c1e542490a1b98e6deb3d6"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Jan 14 09:10:04 2009 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Jan 14 09:10:04 2009 -0500"
      },
      "message": "sched: fix build error in kernel/sched_rt.c when RT_GROUP_SCHED \u0026\u0026 !SMP\n\nIngo found a build error in the scheduler when RT_GROUP_SCHED was\nenabled, but SMP was not.  This patch rearranges the code such\nthat it is a little more streamlined and compiles under all permutations\nof SMP, UP and RT_GROUP_SCHED.  It was boot tested on my 4-way x86_64\nand it still passes preempt-test.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "b07430ac37103218b5c1e542490a1b98e6deb3d6",
      "tree": "044c638594e5d04939e99ef24ad837e2121daf21",
      "parents": [
        "0a6d4e1dc9154c4376358663d74060d1e33d203e"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Jan 14 08:55:39 2009 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Jan 14 08:55:39 2009 -0500"
      },
      "message": "sched: de CPP-ify the scheduler code\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "d38b223c86db3162dc85b5a1997ac8a210e1660b",
      "tree": "3e232926a5fce47e910e4356e833be43b7b03592",
      "parents": [
        "c90e785be2fd9dfaef1f030d0314e44052553736"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Sat Jan 10 21:58:11 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 19:13:22 2009 +0100"
      },
      "message": "cpumask: reduce stack usage in find_lowest_rq\n\nImpact: reduce stack usage, cleanup\n\nUse a cpumask_var_t in find_lowest_rq() and clean up other old\ncpumask_t calls.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "0a6d4e1dc9154c4376358663d74060d1e33d203e",
      "tree": "5e0b72984d249bc215a6cd52b12e7b1d27abc852",
      "parents": [
        "c59765042f53a79a7a65585042ff463b69cb248c",
        "1563513d34ed4b12ef32bc2adde4a53ce05701a1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 04:58:49 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 04:58:49 2009 +0100"
      },
      "message": "Merge branch \u0027sched/latest\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ghaskins/linux-2.6-hacks into sched/rt\n"
    },
    {
      "commit": "6ca09dfc9f180d038dcef93c167a833f43a8246f",
      "tree": "48cd4e6530a7523d7d14d2c18fa7d3bd2ef49a4e",
      "parents": [
        "730cf27246225d56ca1603b2f3c4fdbf882d4e51"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 18:08:45 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 19:00:09 2009 +0100"
      },
      "message": "sched: put back some stack hog changes that were undone in kernel/sched.c\n\nImpact: prevents panic from stack overflow on numa-capable machines.\n\nSome of the \"removal of stack hogs\" changes in kernel/sched.c by using\nnode_to_cpumask_ptr were undone by the early cpumask API updates, and\ncauses a panic due to stack overflow.  This patch undoes those changes\nby using cpumask_of_node() which returns a \u0027const struct cpumask *\u0027.\n\nIn addition, cpu_coregoup_map is replaced with cpu_coregroup_mask further\nreducing stack usage.  (Both of these updates removed 9 FIXME\u0027s!)\n\nAlso:\n   Pick up some remaining changes from the old \u0027cpumask_t\u0027 functions to\n   the new \u0027struct cpumask *\u0027 functions.\n\n   Optimize memory traffic by allocating each percpu local_cpu_mask on the\n   same node as the referring cpu.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7eb19553369c46cc1fa64caf120cbcab1b597f7c",
      "tree": "ef1a3beae706b9497c845d0a2557ceb4d2754998",
      "parents": [
        "6092848a2a23b660150a38bc06f59d75838d70c8",
        "8c384cdee3e04d6194a2c2b192b624754f990835"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Dec 31 17:34:16 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 03 18:53:31 2009 +0100"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask\n\nConflicts:\n\tarch/x86/kernel/io_apic.c\n\tkernel/rcuclassic.c\n\tkernel/sched.c\n\tkernel/time/tick-sched.c\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\n[ mingo@elte.hu: backmerged typo fix for io_apic.c ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1563513d34ed4b12ef32bc2adde4a53ce05701a1",
      "tree": "c8937f0dfd7998f3c9316beadc31c2b437b21157",
      "parents": [
        "917b627d4d981dc614519d7b34ea31a976b14e12"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:53 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:53 2008 -0500"
      },
      "message": "RT: fix push_rt_task() to handle dequeue_pushable properly\n\nA panic was discovered by Chirag Jog where a BUG_ON sanity check\nin the new \"pushable_task\" logic would trigger a panic under\ncertain circumstances:\n\nhttp://lkml.org/lkml/2008/9/25/189\n\nGilles Carry discovered that the root cause was attributed to the\npushable_tasks list getting corrupted in the push_rt_task logic.\nThis was the result of a dropped rq lock in double_lock_balance\nallowing a task in the process of being pushed to potentially migrate\naway, and thus corrupt the pushable_tasks() list.\n\nI traced back the problem as introduced by the pushable_tasks patch\nthat went in recently.   There is a \"retry\" path in push_rt_task()\nthat actually had a compound conditional to decide whether to\nretry or exit.  I missed the meaning behind the rationale for the\nvirtual \"if(!task) goto out;\" portion of the compound statement and\nthus did not handle it properly.  The new pushable_tasks logic\nactually creates three distinct conditions:\n\n1) an untouched and unpushable task should be dequeued\n2) a migrated task where more pushable tasks remain should be retried\n3) a migrated task where no more pushable tasks exist should exit\n\nThe original logic mushed (1) and (3) together, resulting in the\nsystem dequeuing a migrated task (against an unlocked foreign run-queue\nnonetheless).\n\nTo fix this, we get rid of the notion of \"paranoid\" and we support the\nthree unique conditions properly.  The paranoid feature is no longer\nrelevant with the new pushable logic (since pushable naturally limits\nthe loop) anyway, so lets just remove it.\n\nReported-By: Chirag Jog \u003cchirag@linux.vnet.ibm.com\u003e\nFound-by: Gilles Carry \u003cgilles.carry@bull.net\u003e\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "917b627d4d981dc614519d7b34ea31a976b14e12",
      "tree": "edb1744bd3f943ee79ee4f6c995c48a28421504c",
      "parents": [
        "4075134e40804821f90866d7de56802e4dcecb1e"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:53 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:53 2008 -0500"
      },
      "message": "sched: create \"pushable_tasks\" list to limit pushing to one attempt\n\nThe RT scheduler employs a \"push/pull\" design to actively balance tasks\nwithin the system (on a per disjoint cpuset basis).  When a task is\nawoken, it is immediately determined if there are any lower priority\ncpus which should be preempted.  This is opposed to the way normal\nSCHED_OTHER tasks behave, which will wait for a periodic rebalancing\noperation to occur before spreading out load.\n\nWhen a particular RQ has more than 1 active RT task, it is said to\nbe in an \"overloaded\" state.  Once this occurs, the system enters\nthe active balancing mode, where it will try to push the task away,\nor persuade a different cpu to pull it over.  The system will stay\nin this state until the system falls back below the \u003c\u003d 1 queued RT\ntask per RQ.\n\nHowever, the current implementation suffers from a limitation in the\npush logic.  Once overloaded, all tasks (other than current) on the\nRQ are analyzed on every push operation, even if it was previously\nunpushable (due to affinity, etc).  Whats more, the operation stops\nat the first task that is unpushable and will not look at items\nlower in the queue.  This causes two problems:\n\n1) We can have the same tasks analyzed over and over again during each\n   push, which extends out the fast path in the scheduler for no\n   gain.  Consider a RQ that has dozens of tasks that are bound to a\n   core.  Each one of those tasks will be encountered and skipped\n   for each push operation while they are queued.\n\n2) There may be lower-priority tasks under the unpushable task that\n   could have been successfully pushed, but will never be considered\n   until either the unpushable task is cleared, or a pull operation\n   succeeds.  The net result is a potential latency source for mid\n   priority tasks.\n\nThis patch aims to rectify these two conditions by introducing a new\npriority sorted list: \"pushable_tasks\".  A task is added to the list\neach time a task is activated or preempted.  It is removed from the\nlist any time it is deactivated, made current, or fails to push.\n\nThis works because a task only needs to be attempted to push once.\nAfter an initial failure to push, the other cpus will eventually try to\npull the task when the conditions are proper.  This also solves the\nproblem that we don\u0027t completely analyze all tasks due to encountering\nan unpushable tasks.  Now every task will have a push attempted (when\nappropriate).\n\nThis reduces latency both by shorting the critical section of the\nrq-\u003elock for certain workloads, and by making sure the algorithm\nconsiders all eligible tasks in the system.\n\n[ rostedt: added a couple more BUG_ONs ]\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "967fc04671feea4dbf780c9e55a0bc8fcf68a14e",
      "tree": "223f2bb8c59138cc70fbb0e438ae27819ebe1a92",
      "parents": [
        "8f45e2b516201d1bf681e6026fa5276385def565"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:52 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:52 2008 -0500"
      },
      "message": "sched: add sched_class-\u003eneeds_post_schedule() member\n\nWe currently run class-\u003epost_schedule() outside of the rq-\u003elock, which\nmeans that we need to test for the need to post_schedule outside of\nthe lock to avoid a forced reacquistion.  This is currently not a problem\nas we only look at rq-\u003ert.overloaded.  However, we want to enhance this\ngoing forward to look at more state to reduce the need to post_schedule to\na bare minimum set.  Therefore, we introduce a new member-func called\nneeds_post_schedule() which tests for the post_schedule condtion without\nactually performing the work.  Therefore it is safe to call this\nfunction before the rq-\u003elock is released, because we are guaranteed not\nto drop the lock at an intermediate point (such as what post_schedule()\nmay do).\n\nWe will use this later in the series\n\n[ rostedt: removed paranoid BUG_ON ]\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "777c2f389e463428fd7e2871051a84d7fe84b172",
      "tree": "ba82f0105ba069ac6ba724f85f98144459e0c436",
      "parents": [
        "74ab8e4f6412c0b2d730fe5de28dc21de8b92c01"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:50 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:50 2008 -0500"
      },
      "message": "sched: only try to push a task on wakeup if it is migratable\n\nThere is no sense in wasting time trying to push a task away that\ncannot move anywhere else.  We gain no benefit from trying to push\nother tasks at this point, so if the task being woken up is non\nmigratable, just skip the whole operation.  This reduces overhead\nin the wakeup path for certain tasks.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "74ab8e4f6412c0b2d730fe5de28dc21de8b92c01",
      "tree": "c1bce6a8e23fa58677de23989fa81bc1fcfc0118",
      "parents": [
        "a8728944efe23417e38bf22063f06d9d8ee21d59"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:50 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:50 2008 -0500"
      },
      "message": "sched: use highest_prio.next to optimize pull operations\n\nWe currently take the rq-\u003elock for every cpu in an overload state during\npull_rt_tasks().  However, we now have enough information via the\nhighest_prio.[curr|next] fields to determine if there is any tasks of\ninterest to warrant the overhead of the rq-\u003elock, before we actually take\nit.  So we use this information to reduce lock contention during the\npull for the case where the source-rq doesnt have tasks that preempt\nthe current task.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "a8728944efe23417e38bf22063f06d9d8ee21d59",
      "tree": "225f453912a50a4baf0fdbc578c31bd23d4780f6",
      "parents": [
        "e864c499d9e57805ae1f9e7ea404dd223759cd53"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "message": "sched: use highest_prio.curr for pull threshold\n\nhighest_prio.curr is actually a more accurate way to keep track of\nthe pull_rt_task() threshold since it is always up to date, even\nif the \"next\" task migrates during double_lock.  Therefore, stop\nlooking at the \"next\" task object and simply use the highest_prio.curr.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "e864c499d9e57805ae1f9e7ea404dd223759cd53",
      "tree": "26dcc691f414c2d0eee026ea0f4d9e0d9e0475a2",
      "parents": [
        "4d9842776a23e52ec4c60e0a79f5e1bbe91e463e"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "message": "sched: track the next-highest priority on each runqueue\n\nWe will use this later in the series to reduce the amount of rq-lock\ncontention during a pull operation\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "4d9842776a23e52ec4c60e0a79f5e1bbe91e463e",
      "tree": "fe628d0453c757297a84d43134e6f89153662c41",
      "parents": [
        "6092848a2a23b660150a38bc06f59d75838d70c8"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "committer": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon Dec 29 09:39:49 2008 -0500"
      },
      "message": "sched: cleanup inc/dec_rt_tasks\n\nMove some common definitions up to the function prologe to simplify the\nbody logic.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\n"
    },
    {
      "commit": "4e202284e6ac1695df3eb4a0e549ea78addfb663",
      "tree": "b455ebb51d9f94717f6fde06db6331cfe73e4714",
      "parents": [
        "826e08b0157c0ce8a80dfe3c0a6c5a1540dd0b1d",
        "80f40ee4a07530cc3acbc239a9299ec47025825b",
        "4a6908a3a050aacc9c3a2f36b276b46c0629ad91"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 13:42:23 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 25 13:42:23 2008 +0100"
      },
      "message": "Merge branch \u0027sched/urgent\u0027; commit \u0027v2.6.28\u0027 into sched/core\n"
    },
    {
      "commit": "80f40ee4a07530cc3acbc239a9299ec47025825b",
      "tree": "3feb69ea882c314b518f53fd6eae9db634918003",
      "parents": [
        "1bda71282ded6a2e09a2db7c8884542fb46bfd4f"
      ],
      "author": {
        "name": "Bharata B Rao",
        "email": "bharata@linux.vnet.ibm.com",
        "time": "Mon Dec 15 11:56:48 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 16 21:39:14 2008 +0100"
      },
      "message": "sched: use RCU variant of list traversal in for_each_leaf_rt_rq()\n\nImpact: fix potential of rare crash\n\nfor_each_leaf_rt_rq() walks an RCU protected list (rq-\u003eleaf_rt_rq_list),\nbut doesn\u0027t use list_for_each_entry_rcu(). Fix this.\n\nSigned-off-by: Bharata B Rao \u003cbharata@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45ab6b0c76d0e4cce5bd608ccf97b0f6b20f18df",
      "tree": "4d51c73533c386aee16fde1e74b5e3bc22eedc53",
      "parents": [
        "81444a799550214f549caf579cf65a0ca55e70b7",
        "d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 12 13:48:57 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 12 13:48:57 2008 +0100"
      },
      "message": "Merge branch \u0027sched/core\u0027 into cpus4096\n\nConflicts:\n\tinclude/linux/ftrace.h\n\tkernel/sched.c\n"
    },
    {
      "commit": "70574a996fc7a70c5586eb56bd92a544eccf18b6",
      "tree": "6c0fbb9a9e9b65817316d1765217478bb6c88cbf",
      "parents": [
        "f1860c34b3ed829ac774647f266abf1074cd58cd"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Nov 28 22:08:00 2008 +0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 28 20:11:15 2008 +0100"
      },
      "message": "sched: move double_unlock_balance() higher\n\nMove double_lock_balance()/double_unlock_balance() higher to fix the following\nwith gcc-3.4.6:\n\n   CC      kernel/sched.o\n In file included from kernel/sched.c:1605:\n kernel/sched_rt.c: In function `find_lock_lowest_rq\u0027:\n kernel/sched_rt.c:914: sorry, unimplemented: inlining failed in call to \u0027double_unlock_balance\u0027: function body not available\n kernel/sched_rt.c:1077: sorry, unimplemented: called from here\n make[2]: *** [kernel/sched.o] Error 1\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3d8cbdf8650f44d95333ca645d950832a0653f35",
      "tree": "ca87cd72ee7c7365a10224f4240e5eea41fab85f",
      "parents": [
        "bf4d83f66476086c6b50dc52aac00d71ad70494e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 09:58:41 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 07:58:28 2008 +0100"
      },
      "message": "sched: convert local_cpu_mask to cpumask_var_t, fix\n\nImpact: build fix for !CONFIG_SMP\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "96f874e26428ab5d2db681c100210c254775e154",
      "tree": "e18a6f0629ef17f2344f3691c8df4692ccb875fa",
      "parents": [
        "0e3900e6d3b04c44737ebc505604dcd8ed30e354"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:14 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:52:42 2008 +0100"
      },
      "message": "sched: convert remaining old-style cpumask operators\n\nImpact: Trivial API conversion\n\n  NR_CPUS -\u003e nr_cpu_ids\n  cpumask_t -\u003e struct cpumask\n  sizeof(cpumask_t) -\u003e cpumask_size()\n  cpumask_a \u003d cpumask_b -\u003e cpumask_copy(\u0026cpumask_a, \u0026cpumask_b)\n\n  cpu_set() -\u003e cpumask_set_cpu()\n  first_cpu() -\u003e cpumask_first()\n  cpumask_of_cpu() -\u003e cpumask_of()\n  cpus_* -\u003e cpumask_*\n\nThere are some FIXMEs where we all archs to complete infrastructure\n(patches have been sent):\n\n  cpu_coregroup_map -\u003e cpu_coregroup_mask\n  node_to_cpumask* -\u003e cpumask_of_node\n\nThere is also one FIXME where we pass an array of cpumasks to\npartition_sched_domains(): this implies knowing the definition of\n\u0027struct cpumask\u0027 and the size of a cpumask.  This will be fixed in a\nfuture patch.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0e3900e6d3b04c44737ebc505604dcd8ed30e354",
      "tree": "1c791c57282972db3181d4fb1e7c98c5948f96c2",
      "parents": [
        "24600ce89a819a8f2fb4fd69fd777218a82ade20"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:13 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:52:35 2008 +0100"
      },
      "message": "sched: convert local_cpu_mask to cpumask_var_t.\n\nImpact: (future) size reduction for large NR_CPUS.\n\nDynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves\nspace for small nr_cpu_ids but big CONFIG_NR_CPUS.  cpumask_var_t\nis just a struct cpumask for !CONFIG_CPUMASK_OFFSTACK.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "24600ce89a819a8f2fb4fd69fd777218a82ade20",
      "tree": "01a0e82bb6396b6f5de6300bd30d34e4fb0c76e7",
      "parents": [
        "68e74568fbe5854952355e942acca51f138096d9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:13 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:52:28 2008 +0100"
      },
      "message": "sched: convert check_preempt_equal_prio to cpumask_var_t.\n\nImpact: stack reduction for large NR_CPUS\n\nDynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves\nstack space.\n\nWe simply return if the allocation fails: since we don\u0027t use it we\ncould just pass NULL to cpupri_find and have it handle that.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c6c4927b22a3514c6660f0e72c78716226bd3cc8",
      "tree": "ee7fc9031eb14ac1c9d2f0732950b4faae2b6245",
      "parents": [
        "6a7b3dc3440f7b5a9b67594af01ed562cdeb41e4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:05 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:51:18 2008 +0100"
      },
      "message": "sched: convert struct root_domain to cpumask_var_t.\n\nImpact: (future) size reduction for large NR_CPUS.\n\nDynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves\nspace for small nr_cpu_ids but big CONFIG_NR_CPUS.  cpumask_var_t\nis just a struct cpumask for !CONFIG_CPUMASK_OFFSTACK.\n\ndef_root_domain is static, and so its masks are initialized with\nalloc_bootmem_cpumask_var.  After that, alloc_cpumask_var is used.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "758b2cdc6f6a22c702bd8f2344382fb1270b2161",
      "tree": "270aec3d0f6235c1519c16e8dc8148f195e133db",
      "parents": [
        "1e5ce4f4a755ee498bd9217dae26143afa0d8f31"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Nov 25 02:35:04 2008 +1030"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 24 17:50:45 2008 +0100"
      },
      "message": "sched: wrap sched_group and sched_domain cpumask accesses.\n\nImpact: trivial wrap of member accesses\n\nThis eases the transition in the next patch.\n\nWe also get rid of a temporary cpumask in find_idlest_cpu() thanks to\nfor_each_cpu_and, and sched_balance_self() due to getting weight before\nsetting sd to NULL.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cf7f8690e864c6fe11e77202dd847fa60f483418",
      "tree": "9f0e3cca10a550698c3761c3ee5de6496ecf1e78",
      "parents": [
        "e113a745f693af196c8081b328bf42def086989b"
      ],
      "author": {
        "name": "Sripathi Kodi",
        "email": "sripathik@in.ibm.com",
        "time": "Wed Nov 05 18:57:14 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 06 22:12:09 2008 +0100"
      },
      "message": "sched, lockdep: inline double_unlock_balance()\n\nWe have a test case which measures the variation in the amount of time\nneeded to perform a fixed amount of work on the preempt_rt kernel. We\nstarted seeing deterioration in it\u0027s performance recently. The test\nshould never take more than 10 microseconds, but we started 5-10%\nfailure rate.\n\nUsing elimination method, we traced the problem to commit\n1b12bbc747560ea68bcc132c3d05699e52271da0 (lockdep: re-annotate\nscheduler runqueues).\n\nWhen LOCKDEP is disabled, this patch only adds an additional function\ncall to double_unlock_balance(). Hence I inlined double_unlock_balance()\nand the problem went away. Here is a patch to make this change.\n\nSigned-off-by: Sripathi Kodi \u003csripathik@in.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e113a745f693af196c8081b328bf42def086989b",
      "tree": "70d0576dfebdd0207093372b70115776f03bc16e",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Fri Oct 31 08:03:41 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 11:29:00 2008 +0100"
      },
      "message": "sched/rt: small optimization to update_curr_rt()\n\nImpact: micro-optimization to SCHED_FIFO/RR scheduling\n\nA very minor improvement, but might it be better to check sched_rt_runtime(rt_rq)\nbefore taking the rt_runtime_lock?\n\nPeter Zijlstra observes:\n\n\u003e Yes, I think its ok to do so.\n\u003e\n\u003e Like pointed out in the other thread, there are two races:\n\u003e\n\u003e  - sched_rt_runtime() going to RUNTIME_INF, and that will be handled\n\u003e    properly by sched_rt_runtime_exceeded()\n\u003e\n\u003e  - sched_rt_runtime() going to !RUNTIME_INF, and here we can miss an\n\u003e    accounting cycle, but I don\u0027t think that is something to worry too\n\u003e    much about.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n--\n\n kernel/sched_rt.c |    4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n"
    },
    {
      "commit": "8c82a17e9c924c0e9f13e75e4c2f6bca19a4b516",
      "tree": "d535f46a917e14e90deccb29ad00aac016ad18dd",
      "parents": [
        "4ce72a2c063a7fa8e42a9435440ae3364115a58d",
        "57f8f7b60db6f1ed2c6918ab9230c4623a9dbe37"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 24 12:48:46 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 24 12:48:46 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.28-rc1\u0027 into sched/urgent\n"
    },
    {
      "commit": "4ce72a2c063a7fa8e42a9435440ae3364115a58d",
      "tree": "427b25960945524a205c7d8ed20ed5f02325175e",
      "parents": [
        "0c4b83da58ec2e96ce9c44c211d6eac5f9dae478"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Oct 22 15:25:26 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 22 10:01:52 2008 +0200"
      },
      "message": "sched: add CONFIG_SMP consistency\n\na patch from Henrik Austad did this:\n\n\u003e\u003e Do not declare select_task_rq as part of sched_class when CONFIG_SMP is\n\u003e\u003e not set.\n\nPeter observed:\n\n\u003e While a proper cleanup, could you do it by re-arranging the methods so\n\u003e as to not create an additional ifdef?\n\nDo not declare select_task_rq and some other methods as part of sched_class\nwhen CONFIG_SMP is not set.\n\nAlso gather those methods to avoid CONFIG_SMP mess.\n\nIdea-by: Henrik Austad \u003chenrik.austad@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Henrik Austad \u003chenrik@austad.us\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "f6121f4f8708195e88cbdf8dd8d171b226b3f858",
      "tree": "81d44c76e74e8ebdf6fdf7469b4825ee18f8e864",
      "parents": [
        "64b9e0294d24a4204232e13e01630b0690e48d61"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Fri Oct 03 17:40:46 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 04 14:31:54 2008 +0200"
      },
      "message": "sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq\n\nWhile working on the new version of the code for SCHED_SPORADIC I\nnoticed something strange in the present throttling mechanism. More\nspecifically in the throttling timer handler in sched_rt.c\n(do_sched_rt_period_timer()) and in rt_rq_enqueue().\n\nThe problem is that, when unthrottling a runqueue, rt_rq_enqueue() only\nasks for rescheduling if the runqueue has a sched_entity associated to\nit (i.e., rt_rq-\u003ert_se !\u003d NULL).\nNow, if the runqueue is the root rq (which has a rt_se \u003d NULL)\nrescheduling does not take place, and it is delayed to some undefined\ninstant in the future.\n\nThis imply some random bandwidth usage by the RT tasks under throttling.\nFor instance, setting rt_runtime_us/rt_period_us \u003d 950ms/1000ms an RT\ntask will get less than 95%. In our tests we got something varying\nbetween 70% to 95%.\nUsing smaller time values, e.g., 95ms/100ms, things are even worse, and\nI can see values also going down to 20-25%!!\n\nThe tests we performed are simply running \u0027yes\u0027 as a SCHED_FIFO task,\nand checking the CPU usage with top, but we can investigate thoroughly\nif you think it is needed.\n\nThings go much better, for us, with the attached patch... Don\u0027t know if\nit is the best approach, but it solved the issue for us.\n\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Michael Trimarchi \u003ctrimarchimichael@yahoo.it\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78333cdd0e472180743d35988e576d6ecc6f6ddb",
      "tree": "e8fdb24dce820b62d96c368f20523b4eabc676be",
      "parents": [
        "940959e93949e839c14f8ddc3b9b0e34a2ab6e29"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Sep 23 15:33:43 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 23 16:23:16 2008 +0200"
      },
      "message": "sched: add some comments to the bandwidth code\n\nHopefully clarify some of this code a little.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "63e5c39859a41591662466028c4d1281c033c05a",
      "tree": "1fbb0c2b76673e9557688ee607aa61d92855bebe",
      "parents": [
        "695698500912c4479ddf4723e492de3970ff8530",
        "fa748203175de7c08f2df80e5a0eeca40329b5e2",
        "c8bfff6dd4d41834f4952cbc49e28e31906a6188"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 23 16:23:05 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 23 16:23:05 2008 +0200"
      },
      "message": "Merge branches \u0027sched/urgent\u0027 and \u0027sched/rt\u0027 into sched/devel\n"
    },
    {
      "commit": "15afe09bf496ae10c989e1a375a6b5da7bd3e16e",
      "tree": "4565659d1084e357eea42e6321a4d304ac950faa",
      "parents": [
        "09b22a2f678ae733801b888c44756d0abd686b8a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Sep 20 23:38:02 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 22 16:28:32 2008 +0200"
      },
      "message": "sched: wakeup preempt when small overlap\n\nLin Ming reported a 10% OLTP regression against 2.6.27-rc4.\n\nThe difference seems to come from different preemption agressiveness,\nwhich affects the cache footprint of the workload and its effective\ncache trashing.\n\nAggresively preempt a task if its avg overlap is very small, this should\navoid the task going to sleep and find it still running when we schedule\nback to it - saving a wakeup.\n\nReported-by: Lin Ming \u003cming.m.lin@intel.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f06febc96ba8e0af80bcc3eaec0a109e88275fac",
      "tree": "46dba9432ef25d2eae9434ff2df638c7a268c0f1",
      "parents": [
        "6bfb09a1005193be5c81ebac9f3ef85210142650"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Fri Sep 12 09:54:39 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 14 16:25:35 2008 +0200"
      },
      "message": "timers: fix itimer/many thread hang\n\nOverview\n\nThis patch reworks the handling of POSIX CPU timers, including the\nITIMER_PROF, ITIMER_VIRT timers and rlimit handling.  It was put together\nwith the help of Roland McGrath, the owner and original writer of this code.\n\nThe problem we ran into, and the reason for this rework, has to do with using\na profiling timer in a process with a large number of threads.  It appears\nthat the performance of the old implementation of run_posix_cpu_timers() was\nat least O(n*3) (where \"n\" is the number of threads in a process) or worse.\nEverything is fine with an increasing number of threads until the time taken\nfor that routine to run becomes the same as or greater than the tick time, at\nwhich point things degrade rather quickly.\n\nThis patch fixes bug 9906, \"Weird hang with NPTL and SIGPROF.\"\n\nCode Changes\n\nThis rework corrects the implementation of run_posix_cpu_timers() to make it\nrun in constant time for a particular machine.  (Performance may vary between\none machine and another depending upon whether the kernel is built as single-\nor multiprocessor and, in the latter case, depending upon the number of\nrunning processors.)  To do this, at each tick we now update fields in\nsignal_struct as well as task_struct.  The run_posix_cpu_timers() function\nuses those fields to make its decisions.\n\nWe define a new structure, \"task_cputime,\" to contain user, system and\nscheduler times and use these in appropriate places:\n\nstruct task_cputime {\n\tcputime_t utime;\n\tcputime_t stime;\n\tunsigned long long sum_exec_runtime;\n};\n\nThis is included in the structure \"thread_group_cputime,\" which is a new\nsubstructure of signal_struct and which varies for uniprocessor versus\nmultiprocessor kernels.  For uniprocessor kernels, it uses \"task_cputime\" as\na simple substructure, while for multiprocessor kernels it is a pointer:\n\nstruct thread_group_cputime {\n\tstruct task_cputime totals;\n};\n\nstruct thread_group_cputime {\n\tstruct task_cputime *totals;\n};\n\nWe also add a new task_cputime substructure directly to signal_struct, to\ncache the earliest expiration of process-wide timers, and task_cputime also\nreplaces the it_*_expires fields of task_struct (used for earliest expiration\nof thread timers).  The \"thread_group_cputime\" structure contains process-wide\ntimers that are updated via account_user_time() and friends.  In the non-SMP\ncase the structure is a simple aggregator; unfortunately in the SMP case that\nsimplicity was not achievable due to cache-line contention between CPUs (in\none measured case performance was actually _worse_ on a 16-cpu system than\nthe same test on a 4-cpu system, due to this contention).  For SMP, the\nthread_group_cputime counters are maintained as a per-cpu structure allocated\nusing alloc_percpu().  The timer functions update only the timer field in\nthe structure corresponding to the running CPU, obtained using per_cpu_ptr().\n\nWe define a set of inline functions in sched.h that we use to maintain the\nthread_group_cputime structure and hide the differences between UP and SMP\nimplementations from the rest of the kernel.  The thread_group_cputime_init()\nfunction initializes the thread_group_cputime structure for the given task.\nThe thread_group_cputime_alloc() is a no-op for UP; for SMP it calls the\nout-of-line function thread_group_cputime_alloc_smp() to allocate and fill\nin the per-cpu structures and fields.  The thread_group_cputime_free()\nfunction, also a no-op for UP, in SMP frees the per-cpu structures.  The\nthread_group_cputime_clone_thread() function (also a UP no-op) for SMP calls\nthread_group_cputime_alloc() if the per-cpu structures haven\u0027t yet been\nallocated.  The thread_group_cputime() function fills the task_cputime\nstructure it is passed with the contents of the thread_group_cputime fields;\nin UP it\u0027s that simple but in SMP it must also safely check that tsk-\u003esignal\nis non-NULL (if it is it just uses the appropriate fields of task_struct) and,\nif so, sums the per-cpu values for each online CPU.  Finally, the three\nfunctions account_group_user_time(), account_group_system_time() and\naccount_group_exec_runtime() are used by timer functions to update the\nrespective fields of the thread_group_cputime structure.\n\nNon-SMP operation is trivial and will not be mentioned further.\n\nThe per-cpu structure is always allocated when a task creates its first new\nthread, via a call to thread_group_cputime_clone_thread() from copy_signal().\nIt is freed at process exit via a call to thread_group_cputime_free() from\ncleanup_signal().\n\nAll functions that formerly summed utime/stime/sum_sched_runtime values from\nfrom all threads in the thread group now use thread_group_cputime() to\nsnapshot the values in the thread_group_cputime structure or the values in\nthe task structure itself if the per-cpu structure hasn\u0027t been allocated.\n\nFinally, the code in kernel/posix-cpu-timers.c has changed quite a bit.\nThe run_posix_cpu_timers() function has been split into a fast path and a\nslow path; the former safely checks whether there are any expired thread\ntimers and, if not, just returns, while the slow path does the heavy lifting.\nWith the dedicated thread group fields, timers are no longer \"rebalanced\" and\nthe process_timer_rebalance() function and related code has gone away.  All\nsumming loops are gone and all code that used them now uses the\nthread_group_cputime() inline.  When process-wide timers are set, the new\ntask_cputime structure in signal_struct is used to cache the earliest\nexpiration; this is checked in the fast path.\n\nPerformance\n\nThe fix appears not to add significant overhead to existing operations.  It\ngenerally performs the same as the current code except in two cases, one in\nwhich it performs slightly worse (Case 5 below) and one in which it performs\nvery significantly better (Case 2 below).  Overall it\u0027s a wash except in those\ntwo cases.\n\nI\u0027ve since done somewhat more involved testing on a dual-core Opteron system.\n\nCase 1: With no itimer running, for a test with 100,000 threads, the fixed\n\tkernel took 1428.5 seconds, 513 seconds more than the unfixed system,\n\tall of which was spent in the system.  There were twice as many\n\tvoluntary context switches with the fix as without it.\n\nCase 2: With an itimer running at .01 second ticks and 4000 threads (the most\n\tan unmodified kernel can handle), the fixed kernel ran the test in\n\teight percent of the time (5.8 seconds as opposed to 70 seconds) and\n\thad better tick accuracy (.012 seconds per tick as opposed to .023\n\tseconds per tick).\n\nCase 3: A 4000-thread test with an initial timer tick of .01 second and an\n\tinterval of 10,000 seconds (i.e. a timer that ticks only once) had\n\tvery nearly the same performance in both cases:  6.3 seconds elapsed\n\tfor the fixed kernel versus 5.5 seconds for the unfixed kernel.\n\nWith fewer threads (eight in these tests), the Case 1 test ran in essentially\nthe same time on both the modified and unmodified kernels (5.2 seconds versus\n5.8 seconds).  The Case 2 test ran in about the same time as well, 5.9 seconds\nversus 5.4 seconds but again with much better tick accuracy, .013 seconds per\ntick versus .025 seconds per tick for the unmodified kernel.\n\nSince the fix affected the rlimit code, I also tested soft and hard CPU limits.\n\nCase 4: With a hard CPU limit of 20 seconds and eight threads (and an itimer\n\trunning), the modified kernel was very slightly favored in that while\n\tit killed the process in 19.997 seconds of CPU time (5.002 seconds of\n\twall time), only .003 seconds of that was system time, the rest was\n\tuser time.  The unmodified kernel killed the process in 20.001 seconds\n\tof CPU (5.014 seconds of wall time) of which .016 seconds was system\n\ttime.  Really, though, the results were too close to call.  The results\n\twere essentially the same with no itimer running.\n\nCase 5: With a soft limit of 20 seconds and a hard limit of 2000 seconds\n\t(where the hard limit would never be reached) and an itimer running,\n\tthe modified kernel exhibited worse tick accuracy than the unmodified\n\tkernel: .050 seconds/tick versus .028 seconds/tick.  Otherwise,\n\tperformance was almost indistinguishable.  With no itimer running this\n\ttest exhibited virtually identical behavior and times in both cases.\n\nIn times past I did some limited performance testing.  those results are below.\n\nOn a four-cpu Opteron system without this fix, a sixteen-thread test executed\nin 3569.991 seconds, of which user was 3568.435s and system was 1.556s.  On\nthe same system with the fix, user and elapsed time were about the same, but\nsystem time dropped to 0.007 seconds.  Performance with eight, four and one\nthread were comparable.  Interestingly, the timer ticks with the fix seemed\nmore accurate:  The sixteen-thread test with the fix received 149543 ticks\nfor 0.024 seconds per tick, while the same test without the fix received 58720\nfor 0.061 seconds per tick.  Both cases were configured for an interval of\n0.01 seconds.  Again, the other tests were comparable.  Each thread in this\ntest computed the primes up to 25,000,000.\n\nI also did a test with a large number of threads, 100,000 threads, which is\nimpossible without the fix.  In this case each thread computed the primes only\nup to 10,000 (to make the runtime manageable).  System time dominated, at\n1546.968 seconds out of a total 2176.906 seconds (giving a user time of\n629.938s).  It received 147651 ticks for 0.015 seconds per tick, still quite\naccurate.  There is obviously no comparable test without the fix.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "baf25731e54d06eb13dc4eda78c6dc7da4ce84e8",
      "tree": "af5cbd2b004a2258ebfd332d4871249d1c32f41f",
      "parents": [
        "291c54ff764d12ecc9a916cb478a0bbb45c5990e"
      ],
      "author": {
        "name": "Zhang, Yanmin",
        "email": "yanmin_zhang@linux.intel.com",
        "time": "Tue Sep 09 11:26:33 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 11 09:34:28 2008 +0200"
      },
      "message": "sched: fix 2.6.27-rc5 couldn\u0027t boot on tulsa machine randomly\n\nOn my tulsa x86-64 machine, kernel 2.6.25-rc5 couldn\u0027t boot randomly.\n\nBasically, function __enable_runtime forgets to reset rt_rq-\u003ert_throttled\nto 0. When every cpu is up, per-cpu migration_thread is created and it runs\nvery fast, sometimes to mark the corresponding rt_rq-\u003ert_throttled to 1 very\nquickly. After all cpus are up, with below calling chain:\n\n   sched_init_smp \u003d\u003e arch_init_sched_domains \u003d\u003e build_sched_domains \u003d\u003e ...\n\u003d\u003e cpu_attach_domain \u003d\u003e rq_attach_root \u003d\u003e set_rq_online \u003d\u003e ...\n\u003d\u003e _enable_runtime\n\n_enable_runtime is called against every rt_rq again, so rt_rq-\u003ert_time is\nreset to 0, but rt_rq-\u003ert_throttled might be still 1. Later on function\ndo_sched_rt_period_timer couldn\u0027t reset it, and all RT tasks couldn\u0027t be\nscheduled to run on that cpu. here is RT task migration_thread which is\nwoken up when a task is migrated to another cpu.\n\nBelow patch fixes it against 2.6.27-rc5.\n\nSigned-off-by: Zhang Yanmin \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cc2991cf15ae92fa30b3ea9f56a8a5a337bd33c7",
      "tree": "a286839539678bb2b36e7e059b50a2e575e93782",
      "parents": [
        "f3ade837808121ff8bab9c56725f4fe40ec85a56"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Aug 19 12:33:03 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 28 13:42:38 2008 +0200"
      },
      "message": "sched: rt-bandwidth accounting fix\n\nIt fixes an accounting bug where we would continue accumulating runtime\neven though the bandwidth control is disabled. This would lead to very long\nthrottle periods once bandwidth control gets turned on again.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3ade837808121ff8bab9c56725f4fe40ec85a56",
      "tree": "eb9a8d87bff0a7d11eade583a7582e3c765e3b80",
      "parents": [
        "354879bb977e06695993435745f06a0f6d39ce2b"
      ],
      "author": {
        "name": "John Blackwood",
        "email": "john.blackwood@ccur.com",
        "time": "Tue Aug 26 15:09:43 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 28 11:13:24 2008 +0200"
      },
      "message": "sched: fix sched_rt_rq_enqueue() resched idle\n\nWhen sysctl_sched_rt_runtime is set to something other than -1 and the\nCONFIG_RT_GROUP_SCHED kernel parameter is NOT enabled, we get into a state\nwhere we see one or more CPUs idling forvever even though there are\nreal-time\ntasks in their rt runqueue that are able to run (no longer throttled).\n\nThe sequence is:\n\n- A real-time task is running when the timer sets the rt runqueue\n    to throttled, and the rt task is resched_task()ed and switched\n    out, and idle is switched in since there are no non-rt tasks to\n    run on that cpu.\n\n- Eventually the do_sched_rt_period_timer() runs and un-throttles\n    the rt runqueue, but we just exit the timer interrupt and go back\n    to executing the idle task in the idle loop forever.\n\nIf we change the sched_rt_rq_enqueue() routine to use some of the code\nfrom the CONFIG_RT_GROUP_SCHED enabled version of this same routine and\nresched_task() the currently executing task (idle in our case) if it is\na lower priority task than the higher rt task in the now un-throttled\nrunqueue, the problem is no longer observed.\n\nSigned-off-by: John Blackwood \u003cjohn.blackwood@ccur.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0b148fa04852859972abbf848177b92daeef138a",
      "tree": "12d4b0daa8292fe406871b5aa034d7c9b2fae13d",
      "parents": [
        "6f0d5c390e4206dcb3804a5072a048fdb7d2b428"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Aug 19 12:33:04 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 19 13:10:10 2008 +0200"
      },
      "message": "sched: rt-bandwidth group disable fixes\n\nMore extensive disable of bandwidth control. It allows sysctl_sched_rt_runtime\nto disable full group bandwidth control.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6f0d5c390e4206dcb3804a5072a048fdb7d2b428",
      "tree": "60e25ec2076091c1deb9d414e84e276320be44bf",
      "parents": [
        "af4491e51632d01fbc2b856ffa9ebcd4b38db68c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Aug 19 12:33:03 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 19 13:10:09 2008 +0200"
      },
      "message": "sched: rt-bandwidth accounting fix\n\nIt fixes an accounting bug where we would continue accumulating runtime\neven though the bandwidth control is disabled. This would lead to very long\nthrottle periods once bandwidth control gets turned on again.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f1679d08480008e06fd619c71635ed33274e2595",
      "tree": "bf38250a5b7c969a6b91ef1043f0cfdd02f966d4",
      "parents": [
        "09f2724a786f76475ef2985cf84f5359c553aade"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Aug 14 15:49:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 14 15:50:58 2008 +0200"
      },
      "message": "sched: fix rt-bandwidth hotplug race\n\nWhen we hot-unplug a cpu and rebuild the sched-domain, all cpus will be\ndetatched. Alex observed the case where a runqueue was stealing bandwidth\nfrom an already disabled runqueue to satisfy its own needs.\n\nStop this by skipping over already disabled runqueues.\n\nReported-by: Alex Nixon \u003calex.nixon@citrix.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Alex Nixon \u003calex.nixon@citrix.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1b12bbc747560ea68bcc132c3d05699e52271da0",
      "tree": "0e0fe5b7fe07d411251eebdd053e9e7793820248",
      "parents": [
        "64aa348edc617dea17bbd01ddee4e47886d5ec8c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:22 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:22 2008 +0200"
      },
      "message": "lockdep: re-annotate scheduler runqueues\n\nInstead of using a per-rq lock class, use the regular nesting operations.\n\nHowever, take extra care with double_lock_balance() as it can release the\nalready held rq-\u003elock (and therefore change its nesting class).\n\nSo what can happen is:\n\n spin_lock(rq-\u003elock);\t// this rq subclass 0\n\n double_lock_balance(rq, other_rq);\n   // release rq\n   // acquire other_rq-\u003elock subclass 0\n   // acquire rq-\u003elock subclass 1\n\n spin_unlock(other_rq-\u003elock);\n\nleaving you with rq-\u003elock in subclass 1\n\nSo a subsequent double_lock_balance() call can try to nest a subclass 1\nlock while already holding a subclass 1 lock.\n\nFix this by introducing double_unlock_balance() which releases the other\nrq\u0027s lock, but also re-sets the subclass for this rq\u0027s lock to 0.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8ffa5b65968262ba6bb046329972791c0d960745",
      "tree": "3ed3e019e812ab39f7836f0082825b9d11630856",
      "parents": [
        "6209ed9d8443b63c36d340908530fa470c4d4fff",
        "58838cf3ca3337d76141c33d6c68376490263468"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 12:53:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 12:53:51 2008 -0700"
      },
      "message": "Merge branch \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: clean up compiler warning\n  sched: fix hrtick \u0026 generic-ipi dependency\n"
    },
    {
      "commit": "58838cf3ca3337d76141c33d6c68376490263468",
      "tree": "0254542f073d3b2a4e4f1a05269d2d3f521bbcc3",
      "parents": [
        "422037bafde8083acc3c539ceba3dfc60a04110c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 24 12:43:13 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 24 13:24:57 2008 +0200"
      },
      "message": "sched: clean up compiler warning\n\nReported-by: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7f9dce38378f0a4a298e885553d6bb7121376376",
      "tree": "5bfd688c9f356f7216bbc3cef3b4c10153de334b",
      "parents": [
        "26dcce0fabbef75ae426461edf21b5030bad60f3",
        "ba42059fbd0aa1ac91b582412b5fedb1258f241f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 19:36:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 23 19:36:53 2008 -0700"
      },
      "message": "Merge branch \u0027sched/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  sched: hrtick_enabled() should use cpu_active()\n  sched, x86: clean up hrtick implementation\n  sched: fix build error, provide partition_sched_domains() unconditionally\n  sched: fix warning in inc_rt_tasks() to not declare variable \u0027rq\u0027 if it\u0027s not needed\n  cpu hotplug: Make cpu_active_map synchronization dependency clear\n  cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)\n  sched: rework of \"prioritize non-migratable tasks over migratable ones\"\n  sched: reduce stack size in isolated_cpu_setup()\n  Revert parts of \"ftrace: do not trace scheduler functions\"\n\nFixed up conflicts in include/asm-x86/thread_info.h (due to the\nTIF_SINGLESTEP unification vs TIF_HRTICK_RESCHED removal) and\nkernel/sched_fair.c (due to cpu_active_map vs for_each_cpu_mask_nr()\nintroduction).\n"
    },
    {
      "commit": "d986434a7d32079cc6cbedcdb04d834aa9b323ff",
      "tree": "cf1feb5139d76cef0446945b5cad741c47ae9d8d",
      "parents": [
        "1b427c153a08fdbc092c2bdbf845b92fda58d857",
        "31656519e132f6612584815f128c83976a9aaaef"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 20 11:01:29 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 20 11:01:29 2008 +0200"
      },
      "message": "Merge branch \u0027sched/urgent\u0027 into sched/devel\n"
    },
    {
      "commit": "577b4a58d2e74a4d48050eeea3e3f952ce04eb86",
      "tree": "d980050094b9903115811159b190c464a399978b",
      "parents": [
        "13b40c1e40f3261e83ee514a08b77dbecb93021b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jul 11 13:34:54 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 13:56:03 2008 +0200"
      },
      "message": "sched: fix warning in inc_rt_tasks() to not declare variable \u0027rq\u0027 if it\u0027s not needed\n\nFix inc_rt_tasks() to not declare variable \u0027rq\u0027 if it\u0027s not needed.  It is\ndeclared if CONFIG_SMP or CONFIG_RT_GROUP_SCHED, but only used if CONFIG_SMP.\n\nThis is a consequence of patch 1f11eb6a8bc92536d9e93ead48fa3ffbd1478571 plus\npatch 1100ac91b6af02d8639d518fad5b434b1bf44ed6.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e761b7725234276a802322549cee5255305a0930",
      "tree": "27b351a7d5fc9a93590e0effce1c5adb1bfcebc0",
      "parents": [
        "7ebefa8ceefed44cc321be70afc54a585a68ac0b"
      ],
      "author": {
        "name": "Max Krasnyansky",
        "email": "maxk@qualcomm.com",
        "time": "Tue Jul 15 04:43:49 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 13:22:25 2008 +0200"
      },
      "message": "cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)\n\nThis is based on Linus\u0027 idea of creating cpu_active_map that prevents\nscheduler load balancer from migrating tasks to the cpu that is going\ndown.\n\nIt allows us to simplify domain management code and avoid unecessary\ndomain rebuilds during cpu hotplug event handling.\n\nPlease ignore the cpusets part for now. It needs some more work in order\nto avoid crazy lock nesting. Although I did simplfy and unify domain\nreinitialization logic. We now simply call partition_sched_domains() in\nall the cases. This means that we\u0027re using exact same code paths as in\ncpusets case and hence the test below cover cpusets too.\nCpuset changes to make rebuild_sched_domains() callable from various\ncontexts are in the separate patch (right next after this one).\n\nThis not only boots but also easily handles\n\twhile true; do make clean; make -j 8; done\nand\n\twhile true; do on-off-cpu 1; done\nat the same time.\n(on-off-cpu 1 simple does echo 0/1 \u003e /sys/.../cpu1/online thing).\n\nSuprisingly the box (dual-core Core2) is quite usable. In fact I\u0027m typing\nthis on right now in gnome-terminal and things are moving just fine.\n\nAlso this is running with most of the debug features enabled (lockdep,\nmutex, etc) no BUG_ONs or lockdep complaints so far.\n\nI believe I addressed all of the Dmitry\u0027s comments for original Linus\u0027\nversion. I changed both fair and rt balancer to mask out non-active cpus.\nAnd replaced cpu_is_offline() with !cpu_active() in the main scheduler\ncode where it made sense (to me).\n\nSigned-off-by: Max Krasnyanskiy \u003cmaxk@qualcomm.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: dmitry.adamushko@gmail.com\nCc: pj@sgi.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7ebefa8ceefed44cc321be70afc54a585a68ac0b",
      "tree": "cab0118d96d704fcca2e52f192f4bb2a7f6a909e",
      "parents": [
        "13b40c1e40f3261e83ee514a08b77dbecb93021b"
      ],
      "author": {
        "name": "Dmitry Adamushko",
        "email": "dmitry.adamushko@gmail.com",
        "time": "Tue Jul 01 23:32:15 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 18 12:55:14 2008 +0200"
      },
      "message": "sched: rework of \"prioritize non-migratable tasks over migratable ones\"\n\n(1) handle in a generic way all cases when a newly woken-up task is\nnot migratable (not just a corner case when \"rt_se-\u003enr_cpus_allowed \u003d\u003d\n1\")\n\n(2) if current is to be preempted, then make sure \"p\" will be picked\nup by pick_next_task_rt().\ni.e. move task\u0027s group at the head of its list as well.\n\ncurrently, it\u0027s not a case for the group-scheduling case as described\nhere: http://www.ussg.iu.edu/hypermail/linux/kernel/0807.0/0134.html\n\nSigned-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "82638844d9a8581bbf33201cc209a14876eca167",
      "tree": "961d7f9360194421a71aa644a9d0c176a960ce49",
      "parents": [
        "9982fbface82893e77d211fbabfbd229da6bdde6",
        "63cf13b77ab785e87c867defa8545e6d4a989774"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 16 00:29:07 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into cpus4096\n\nConflicts:\n\n\tarch/x86/xen/smp.c\n\tkernel/sched_rt.c\n\tnet/iucv/iucv.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "68083e05d72d94f347293d8cc0067050ba904bfa",
      "tree": "842e71365bd90866be7add181661a4039d891564",
      "parents": [
        "7baac8b91f9871ba8cb09af84de4ae1d86d07812",
        "b7279469d66b55119784b8b9529c99c1955fe747"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 06 14:23:39 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jul 06 14:23:39 2008 +0200"
      },
      "message": "Merge commit \u0027v2.6.26-rc9\u0027 into cpus4096\n"
    },
    {
      "commit": "55e12e5e7b1d7e7c05a4be10cb5fd092c039aa78",
      "tree": "3a12d84266abfc21b1c41410a9c3f2f6d9e5d22d",
      "parents": [
        "f5bfb7d9ff73d72ee4f2f4830a6f0c9088d00f92"
      ],
      "author": {
        "name": "Dhaval Giani",
        "email": "dhaval@linux.vnet.ibm.com",
        "time": "Tue Jun 24 23:39:43 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:32:05 2008 +0200"
      },
      "message": "sched: make sched_{rt,fair}.c ifdefs more readable\n\nSigned-off-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c09595f63bb1909c5dc4dca288f4fe818561b5f3",
      "tree": "42631e6986f3ea4543b125ca62a99df8548e0eb9",
      "parents": [
        "ced8aa16e1db55c33c507174c1b1f9e107445865"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 27 13:41:14 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:31:29 2008 +0200"
      },
      "message": "sched: revert revert of: fair-group: SMP-nice for group scheduling\n\nTry again..\n\nInitial commit: 18d95a2832c1392a2d63227a7a6d433cb9f2037e\nRevert: 6363ca57c76b7b83639ca8c83fc285fa26a7880e\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bf647b62fdb948e757a7b4d18d4f16e3c763b1d1",
      "tree": "28b52250ff8a8e02b3cae483fb59368f2aabdc54",
      "parents": [
        "f57aec5a871907427060196f6bac3d0011b38450"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jun 27 13:41:10 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 27 14:31:26 2008 +0200"
      },
      "message": "sched: clean up some unused variables\n\nIn file included from /mnt/build/linux-2.6/kernel/sched.c:1496:\n/mnt/build/linux-2.6/kernel/sched_rt.c: In function \u0027__enable_runtime\u0027:\n/mnt/build/linux-2.6/kernel/sched_rt.c:339: warning: unused variable \u0027rd\u0027\n/mnt/build/linux-2.6/kernel/sched_rt.c: In function \u0027requeue_rt_entity\u0027:\n/mnt/build/linux-2.6/kernel/sched_rt.c:692: warning: unused variable \u0027queue\u0027\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8a8cde163ea724baf74e7752a31a69d3121a240e",
      "tree": "5cdeed8a13ac27bf0bf03f522ab184c543a5030f",
      "parents": [
        "d4abc238c9f4df8b3216f3e883f5d0a07b7ac75a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 14:22:28 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 11:00:19 2008 +0200"
      },
      "message": "sched: rt: dont stop the period timer when there are tasks wanting to run\n\nSo if the group ever gets throttled, it will never wake up again.\n\nReported-by: \"Daniel K.\" \u003cdk@uw.no\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Daniel K. \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6c3df25511c2c51f2dd36cc52a8d22363d731793",
      "tree": "80ef006084108ebca3d49f6635a62d8ee261abe8",
      "parents": [
        "10b612f440a22a294e87ec7e8f03f9eea3338628"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 14:22:28 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 10:26:02 2008 +0200"
      },
      "message": "sched: rt: dont stop the period timer when there are tasks wanting to run\n\nSo if the group ever gets throttled, it will never wake up again.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Daniel K.\" \u003cdk@uw.no\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReported-by: \"Daniel K.\" \u003cdk@uw.no\u003e\n"
    },
    {
      "commit": "eff6549b957d15d1ad168d90b8c1eb643b9c163f",
      "tree": "016e025635dabb070edf1f48fe1cee5308e18fd4",
      "parents": [
        "b79f3833d81d54fc71d98c8064dc45f33a755a8a"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 14:22:26 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 10:26:00 2008 +0200"
      },
      "message": "sched: rt: move some code around\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Daniel K.\" \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b79f3833d81d54fc71d98c8064dc45f33a755a8a",
      "tree": "863df388344bbd6e370a6f4f1c721418b919d368",
      "parents": [
        "ada18de2eb76961a4d4847f63291744c9e7beec4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 14:22:25 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 10:26:00 2008 +0200"
      },
      "message": "sched: rt: fix SMP bandwidth balancing for throttled groups\n\nNow we exceed the runtime and get throttled - the period rollover tick\nwill subtract the cpu quota from the runtime and check if we\u0027re below\nquota. However with this cpu having a very small portion of the runtime\nit will not refresh as fast as it should.\n\nTherefore, also rebalance the runtime when we\u0027re throttled.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Daniel K.\" \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ada18de2eb76961a4d4847f63291744c9e7beec4",
      "tree": "2626852c3d735aea1a49570afea3fa936a8186dc",
      "parents": [
        "1cdad71537b42d0f0bf247772942ce678e4e8898"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 14:22:24 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 10:25:59 2008 +0200"
      },
      "message": "sched: debug: add some rt debug output\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Daniel K.\" \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1cdad71537b42d0f0bf247772942ce678e4e8898",
      "tree": "58caef683e4739907e0ae147bead71a5b19e2207",
      "parents": [
        "20b6331bfed1f07ba1e5006889a5d64adc53615e",
        "15a8641eadb492ef7c5489faa25256967bdfd303"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 19 09:09:15 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 19 09:09:15 2008 +0200"
      },
      "message": "Merge branch \u0027sched\u0027 into sched-devel\n\nConflicts:\n\n\tkernel/sched_rt.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "15a8641eadb492ef7c5489faa25256967bdfd303",
      "tree": "ec838b2002c9565b4c1b6631f9fe2fd93d7fe6c9",
      "parents": [
        "ad2a3f13b7258a5daaaeb8cff9f835aac468b71d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 09:06:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 19 09:06:59 2008 +0200"
      },
      "message": "sched: rt-group: fix RR buglet\n\nIn tick_task_rt() we first call update_curr_rt() which can dequeue a runqueue\ndue to it running out of runtime, and then we try to requeue it, of it also\nhaving exhausted its RR quota. Obviously requeueing something that is no longer\non the runqueue will not have the expected result.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Daniel K. \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ad2a3f13b7258a5daaaeb8cff9f835aac468b71d",
      "tree": "ac9ea87be655aba0a372b6b4a25215547da0e291",
      "parents": [
        "7ea56616ba6b3d67a4892728182e38ae162ea3e7"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 19 09:06:57 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 19 09:06:57 2008 +0200"
      },
      "message": "sched: rt-group: heirarchy aware throttle\n\nThe bandwidth throttle code dequeues a group when it runs out of quota, and\nre-queues it once the period rolls over and the quota gets refreshed.\n\nSadly it failed to take the hierarchy into consideration. Share more of the\nenqueue/dequeue code with regular task opterations.\n\nAlso, some operations like sched_setscheduler() can dequeue/enqueue tasks that\nare in throttled runqueues, we should not inadvertly re-enqueue empty runqueues\nso check for that.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Daniel K. \u003cdk@uw.no\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20b6331bfed1f07ba1e5006889a5d64adc53615e",
      "tree": "9a98f9ccd201c875a94f8a2002f1eddcfc114d65",
      "parents": [
        "f7d62364b2cef85cbcd4feffdd3632ef7c3b61c2"
      ],
      "author": {
        "name": "Dmitry Adamushko",
        "email": "dmitry.adamushko@gmail.com",
        "time": "Wed Jun 11 00:58:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 18 12:41:18 2008 +0200"
      },
      "message": "sched: rework of \"prioritize non-migratable tasks over migratable ones\"\n\nregarding this commit: 45c01e824991b2dd0a332e19efc4901acb31209f\n\nI think we can do it simpler. Please take a look at the patch below.\n\nInstead of having 2 separate arrays (which is + ~800 bytes on x86_32 and\ntwice so on x86_64), let\u0027s add \"exclusive\" (the ones that are bound to\nthis CPU) tasks to the head of the queue and \"shared\" ones -- to the\nend.\n\nIn case of a few newly woken up \"exclusive\" tasks, they are \u0027stacked\u0027\n(not queued as now), meaning that a task {i+1} is being placed in front\nof the previously woken up task {i}. But I don\u0027t think that this\nbehavior may cause any realistic problems.\n\nThere are a couple of changes on top of this one.\n\n(1) in check_preempt_curr_rt()\n\nI don\u0027t think there is a need for the \"pick_next_rt_entity(rq, \u0026rq-\u003ert)\n!\u003d \u0026rq-\u003ecurr-\u003ert\" check.\n\nenqueue_task_rt(p) and check_preempt_curr_rt() are always called one\nafter another with rq-\u003elock being held so the following check\n\"p-\u003ert.nr_cpus_allowed \u003d\u003d 1 \u0026\u0026 rq-\u003ecurr-\u003ert.nr_cpus_allowed !\u003d 1\" should\nbe enough (well, just its left part) to guarantee that \u0027p\u0027 has been\nqueued in front of the \u0027curr\u0027.\n\n(2) in set_cpus_allowed_rt()\n\nI don\u0027t thinks there is a need for requeue_task_rt() here.\n\nPerhaps, the only case when \u0027requeue\u0027 (+ reschedule) might be useful is\nas follows:\n\ni) weight \u003d\u003d 1 \u0026\u0026 cpu_isset(task_cpu(p), *new_mask)\n\ni.e. a task is being bound to this CPU);\n\nii) \u0027p\u0027 !\u003d rq-\u003ecurr\n\nbut here, \u0027p\u0027 has already been on this CPU for a while and was not\nmigrated. i.e. it\u0027s possible that \u0027rq-\u003ecurr\u0027 would not have high chances\nto be migrated right at this particular moment (although, has chance in\na bit longer term), should we allow it to be preempted.\n\nAnyway, I think we should not perhaps make it more complex trying to\naddress some rare corner cases. For instance, that\u0027s why a single queue\napproach would be preferable. Unless I\u0027m missing something obvious, this\napproach gives us similar functionality at lower cost.\n\nVerified only compilation-wise.\n\n(Almost)-Signed-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7def2be1dc679984f4c4fb3ef19a8a081b2454ec",
      "tree": "5be15957919d095cdbbc9ed3217d9dec939b234b",
      "parents": [
        "e958b3600484533ff801920290468adc8135f89d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jun 05 14:49:58 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 12:17:28 2008 +0200"
      },
      "message": "sched: fix hotplug cpus on ia64\n\nCliff Wickman wrote:\n\n\u003e I built an ia64 kernel from Andrew\u0027s tree (2.6.26-rc2-mm1)\n\u003e and get a very predictable hotplug cpu problem.\n\u003e billberry1:/tmp/cpw # ./dis\n\u003e disabled cpu 17\n\u003e enabled cpu 17\n\u003e billberry1:/tmp/cpw # ./dis\n\u003e disabled cpu 17\n\u003e enabled cpu 17\n\u003e billberry1:/tmp/cpw # ./dis\n\u003e\n\u003e The script that disables the cpu always hangs (unkillable)\n\u003e on the 3rd attempt.\n\u003e\n\u003e And a bit further:\n\u003e The kstopmachine thread always sits on the run queue (real time) for about\n\u003e 30 minutes before running.\n\nthis fix solves some (but not all) issues between CPU hotplug and\nRT bandwidth throttling.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1100ac91b6af02d8639d518fad5b434b1bf44ed6",
      "tree": "4eda0e913e8bc5437fad37b723f24eec2b4e8680",
      "parents": [
        "e539d8fcd11af811db70707d47ea436d5621d0da"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 05 12:25:37 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 06 15:19:46 2008 +0200"
      },
      "message": "sched: fix cpuprio build bug\n\nthis patch was not built on !SMP:\n\n kernel/sched_rt.c: In function \u0027inc_rt_tasks\u0027:\n kernel/sched_rt.c:404: error: \u0027struct rq\u0027 has no member named \u0027online\u0027\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f11eb6a8bc92536d9e93ead48fa3ffbd1478571",
      "tree": "40a123bd566bab8ddc726303e2725bae55b1a499",
      "parents": [
        "099f98c8a1f13501a98afbfff4756395a610581c"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Jun 04 15:04:05 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 06 15:19:42 2008 +0200"
      },
      "message": "sched: fix cpupri hotplug support\n\nThe RT folks over at RedHat found an issue w.r.t. hotplug support which\nwas traced to problems with the cpupri infrastructure in the scheduler:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d449676\n\nThis bug affects 23-rt12+, 24-rtX, 25-rtX, and sched-devel.  This patch\napplies to 25.4-rt4, though it should trivially apply to most cpupri enabled\nkernels mentioned above.\n\nIt turned out that the issue was that offline cpus could get inadvertently\nregistered with cpupri so that they were erroneously selected during\nmigration decisions.  The end result would be an OOPS as the offline cpu\nhad tasks routed to it.\n\nThis patch generalizes the old join/leave domain interface into an\nonline/offline interface, and adjusts the root-domain/hotplug code to\nutilize it.\n\nI was able to easily reproduce the issue prior to this patch, and am no\nlonger able to reproduce it after this patch.  I can offline cpus\nindefinately and everything seems to be in working order.\n\nThanks to Arnaldo (acme), Thomas, and Peter for doing the legwork to point\nme in the right direction.  Also thank you to Peter for reviewing the\nearly iterations of this patch.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ],
  "next": "6e0534f278199f1e3dd1049b9bc19a7a5b87ada1"
}
