)]}'
{
  "log": [
    {
      "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": "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": "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"
    },
    {
      "commit": "6e0534f278199f1e3dd1049b9bc19a7a5b87ada1",
      "tree": "25f4da14ec32927742db9f599ac779b4e83d1763",
      "parents": [
        "f333fdc9098b71e2687e4e9b6349fcb352960d66"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon May 12 21:21:01 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 06 15:19:28 2008 +0200"
      },
      "message": "sched: use a 2-d bitmap for searching lowest-pri CPU\n\nThe current code use a linear algorithm which causes scaling issues\non larger SMP machines.  This patch replaces that algorithm with a\n2-dimensional bitmap to reduce latencies in the wake-up path.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "45c01e824991b2dd0a332e19efc4901acb31209f",
      "tree": "20d889b97636410c6ae425ff5dec90479d8cbb1a",
      "parents": [
        "39b945a37bac2b692773a470890c8ba301485b15"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Mon May 12 21:20:41 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 06 15:19:25 2008 +0200"
      },
      "message": "sched: prioritize non-migratable tasks over migratable ones\n\nDmitry Adamushko pointed out a known flaw in the rt-balancing algorithm\nthat could allow suboptimal balancing if a non-migratable task gets\nqueued behind a running migratable one.  It is discussed in this thread:\n\nhttp://lkml.org/lkml/2008/4/22/296\n\nThis issue has been further exacerbated by a recent checkin to\nsched-devel (git-id 5eee63a5ebc19a870ac40055c0be49457f3a89a3).\n\n\u003eFrom a pure priority standpoint, the run-queue is doing the \"right\"\nthing. Using Dmitry\u0027s nomenclature, if T0 is on cpu1 first, and T1\nwakes up at equal or lower priority (affined only to cpu1) later, it\n*should* wait for T0 to finish.  However, in reality that is likely\nsuboptimal from a system perspective if there are other cores that\ncould allow T0 and T1 to run concurrently.  Since T1 can not migrate,\nthe only choice for higher concurrency is to try to move T0.  This is\nnot something we addessed in the recent rt-balancing re-work.\n\nThis patch tries to enhance the balancing algorithm by accomodating this\nscenario.  It accomplishes this by incorporating the migratability of a\ntask into its priority calculation.  Within a numerical tsk-\u003eprio, a\nnon-migratable task is logically higher than a migratable one.  We\nmaintain this by introducing a new per-priority queue (xqueue, or\nexclusive-queue) for holding non-migratable tasks.  The scheduler will\ndraw from the xqueue over the standard shared-queue (squeue) when\navailable.\n\nThere are several details for utilizing this properly.\n\n1) During task-wake-up, we not only need to check if the priority\n   preempts the current task, but we also need to check for this\n   non-migratable condition.  Therefore, if a non-migratable task wakes\n   up and sees an equal priority migratable task already running, it\n   will attempt to preempt it *if* there is a likelyhood that the\n   current task will find an immediate home.\n\n2) Tasks only get this non-migratable \"priority boost\" on wake-up.  Any\n   requeuing will result in the non-migratable task being queued to the\n   end of the shared queue.  This is an attempt to prevent the system\n   from being completely unfair to migratable tasks during things like\n   SCHED_RR timeslicing.\n\nI am sure this patch introduces potentially \"odd\" behavior if you\nconcoct a scenario where a bunch of non-migratable threads could starve\nmigratable ones given the right pattern.  I am not yet convinced that\nthis is a problem since we are talking about tasks of equal RT priority\nanyway, and there never is much in the way of guarantees against\nstarvation under that scenario anyway. (e.g. you could come up with a\nsimilar scenario with a specific timing environment verses an affinity\nenvironment).  I can be convinced otherwise, but for now I think this is\n\"ok\".\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCC: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "6363ca57c76b7b83639ca8c83fc285fa26a7880e",
      "tree": "b8630b4af286409efdd648920a546fae24d4db88",
      "parents": [
        "4285f594f84d1f0641fc962d00e6638dec4a19c4"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 29 11:28:57 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 29 11:28:57 2008 +0200"
      },
      "message": "revert (\"sched: fair-group: SMP-nice for group scheduling\")\n\nYanmin Zhang reported:\n\nComparing with 2.6.25, volanoMark has big regression with kernel 2.6.26-rc1.\nIt\u0027s about 50% on my 8-core stoakley, 16-core tigerton, and Itanium Montecito.\n\nWith bisect, I located the following patch:\n\n| 18d95a2832c1392a2d63227a7a6d433cb9f2037e is first bad commit\n| commit 18d95a2832c1392a2d63227a7a6d433cb9f2037e\n| Author: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n| Date:   Sat Apr 19 19:45:00 2008 +0200\n|\n|     sched: fair-group: SMP-nice for group scheduling\n\nRevert it so that we get v2.6.25 behavior.\n\nBisected-by: Yanmin Zhang \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "363ab6f1424cdea63e5d182312d60e19077b892a",
      "tree": "e200197412691015ca8de083155985e7e460ecfc",
      "parents": [
        "068b12772a64c2440ef2f64ac5d780688c06576f"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Mon May 12 21:21:13 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 18:35:12 2008 +0200"
      },
      "message": "core: use performance variant for_each_cpu_mask_nr\n\nChange references from for_each_cpu_mask to for_each_cpu_mask_nr\nwhere appropriate\n\nReviewed-by: Paul Jackson \u003cpj@sgi.com\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "8ae121ac8666b0421aa20fd80d4597ec66fa54bc",
      "tree": "1db411965b1b12029d501ea10ab90fbc8aa4ec62",
      "parents": [
        "983ed7a66bcec9dc307d89dc7af47cdf209e56af"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Wed Apr 23 07:13:29 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 05 23:56:18 2008 +0200"
      },
      "message": "sched: fix RT task-wakeup logic\n\nDmitry Adamushko pointed out a logic error in task_wake_up_rt() where we\nwill always evaluate to \"true\".  You can find the thread here:\n\nhttp://lkml.org/lkml/2008/4/22/296\n\nIn reality, we only want to try to push tasks away when a wake up request is\nnot going to preempt the current task.  So lets fix it.\n\nNote: We introduce test_tsk_need_resched() instead of open-coding the flag\ncheck so that the merge-conflict with -rt should help remind us that we\nmay need to support NEEDS_RESCHED_DELAYED in the future, too.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCC: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2abdad0a4cd8f9413f778cc998e0ee7d60b28417",
      "tree": "c7bd3839e765c2991d3dfbfb1f5f83d58f1211e3",
      "parents": [
        "e05510d01ad1565e5e086a939261084d67ba2b10"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Apr 25 10:53:13 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 05 23:56:17 2008 +0200"
      },
      "message": "sched: make rt_sched_class, idle_sched_class static\n\nThe C files are included directly in sched.c, so they are\neffectively static.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "58d6c2d72f8628f39e8689fbde8aa177fcf00a37",
      "tree": "0be40bd788856b3cabb99ff258561b15a574f2f3",
      "parents": [
        "d19ca30874f2ad343d054e0b5c0576744afeecd4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Apr 19 19:45:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:45:00 2008 +0200"
      },
      "message": "sched: rt-group: optimize dequeue_rt_stack\n\nNow that the group hierarchy can have an arbitrary depth the O(n^2) nature\nof RT task dequeues will really hurt. Optimize this by providing space to\nstore the tree path, so we can walk it the other way.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "18d95a2832c1392a2d63227a7a6d433cb9f2037e",
      "tree": "fa85b700aa3caac5b1309edd8e31d9b957957a83",
      "parents": [
        "1d3504fcf5606579d60b649d19f44b3871c1ddae"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Apr 19 19:45:00 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:45:00 2008 +0200"
      },
      "message": "sched: fair-group: SMP-nice for group scheduling\n\nImplement SMP nice support for the full group hierarchy.\n\nOn each load-balance action, compile a sched_domain wide view of the full\ntask_group tree. We compute the domain wide view when walking down the\nhierarchy, and readjust the weights when walking back up.\n\nAfter collecting and readjusting the domain wide view, we try to balance the\ntasks within the task_groups. The current approach is a naively balance each\ntask group until we\u0027ve moved the targeted amount of load.\n\nInspired by Srivatsa Vaddsgiri\u0027s previous code and Abhishek Chandra\u0027s H-SMP\npaper.\n\nXXX: there will be some numerical issues due to the limited nature of\n     SCHED_LOAD_SCALE wrt to representing a task_groups influence on the\n     total weight. When the tree is deep enough, or the task weight small\n     enough, we\u0027ll run out of bits.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Abhishek Chandra \u003cchandra@cs.umn.edu\u003e\nCC: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "354d60c2ff72d86627dfe2089d186824abf4bb8e",
      "tree": "10cea61ce7036448ed7246820c5575df2a61bb3b",
      "parents": [
        "ea736ed5d353d7a3aa1cf8ce4cf8d947bc353fb2"
      ],
      "author": {
        "name": "Dhaval Giani",
        "email": "dhaval@linux.vnet.ibm.com",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "message": "sched: mix tasks and groups\n\nThis patch allows tasks and groups to exist in the same cfs_rq. With this\nchange the CFS group scheduling follows a 1/(M+N) model from a 1/(1+N)\nfairness model where M tasks and N groups exist at the cfs_rq level.\n\n[a.p.zijlstra@chello.nl: rt bits and assorted fixes]\nSigned-off-by: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd8ba7cd9be0192348c2836cb6645d9b2cd2bfd2",
      "tree": "3b4138c7b683c2168ac13be41aab74b49a6bcf1c",
      "parents": [
        "e0982e90cd1ecf59818b137386b7f63debded9cc"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Wed Mar 26 14:23:49 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "message": "sched: add new set_cpus_allowed_ptr function\n\nAdd a new function that accepts a pointer to the \"newly allowed cpus\"\ncpumask argument.\n\nint set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask)\n\nThe current set_cpus_allowed() function is modified to use the above\nbut this does not result in an ABI change.  And with some compiler\noptimization help, it may not introduce any additional overhead.\n\nAdditionally, to enforce the read only nature of the new_mask arg, the\n\"const\" property is migrated to sub-functions called by set_cpus_allowed.\nThis silences compiler warnings.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac086bc22997a2be24fc40fc8d46522fe7e03d11",
      "tree": "7a484ba13acbdf0fa98c896ce58e807b4b5b1af9",
      "parents": [
        "d0b27fa77854b149ad4af08b0fe47fe712a47ade"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "sched: rt-group: smp balancing\n\nCurrently the rt group scheduling does a per cpu runtime limit, however\nthe rt load balancer makes no guarantees about an equal spread of real-\ntime tasks, just that at any one time, the highest priority tasks run.\n\nSolve this by making the runtime limit a global property by borrowing\nexcessive runtime from the other cpus once the local limit runs out.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d0b27fa77854b149ad4af08b0fe47fe712a47ade",
      "tree": "2f4487c108a5132e8d52456567b4a67e78fbb4a6",
      "parents": [
        "57d3da2911787a101a384532f4519f9640bae883"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sat Apr 19 19:44:57 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:57 2008 +0200"
      },
      "message": "sched: rt-group: synchonised bandwidth period\n\nVarious SMP balancing algorithms require that the bandwidth period\nrun in sync.\n\nPossible improvements are moving the rt_bandwidth thing into root_domain\nand keeping a span per rt_bandwidth which marks throttled cpus.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6fa46fa526f2cab9ce21fa5e39501553a40d196d",
      "tree": "5b89e31c030c1b5a780da7c73c031bc7df656a18",
      "parents": [
        "810b38179e9e4d4f57b4b733767bb08f8291a965"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 05 10:00:12 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 07 16:43:00 2008 +0100"
      },
      "message": "sched: balance RT task resched only on runqueue\n\nSripathi Kodi reported a crash in the -rt kernel:\n\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d435674\n\nthis is due to a place that can reschedule a task without holding\nthe tasks runqueue lock.  This was caused by the RT balancing code\nthat pulls RT tasks to the current run queue and will reschedule the\ncurrent task.\n\nThere\u0027s a slight chance that the pulling of the RT tasks will release\nthe current runqueue\u0027s lock and retake it (in the double_lock_balance).\nDuring this time that the runqueue is released, the current task can\nmigrate to another runqueue.\n\nIn the prio_changed_rt code, after the pull, if the current task is of\nlesser priority than one of the RT tasks pulled, resched_task is called\non the current task. If the current task had migrated in that small\nwindow, resched_task will be called without holding the runqueue lock\nfor the runqueue that the task is on.\n\nThis race condition also exists in the mainline kernel and this patch\nadds a check to make sure the task hasn\u0027t migrated before calling\nresched_task.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nTested-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": "62fb185130e4d420f71a30ff59d8b16b74ef5d2b",
      "tree": "474c0824a5bf90950b0a430a11a52b358c9e1f31",
      "parents": [
        "976dde010e513a9c7c3117a32b7b015f84b37430"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Feb 25 17:34:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 04 17:54:06 2008 +0100"
      },
      "message": "sched: revert load_balance_monitor() changes\n\nThe following commits cause a number of regressions:\n\n  commit 58e2d4ca581167c2a079f4ee02be2f0bc52e8729\n  Author: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\n  Date:   Fri Jan 25 21:08:00 2008 +0100\n  sched: group scheduling, change how cpu load is calculated\n\n  commit 6b2d7700266b9402e12824e11e0099ae6a4a6a79\n  Author: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\n  Date:   Fri Jan 25 21:08:00 2008 +0100\n  sched: group scheduler, fix fairness of cpu bandwidth allocation for task groups\n\nNamely:\n - very frequent wakeups on SMP, reported by PowerTop users.\n - cacheline trashing on (large) SMP\n - some latencies larger than 500ms\n\nWhile there is a mergeable patch to fix the latter, the former issues\nare not fixable in a manner suitable for .25 (we\u0027re at -rc3 now).\n\nHence we revert them and try again in v2.6.26.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nTested-by: Alexey Zaytsev \u003calexey.zaytsev@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "052f1dc7eb02300b05170ae341ccd03b76207778",
      "tree": "f58630b7876ae9e4308c0577e36aa13318b7bcfc",
      "parents": [
        "9f0c1e560c43327b70998e6c702b2f01321130d9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 13 15:45:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 13 15:45:40 2008 +0100"
      },
      "message": "sched: rt-group: make rt groups scheduling configurable\n\nMake the rt group scheduler compile time configurable.\nKeep it experimental for now.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9f0c1e560c43327b70998e6c702b2f01321130d9",
      "tree": "b2cc7ef5bb0dc9d7d2912de339bff3e0db3530c9",
      "parents": [
        "23b0fdfc9299b137bd126e9dc22f62a59dae546d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 13 15:45:39 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 13 15:45:39 2008 +0100"
      },
      "message": "sched: rt-group: interface\n\nChange the rt_ratio interface to rt_runtime_us, to match rt_period_us.\nThis avoids picking a granularity for the ratio.\n\nExtend the /sys/kernel/uids/\u003cuid\u003e/ interface to allow setting\nthe group\u0027s rt_runtime.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "23b0fdfc9299b137bd126e9dc22f62a59dae546d",
      "tree": "22019172c555109b69a73da76561d99d7776c4f7",
      "parents": [
        "4cf5d77a6eefaa7a464bc34e8cb767356f10fd74"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Feb 13 15:45:39 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 13 15:45:39 2008 +0100"
      },
      "message": "sched: rt-group: deal with PI\n\nSteven mentioned the fun case where a lock holding task will be throttled.\n\nSimple fix: allow groups that have boosted tasks to run anyway.\n\nIf a runnable task in a throttled group gets boosted the dequeue/enqueue\ndone by rt_mutex_setprio() is enough to unthrottle the group.\n\nThis is ofcourse not quite correct. Two possible ways forward are:\n  - second prio array for boosted tasks\n  - boost to a prio ceiling (this would also work for deadline scheduling)\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "326587b840785c60f5dc18557235a23bafefd620",
      "tree": "d96bfb249ca234298a4f2e40a56bce7041523ea6",
      "parents": [
        "e118adef232e637a8f091c1ded2fbf44fcf3ecc8"
      ],
      "author": {
        "name": "Dmitry Adamushko",
        "email": "dmitry.adamushko@gmail.com",
        "time": "Fri Jan 25 21:08:34 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:34 2008 +0100"
      },
      "message": "sched: fix goto retry in pick_next_task_rt()\n\nlooking at it one more time:\n\n(1) it looks to me that there is no need to call\nsched_rt_ratio_exceeded() from pick_next_rt_entity()\n\n- [ for CONFIG_FAIR_GROUP_SCHED ] queues with rt_rq-\u003ert_throttled are\nnot within this \u0027tree-like hierarchy\u0027 (or whatever we should call it\n:-)\n\n- there is also no need to re-check \u0027rt_rq-\u003ert_time \u003e ratio\u0027 at this\npoint as \u0027rt_rq-\u003ert_time\u0027 couldn\u0027t have been increased since the last\ncall to update_curr_rt() (which obviously calls\nsched_rt_ratio_esceeded())\nwell, it might be that \u0027ratio\u0027 for this rt_rq has been re-configured\n(and the period over which this rt_rq was active has not yet been\nfinished)... but I don\u0027t think we should really take this into\naccount.\n\n(2) now pick_next_rt_entity() must never return NULL, so let\u0027s change\npick_next_task_rt() accordingly.\n\nSigned-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5a52dd50091b6a6e710a1293db741028f8cc5aac",
      "tree": "ea2b361909e431c458c26208e501ea3cf10edd85",
      "parents": [
        "1020387f5f3b52929b387103cf976321981f8e26"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "message": "sched: rt-watchdog: fix .rlim_max \u003d RLIM_INFINITY\n\nRemove the curious logic to set it_sched_expires in the future. It useless\nbecause rt.timeout wouldn\u0027t be incremented anyway.\n\nExplicity check for RLIM_INFINITY as a test programm that had a 1s soft limit\nand a inf hard limit would SIGKILL at 1s. This is because RLIM_INFINITY+d-1\nis d-2.\n\nSigned-off-by: Peter Zijlsta \u003ca.p.zijlstra@chello.nl\u003e\nCC: Michal Schmidt \u003cmschmidt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1020387f5f3b52929b387103cf976321981f8e26",
      "tree": "201f6c44cc09c57dc936cc804971d37178007687",
      "parents": [
        "37bb6cb4097e29ffee970065b74499cbf10603a3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:32 2008 +0100"
      },
      "message": "sched: rt-group: reduce rescheduling\n\nOnly reschedule if the new group has a higher prio task.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "48d5e258216f1c7713633439beb98a38c7290649",
      "tree": "6f8c98785015d56337e87ed56b23d39feeeaf846",
      "parents": [
        "614ee1f61f667b02165c1ae0c1357048dc6d94a0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:31 2008 +0100"
      },
      "message": "sched: rt throttling vs no_hz\n\nWe need to teach no_hz about the rt throttling because its tick driven.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "614ee1f61f667b02165c1ae0c1357048dc6d94a0",
      "tree": "0f2e6389d045a4046f2fed14f3c9527a95467ecb",
      "parents": [
        "6f505b16425a51270058e4a93441fe64de3dd435"
      ],
      "author": {
        "name": "Mike Galbraith",
        "email": "efault@gmx.de",
        "time": "Fri Jan 25 21:08:30 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:30 2008 +0100"
      },
      "message": "sched: pull_rt_task() cleanup\n\n\"goto out\" is an odd way to spell \"skip\".\n\nSigned-off-by: Mike Galbraith \u003cefault@gmx.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6f505b16425a51270058e4a93441fe64de3dd435",
      "tree": "be21e711d93bc4d088b97c4a4f585a5044dbaa7d",
      "parents": [
        "fa85ae2418e6843953107cd6a06f645752829bc0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:30 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:30 2008 +0100"
      },
      "message": "sched: rt group scheduling\n\nExtend group scheduling to also cover the realtime classes. It uses the time\nlimiting introduced by the previous patch to allow multiple realtime groups.\n\nThe hard time limit is required to keep behaviour deterministic.\n\nThe algorithms used make the realtime scheduler O(tg), linear scaling wrt the\nnumber of task groups. This is the worst case behaviour I can\u0027t seem to get out\nof, the avg. case of the algorithms can be improved, I focused on correctness\nand worst case.\n\n[ akpm@linux-foundation.org: move side-effects out of BUG_ON(). ]\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fa85ae2418e6843953107cd6a06f645752829bc0",
      "tree": "004130ac471247a29d3f6adfbfe61c474e725779",
      "parents": [
        "8f4d37ec073c17e2d4aa8851df5837d798606d6f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:29 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:29 2008 +0100"
      },
      "message": "sched: rt time limit\n\nVery simple time limit on the realtime scheduling classes.\nAllow the rq\u0027s realtime class to consume sched_rt_ratio of every\nsched_rt_period slice. If the class exceeds this quota the fair class\nwill preempt the realtime class.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8f4d37ec073c17e2d4aa8851df5837d798606d6f",
      "tree": "a9ac9063eca53e4d0110e8086f55241ea70ba993",
      "parents": [
        "02b67cc3ba36bdba351d6c3a00593f4ec550d9d3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:29 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:29 2008 +0100"
      },
      "message": "sched: high-res preemption tick\n\nUse HR-timers (when available) to deliver an accurate preemption tick.\n\nThe regular scheduler tick that runs at 1/HZ can be too coarse when nice\nlevel are used. The fairness system will still keep the cpu utilisation \u0027fair\u0027\nby then delaying the task that got an excessive amount of CPU time but try to\nminimize this by delivering preemption points spot-on.\n\nThe average frequency of this extra interrupt is sched_latency / nr_latency.\nWhich need not be higher than 1/HZ, its just that the distribution within the\nsched_latency period is important.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "78f2c7db6068fd6ef75b8c120f04a388848eacb5",
      "tree": "994e8082a01c78e691bacb90c0f8368823c87767",
      "parents": [
        "fa717060f1ab7eb6570f2fb49136f838fc9195a9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "message": "sched: SCHED_FIFO/SCHED_RR watchdog timer\n\nIntroduce a new rlimit that allows the user to set a runtime timeout on\nreal-time tasks their slice. Once this limit is exceeded the task will receive\nSIGXCPU.\n\nSo it measures runtime since the last sleep.\n\nInput and ideas by Thomas Gleixner and Lennart Poettering.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Lennart Poettering \u003cmzxreary@0pointer.de\u003e\nCC: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCC: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fa717060f1ab7eb6570f2fb49136f838fc9195a9",
      "tree": "0338460dae3116563645e3bfa1ff5100d39826f8",
      "parents": [
        "8eb703e4f33488bf75829564d51d427e17f7cd4c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "message": "sched: sched_rt_entity\n\nMove the task_struct members specific to rt scheduling together.\nA future optimization could be to put sched_entity and sched_rt_entity\ninto a union.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c49443c538c1bbf50eda27e4a3711e9fc15176b0",
      "tree": "8dece13f1f5c48422359c981a4ef8bba92136597",
      "parents": [
        "cdc8eb984ce47a7c90a049f45229f7b0d59ba781"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:23 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:23 2008 +0100"
      },
      "message": "sched: remove some old cpuset logic\n\nWe had support for overlapping cpuset based rto logic in early\nprototypes that is no longer used, so remove it.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cdc8eb984ce47a7c90a049f45229f7b0d59ba781",
      "tree": "cebcaf9d854b843a5381cae18cffa6fd836a20ab",
      "parents": [
        "cb46984504048db946cd551c261df4e70d59a8ea"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:23 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:23 2008 +0100"
      },
      "message": "sched: RT-balance, only adjust overload state when changing\n\nThe overload set/clears were originally idempotent when this logic was first\nimplemented.  But that is no longer true due to the addition of the atomic\ncounter and this logic was never updated to work properly with that change.\nSo only adjust the overload state if it is actually changing to avoid\ngetting out of sync.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cb46984504048db946cd551c261df4e70d59a8ea",
      "tree": "e07343cc5967f74370c6b0290b67a225d868a99d",
      "parents": [
        "9a897c5a6701bcb6f099f7ca20194999102729fd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jan 25 21:08:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:22 2008 +0100"
      },
      "message": "sched: RT-balance, add new methods to sched_class\n\nDmitry Adamushko found that the current implementation of the RT\nbalancing code left out changes to the sched_setscheduler and\nrt_mutex_setprio.\n\nThis patch addresses this issue by adding methods to the schedule classes\nto handle being switched out of (switched_from) and being switched into\n(switched_to) a sched_class. Also a method for changing of priorities\nis also added (prio_changed).\n\nThis patch also removes some duplicate logic between rt_mutex_setprio and\nsched_setscheduler.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9a897c5a6701bcb6f099f7ca20194999102729fd",
      "tree": "9c5415d5e2dd115660200cbd246fe1343cd5cd5c",
      "parents": [
        "4bf0b77158d581c952af237aec79d0604b78fe27"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jan 25 21:08:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:22 2008 +0100"
      },
      "message": "sched: RT-balance, replace hooks with pre/post schedule and wakeup methods\n\nTo make the main sched.c code more agnostic to the schedule classes.\nInstead of having specific hooks in the schedule code for the RT class\nbalancing. They are replaced with a pre_schedule, post_schedule\nand task_wake_up methods. These methods may be used by any of the classes\nbut currently, only the sched_rt class implements them.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bdd7c81b4973e72b670eff6b5725bab189b723d6",
      "tree": "5660b7ee8b2e9bc295053901112f70d5e784c183",
      "parents": [
        "637f50851b57a32f7ec67c50fc16f1601ab1a87a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:18 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:18 2008 +0100"
      },
      "message": "sched: fix sched_rt.c:join/leave_domain\n\nfix build bug in sched_rt.c:join/leave_domain and make them only\nbe included on SMP builds.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "637f50851b57a32f7ec67c50fc16f1601ab1a87a",
      "tree": "ee8a4bc19fda1783bff8aa44abdcb6d8596aa7f1",
      "parents": [
        "57d885fea0da0e9541d7730a9e1dcf734981a173"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:18 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:18 2008 +0100"
      },
      "message": "sched: only balance our RT tasks within our domain\n\nWe move the rt-overload data as the first global to per-domain\nreclassification.  This limits the scope of overload related cache-line\nbouncing to stay with a specified partition instead of affecting all\ncpus in the system.\n\nFinally, we limit the scope of find_lowest_cpu searches to the domain\ninstead of the entire system.  Note that we would always respect domain\nboundaries even without this patch, but we first would scan potentially\nall cpus before whittling the list down.  Now we can avoid looking at\nRQs that are out of scope, again reducing cache-line hits.\n\nNote: In some cases, task-\u003ecpus_allowed will effectively reduce our search\nto within our domain.  However, I believe there are cases where the\ncpus_allowed mask may be all ones and therefore we err on the side of\ncaution.  If it can be optimized later, so be it.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nCC: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7f51f298204ec0528422cd9b23feac12612c5665",
      "tree": "542837841201a765114320042edbbd574010bd7a",
      "parents": [
        "80bf3171dcdf0f5d236e2e48afe2a95c7ce23879"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:17 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:17 2008 +0100"
      },
      "message": "sched: clean up schedule_balance_rt()\n\nclean up schedule_balance_rt().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "80bf3171dcdf0f5d236e2e48afe2a95c7ce23879",
      "tree": "91cc16d8b91fd669ef234ab231895779907c1a31",
      "parents": [
        "00597c3ed78e424bdafff123565c078d8b6088cf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:17 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:17 2008 +0100"
      },
      "message": "sched: clean up pull_rt_task()\n\nclean up pull_rt_task().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "00597c3ed78e424bdafff123565c078d8b6088cf",
      "tree": "9aa1df064152008969f6fa6eacec7f2b15110f75",
      "parents": [
        "6e1938d3ad58c940ec4119d387dd92a787cb238c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:16 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:16 2008 +0100"
      },
      "message": "sched: remove leftover debugging\n\nremove leftover debugging.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6e1938d3ad58c940ec4119d387dd92a787cb238c",
      "tree": "c879b423cb18a7961fd99e577b2ef3dfc8539179",
      "parents": [
        "84de4274893691aa8c471a1f7336d51e555d23a0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:16 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:16 2008 +0100"
      },
      "message": "sched: remove rt_overload()\n\nremove rt_overload() - it\u0027s an unnecessary indirection.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "84de4274893691aa8c471a1f7336d51e555d23a0",
      "tree": "59f9a3029089d1f36adda93f96ba1ce2daa9cc76",
      "parents": [
        "deeeccd41bd94a9db133d7b923f9a7479a47305d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "message": "sched: clean up kernel/sched_rt.c\n\nclean up whitespace damage and missing comments in kernel/sched_rt.c.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "deeeccd41bd94a9db133d7b923f9a7479a47305d",
      "tree": "add251ffa08f134e60d1e174914d6e511105c173",
      "parents": [
        "4df64c0bfb7e0e260d10ebc005f7d0ba1308eed7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "message": "sched: clean up overlong line in kernel/sched_debug.c\n\nclean up overlong line in kernel/sched_debug.c.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4df64c0bfb7e0e260d10ebc005f7d0ba1308eed7",
      "tree": "51ffd9e80f38e6c918e57f33373ac400bd403c53",
      "parents": [
        "79064fbf75796c4c6a53e40729dbe52f789a91fd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:15 2008 +0100"
      },
      "message": "sched: clean up find_lock_lowest_rq()\n\nclean up find_lock_lowest_rq().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "79064fbf75796c4c6a53e40729dbe52f789a91fd",
      "tree": "a54667418d6623cd84c566544930c99c608a42f8",
      "parents": [
        "0d1311a536a0face6267e7346223f2e68b002018"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:14 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:14 2008 +0100"
      },
      "message": "sched: clean up pick_next_highest_task_rt()\n\nclean up pick_next_highest_task_rt().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "610bf05645a7ac6ea104a474e328eeaaea148870",
      "tree": "fb0a1b2969e0cdfb466f362d0a3bd636b0ec5ba0",
      "parents": [
        "06f90dbd7610d51549004ea9c2ada337831eb292"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "message": "sched: RT-balance, optimize cpu search\n\nThis patch removes several cpumask operations by keeping track\nof the first of the CPUS that is of the lowest priority. When\nthe search for the lowest priority runqueue is completed, all\nthe bits up to the first CPU with the lowest priority runqueue\nis cleared.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "06f90dbd7610d51549004ea9c2ada337831eb292",
      "tree": "952ce91bf158cee7fc3df0553496be524bc38b78",
      "parents": [
        "17b3279b48835eb522d842eae16f541da3729c8a"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "message": "sched: RT-balance, optimize\n\nWe can cheaply track the number of bits set in the cpumask for the lowest\npriority CPUs.  Therefore, compute the mask\u0027s weight and use it to skip\nthe optimal domain search logic when there is only one CPU available.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "17b3279b48835eb522d842eae16f541da3729c8a",
      "tree": "c94c7da732fbefda4a938bb6479ebb3b6d8d0c82",
      "parents": [
        "e1f47d891c0f00769d6d40ac5740f943e998d089"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:13 2008 +0100"
      },
      "message": "sched: break out early if RT task cannot be migrated\n\nWe don\u0027t need to bother searching if the task cannot be migrated\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e1f47d891c0f00769d6d40ac5740f943e998d089",
      "tree": "ccf402b5b5a8377af811afb288c39e2e136f1700",
      "parents": [
        "a22d7fc187ed996b66d8439db27b2303f79a8e7b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Jan 25 21:08:12 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:12 2008 +0100"
      },
      "message": "sched: RT-balance, avoid overloading\n\nThis patch changes the searching for a run queue by a waking RT task\nto try to pick another runqueue if the currently running task\nis an RT task.\n\nThe reason is that RT tasks behave different than normal\ntasks. Preempting a normal task to run a RT task to keep\nits cache hot is fine, because the preempted non-RT task\nmay wait on that same runqueue to run again unless the\nmigration thread comes along and pulls it off.\n\nRT tasks behave differently. If one is preempted, it makes\nan active effort to continue to run. So by having a high\npriority task preempt a lower priority RT task, that lower\nRT task will then quickly try to run on another runqueue.\nThis will cause that lower RT task to replace its nice\nhot cache (and TLB) with a completely cold one. This is\nfor the hope that the new high priority RT task will keep\n its cache hot.\n\nRemeber that this high priority RT task was just woken up.\nSo it may likely have been sleeping for several milliseconds,\nand will end up with a cold cache anyway. RT tasks run till\nthey voluntarily stop, or are preempted by a higher priority\ntask. This means that it is unlikely that the woken RT task\nwill have a hot cache to wake up to. So pushing off a lower\nRT task is just killing its cache for no good reason.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a22d7fc187ed996b66d8439db27b2303f79a8e7b",
      "tree": "44845eaac2aa44b185d0663d689fea29d94ea5ff",
      "parents": [
        "6e1254d2c41215da27025add8900ed187bca121d"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jan 25 21:08:12 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:12 2008 +0100"
      },
      "message": "sched: wake-balance fixes\n\nWe have logic to detect whether the system has migratable tasks, but we are\nnot using it when deciding whether to push tasks away.  So we add support\nfor considering this new information.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "6e1254d2c41215da27025add8900ed187bca121d"
}
