)]}'
{
  "log": [
    {
      "commit": "ad4ecbcba72855a2b5319b96e2a3a65ed1ca3bfd",
      "tree": "a2f5b98598948525de77ab594e4432f09a230388",
      "parents": [
        "25890454667b3295f67b3372352be90705f8667c"
      ],
      "author": {
        "name": "Shailabh Nagar",
        "email": "nagar@watson.ibm.com",
        "time": "Fri Jul 14 00:24:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:57 2006 -0700"
      },
      "message": "[PATCH] delay accounting taskstats interface send tgid once\n\nSend per-tgid data only once during exit of a thread group instead of once\nwith each member thread exit.\n\nCurrently, when a thread exits, besides its per-tid data, the per-tgid data\nof its thread group is also sent out, if its thread group is non-empty.\nThe per-tgid data sent consists of the sum of per-tid stats for all\n*remaining* threads of the thread group.\n\nThis patch modifies this sending in two ways:\n\n- the per-tgid data is sent only when the last thread of a thread group\n  exits.  This cuts down heavily on the overhead of sending/receiving\n  per-tgid data, especially when other exploiters of the taskstats\n  interface aren\u0027t interested in per-tgid stats\n\n- the semantics of the per-tgid data sent are changed.  Instead of being\n  the sum of per-tid data for remaining threads, the value now sent is the\n  true total accumalated statistics for all threads that are/were part of\n  the thread group.\n\nThe patch also addresses a minor issue where failure of one accounting\nsubsystem to fill in the taskstats structure was causing the send of\ntaskstats to not be sent at all.\n\nThe patch has been tested for stability and run cerberus for over 4 hours\non an SMP.\n\n[akpm@osdl.org: bugfixes]\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6f44993fe1d7b2b097f6ac60cd5835c6f5ca0874",
      "tree": "0f349f4e6c28cc5d11b7083273543a294c437216",
      "parents": [
        "c757249af152c59fd74b85e52e8c090acb33d9c0"
      ],
      "author": {
        "name": "Shailabh Nagar",
        "email": "nagar@watson.ibm.com",
        "time": "Fri Jul 14 00:24:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: delay accounting usage of taskstats interface\n\nUsage of taskstats interface by delay accounting.\n\nSigned-off-by: Shailabh Nagar \u003cnagar@us.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52f17b6c2bd443e7806a161e9d10a983650db01d",
      "tree": "67f9a8964a3ac78091cefcd7baf8935175a0a003",
      "parents": [
        "0ff922452df86f3e9a2c6f705c4588ec62d096a7"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Fri Jul 14 00:24:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: cpu delay collection via schedstats\n\nMake the task-related schedstats functions callable by delay accounting even\nif schedstats collection isn\u0027t turned on.  This removes the dependency of\ndelay accounting on schedstats.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0ff922452df86f3e9a2c6f705c4588ec62d096a7",
      "tree": "ac84041bfb63f12d0e2db733c46b2cd2438b4882",
      "parents": [
        "ca74e92b4698276b6696f15a801759f50944f387"
      ],
      "author": {
        "name": "Shailabh Nagar",
        "email": "nagar@watson.ibm.com",
        "time": "Fri Jul 14 00:24:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: sync block I/O and swapin delay collection\n\nUnlike earlier iterations of the delay accounting patches, now delays are only\ncollected for the actual I/O waits rather than try and cover the delays seen\nin I/O submission paths.\n\nAccount separately for block I/O delays incurred as a result of swapin page\nfaults whose frequency can be affected by the task/process\u0027 rss limit.  Hence\nswapin delays can act as feedback for rss limit changes independent of I/O\npriority changes.\n\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca74e92b4698276b6696f15a801759f50944f387",
      "tree": "26f0de66d8207608e07ee22389bfc173e773c0c2",
      "parents": [
        "e8f4d97e1b58b50ad6449bb2d35e6632c0236abd"
      ],
      "author": {
        "name": "Shailabh Nagar",
        "email": "nagar@watson.ibm.com",
        "time": "Fri Jul 14 00:24:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: setup\n\nInitialization code related to collection of per-task \"delay\" statistics which\nmeasure how long it had to wait for cpu, sync block io, swapping etc.  The\ncollection of statistics and the interface are in other patches.  This patch\nsets up the data structures and allows the statistics collection to be\ndisabled through a kernel boot parameter.\n\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "70b97a7f0b19cf1f2619deb5cc41e8b78c591aa7",
      "tree": "619683f95396f26048c1818735818d53a3c0233e",
      "parents": [
        "36c8b586896f60cb91a4fd526233190b34316baf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:11 2006 -0700"
      },
      "message": "[PATCH] sched: cleanup, convert sched.c-internal typedefs to struct\n\nconvert:\n\n - runqueue_t to \u0027struct rq\u0027\n - prio_array_t to \u0027struct prio_array\u0027\n - migration_req_t to \u0027struct migration_req\u0027\n\nI was the one who added these but they are both against the kernel coding\nstyle and also were used inconsistently at places.  So just get rid of them at\nonce, now that we are flushing the scheduler patch-queue anyway.\n\nConversion was mostly scripted, the result was reviewed and all secondary\nwhitespace and style impact (if any) was fixed up by hand.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "36c8b586896f60cb91a4fd526233190b34316baf",
      "tree": "003246e1e676de33703daa979b3e3109ca202a89",
      "parents": [
        "48f24c4da1ee7f3f22289cb85e8b8a73e4df4db5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:11 2006 -0700"
      },
      "message": "[PATCH] sched: cleanup, remove task_t, convert to struct task_struct\n\ncleanup: remove task_t and convert all the uses to struct task_struct. I\nintroduced it for the scheduler anno and it was a mistake.\n\nConversion was mostly scripted, the result was reviewed and all\nsecondary whitespace and style impact (if any) was fixed up by hand.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fbb9ce9530fd9b66096d5187fa6a115d16d9746c",
      "tree": "1151a55e5d56045bac17b9766e6a4696cff0a26f",
      "parents": [
        "cae2ed9aa573415c6e5de9a09b7ff0d74af793bc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:03 2006 -0700"
      },
      "message": "[PATCH] lockdep: core\n\nDo \u0027make oldconfig\u0027 and accept all the defaults for new config options -\nreboot into the kernel and if everything goes well it should boot up fine and\nyou should have /proc/lockdep and /proc/lockdep_stats files.\n\nTypically if the lock validator finds some problem it will print out\nvoluminous debug output that begins with \"BUG: ...\" and which syslog output\ncan be used by kernel developers to figure out the precise locking scenario.\n\nWhat does the lock validator do?  It \"observes\" and maps all locking rules as\nthey occur dynamically (as triggered by the kernel\u0027s natural use of spinlocks,\nrwlocks, mutexes and rwsems).  Whenever the lock validator subsystem detects a\nnew locking scenario, it validates this new rule against the existing set of\nrules.  If this new rule is consistent with the existing set of rules then the\nnew rule is added transparently and the kernel continues as normal.  If the\nnew rule could create a deadlock scenario then this condition is printed out.\n\nWhen determining validity of locking, all possible \"deadlock scenarios\" are\nconsidered: assuming arbitrary number of CPUs, arbitrary irq context and task\ncontext constellations, running arbitrary combinations of all the existing\nlocking scenarios.  In a typical system this means millions of separate\nscenarios.  This is why we call it a \"locking correctness\" validator - for all\nrules that are observed the lock validator proves it with mathematical\ncertainty that a deadlock could not occur (assuming that the lock validator\nimplementation itself is correct and its internal data structures are not\ncorrupted by some other kernel subsystem).  [see more details and conditionals\nof this statement in include/linux/lockdep.h and\nDocumentation/lockdep-design.txt]\n\nFurthermore, this \"all possible scenarios\" property of the validator also\nenables the finding of complex, highly unlikely multi-CPU multi-context races\nvia single single-context rules, increasing the likelyhood of finding bugs\ndrastically.  In practical terms: the lock validator already found a bug in\nthe upstream kernel that could only occur on systems with 3 or more CPUs, and\nwhich needed 3 very unlikely code sequences to occur at once on the 3 CPUs.\nThat bug was found and reported on a single-CPU system (!).  So in essence a\nrace will be found \"piecemail-wise\", triggering all the necessary components\nfor the race, without having to reproduce the race scenario itself!  In its\nshort existence the lock validator found and reported many bugs before they\nactually caused a real deadlock.\n\nTo further increase the efficiency of the validator, the mapping is not per\n\"lock instance\", but per \"lock-class\".  For example, all struct inode objects\nin the kernel have inode-\u003einotify_mutex.  If there are 10,000 inodes cached,\nthen there are 10,000 lock objects.  But -\u003einotify_mutex is a single \"lock\ntype\", and all locking activities that occur against -\u003einotify_mutex are\n\"unified\" into this single lock-class.  The advantage of the lock-class\napproach is that all historical -\u003einotify_mutex uses are mapped into a single\n(and as narrow as possible) set of locking rules - regardless of how many\ndifferent tasks or inode structures it took to build this set of rules.  The\nset of rules persist during the lifetime of the kernel.\n\nTo see the rough magnitude of checking that the lock validator does, here\u0027s a\nportion of /proc/lockdep_stats, fresh after bootup:\n\n lock-classes:                            694 [max: 2048]\n direct dependencies:                  1598 [max: 8192]\n indirect dependencies:               17896\n all direct dependencies:             16206\n dependency chains:                    1910 [max: 8192]\n in-hardirq chains:                      17\n in-softirq chains:                     105\n in-process chains:                    1065\n stack-trace entries:                 38761 [max: 131072]\n combined max dependencies:         2033928\n hardirq-safe locks:                     24\n hardirq-unsafe locks:                  176\n softirq-safe locks:                     53\n softirq-unsafe locks:                  137\n irq-safe locks:                         59\n irq-unsafe locks:                      176\n\nThe lock validator has observed 1598 actual single-thread locking patterns,\nand has validated all possible 2033928 distinct locking scenarios.\n\nMore details about the design of the lock validator can be found in\nDocumentation/lockdep-design.txt, which can also found at:\n\n   http://redhat.com/~mingo/lockdep-patches/lockdep-design.txt\n\n[bunk@stusta.de: cleanups]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "de30a2b355ea85350ca2f58f3b9bf4e5bc007986",
      "tree": "0bef670aff65614b3c78ca13b20307355b8221d5",
      "parents": [
        "5bdc9b447c0076f494a56fdcd93ee8c5e78a2afd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:03 2006 -0700"
      },
      "message": "[PATCH] lockdep: irqtrace subsystem, core\n\nAccurate hard-IRQ-flags and softirq-flags state tracing.\n\nThis allows us to attach extra functionality to IRQ flags on/off\nevents (such as trace-on/off).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9a11b49a805665e13a56aa067afaf81d43ec1514",
      "tree": "bf499956e3f67d1211d68ab1e2eb76645f453dfb",
      "parents": [
        "fb7e42413a098cc45b3adf858da290033af62bae"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:01 2006 -0700"
      },
      "message": "[PATCH] lockdep: better lock debugging\n\nGeneric lock debugging:\n\n - generalized lock debugging framework. For example, a bug in one lock\n   subsystem turns off debugging in all lock subsystems.\n\n - got rid of the caller address passing (__IP__/__IP_DECL__/etc.) from\n   the mutex/rtmutex debugging code: it caused way too much prototype\n   hackery, and lockdep will give the same information anyway.\n\n - ability to do silent tests\n\n - check lock freeing in vfree too.\n\n - more finegrained debugging options, to allow distributions to\n   turn off more expensive debugging features.\n\nThere\u0027s no separate \u0027held mutexes\u0027 list anymore - but there\u0027s a \u0027held locks\u0027\nstack within lockdep, which unifies deadlock detection across all lock\nclasses.  (this is independent of the lockdep validation stuff - lockdep first\nchecks whether we are holding a lock already)\n\nHere are the current debugging options:\n\nCONFIG_DEBUG_MUTEXES\u003dy\nCONFIG_DEBUG_LOCK_ALLOC\u003dy\n\nwhich do:\n\n config DEBUG_MUTEXES\n          bool \"Mutex debugging, basic checks\"\n\n config DEBUG_LOCK_ALLOC\n         bool \"Detect incorrect freeing of live mutexes\"\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f95dc58d0505516f5cc212a966aea2f2cdb5e44",
      "tree": "2a57ad36db88621ee079fffe34b1cf9bff62b1f4",
      "parents": [
        "f9008e4c5c525941967b67777945aa6266ab6326"
      ],
      "author": {
        "name": "David Quigley",
        "email": "dpquigl@tycho.nsa.gov",
        "time": "Fri Jun 30 01:55:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:37 2006 -0700"
      },
      "message": "[PATCH] SELinux: add security hook call to kill_proc_info_as_uid\n\nThis patch adds a call to the extended security_task_kill hook introduced by\nthe prior patch to the kill_proc_info_as_uid function so that these signals\ncan be properly mediated by security modules.  It also updates the existing\nhook call in check_kill_permission.\n\nSigned-off-by: David Quigley \u003cdpquigl@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "95e02ca9bb5324360e7dea1ea1c563036d84a5e6",
      "tree": "0336dd808abe113b42f53a8f700d50ea6ba674ff",
      "parents": [
        "0bafd214e4ba55dc1fb81a3031d0249292f1bc05"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jun 27 02:55:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:48 2006 -0700"
      },
      "message": "[PATCH] rtmutex: Propagate priority settings into PI lock chains\n\nWhen the priority of a task, which is blocked on a lock, changes we must\npropagate this change into the PI lock chain.  Therefor the chain walk code\nis changed to get rid of the references to current to avoid false positives\nin the deadlock detector, as setscheduler might be called by a task which\nholds the lock on which the task whose priority is changed is blocked.\n\nAlso add some comments about the get/put_task_struct usage to avoid\nconfusion.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c87e2837be82df479a6bae9f155c43516d2feebc",
      "tree": "ad6ab35f0b78f71abaa7b05185e9e3f97809c6de",
      "parents": [
        "0cdbee9920fb37eb2dc49b860c2b28862d647adc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 27 02:54:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:47 2006 -0700"
      },
      "message": "[PATCH] pi-futex: futex_lock_pi/futex_unlock_pi support\n\nThis adds the actual pi-futex implementation, based on rt-mutexes.\n\n[dino@in.ibm.com: fix an oops-causing race]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Dinakar Guniguntala \u003cdino@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "61a87122869b6340a63b6f9f84097d3688604b90",
      "tree": "11d60d29763a42abd66453a920cc06bebc852427",
      "parents": [
        "e7eebaf6a81b956c989f184ee4b27277c88f8afe"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Jun 27 02:54:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:47 2006 -0700"
      },
      "message": "[PATCH] pi-futex: rt mutex tester\n\nRT-mutex tester: scriptable tester for rt mutexes, which allows userspace\nscripting of mutex unit-tests (and dynamic tests as well), using the actual\nrt-mutex implementation of the kernel.\n\n[akpm@osdl.org: fixlet]\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "23f78d4a03c53cbd75d87a795378ea540aa08c86",
      "tree": "27dfe06337990911380fe8c5949ae9acd8e9568a",
      "parents": [
        "b29739f902ee76a05493fb7d2303490fc75364f4"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 27 02:54:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:47 2006 -0700"
      },
      "message": "[PATCH] pi-futex: rt mutex core\n\nCore functions for the rt-mutex subsystem.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b29739f902ee76a05493fb7d2303490fc75364f4",
      "tree": "1bf48dfb74752a7ef24a2a4a74c45da0aaec754b",
      "parents": [
        "77ba89c5cf28d5d98a3cae17f67a3e42b102cc25"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 27 02:54:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:46 2006 -0700"
      },
      "message": "[PATCH] pi-futex: scheduler support for pi\n\nAdd framework to boost/unboost the priority of RT tasks.\n\nThis consists of:\n\n - caching the \u0027normal\u0027 priority in -\u003enormal_prio\n - providing a functions to set/get the priority of the task\n - make sched_setscheduler() aware of boosting\n\nThe effective_prio() cleanups also fix a priority-calculation bug pointed out\nby Andrey Gelman, in set_user_nice().\n\nhas_rt_policy() fix: Peter Williams \u003cpwil3058@bigpond.net.au\u003e\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Andrey Gelman \u003cagelman@012.net.il\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5c45bf279d378d436ce45825c0f136696c7b6109",
      "tree": "80e2fcf4866b84fccb787562e1a83b16f4bc8850",
      "parents": [
        "369381694ddcf03f1de403501c8b97099b5109ec"
      ],
      "author": {
        "name": "Siddha, Suresh B",
        "email": "suresh.b.siddha@intel.com",
        "time": "Tue Jun 27 02:54:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:45 2006 -0700"
      },
      "message": "[PATCH] sched: mc/smt power savings sched policy\n\nsysfs entries \u0027sched_mc_power_savings\u0027 and \u0027sched_smt_power_savings\u0027 in\n/sys/devices/system/cpu/ control the MC/SMT power savings policy for the\nscheduler.\n\nBased on the values (1-enable, 0-disable) for these controls, sched groups\ncpu power will be determined for different domains.  When power savings\npolicy is enabled and under light load conditions, scheduler will minimize\nthe physical packages/cpu cores carrying the load and thus conserving\npower(with a perf impact based on the workload characteristics...  see OLS\n2005 CMP kernel scheduler paper for more details..)\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Con Kolivas \u003ckernel@kolivas.org\u003e\nCc: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "51888ca25a03125e742ef84d4ddfd74e139707a0",
      "tree": "b15e50f3b67f6e2b94b783fce603d4a1f54a8189",
      "parents": [
        "615052dc3bf96278a843a64d3d1eea03532028c3"
      ],
      "author": {
        "name": "Srivatsa Vaddagiri",
        "email": "vatsa@in.ibm.com",
        "time": "Tue Jun 27 02:54:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:45 2006 -0700"
      },
      "message": "[PATCH] sched_domain: handle kmalloc failure\n\nTry to handle mem allocation failures in build_sched_domains by bailing out\nand cleaning up thus-far allocated memory.  The patch has a direct consequence\nthat we disable load balancing completely (even at sibling level) upon *any*\nmemory allocation failure.\n\n[Lee.Schermerhorn@hp.com: bugfix]\nSigned-off-by: Srivatsa Vaddagir \u003cvatsa@in.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Siddha, Suresh B\" \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2dd73a4f09beacadde827a032cf15fd8b1fa3d48",
      "tree": "f81752d44e68240231518d6a3f05ac9ff6410a2d",
      "parents": [
        "efc30814a88bdbe2bfe4ac94de2eb089ad80bee3"
      ],
      "author": {
        "name": "Peter Williams",
        "email": "pwil3058@bigpond.net.au",
        "time": "Tue Jun 27 02:54:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:44 2006 -0700"
      },
      "message": "[PATCH] sched: implement smpnice\n\nProblem:\n\nThe introduction of separate run queues per CPU has brought with it \"nice\"\nenforcement problems that are best described by a simple example.\n\nFor the sake of argument suppose that on a single CPU machine with a\nnice\u003d\u003d19 hard spinner and a nice\u003d\u003d0 hard spinner running that the nice\u003d\u003d0\ntask gets 95% of the CPU and the nice\u003d\u003d19 task gets 5% of the CPU.  Now\nsuppose that there is a system with 2 CPUs and 2 nice\u003d\u003d19 hard spinners and\n2 nice\u003d\u003d0 hard spinners running.  The user of this system would be entitled\nto expect that the nice\u003d\u003d0 tasks each get 95% of a CPU and the nice\u003d\u003d19\ntasks only get 5% each.  However, whether this expectation is met is pretty\nmuch down to luck as there are four equally likely distributions of the\ntasks to the CPUs that the load balancing code will consider to be balanced\nwith loads of 2.0 for each CPU.  Two of these distributions involve one\nnice\u003d\u003d0 and one nice\u003d\u003d19 task per CPU and in these circumstances the users\nexpectations will be met.  The other two distributions both involve both\nnice\u003d\u003d0 tasks being on one CPU and both nice\u003d\u003d19 being on the other CPU and\neach task will get 50% of a CPU and the user\u0027s expectations will not be\nmet.\n\nSolution:\n\nThe solution to this problem that is implemented in the attached patch is\nto use weighted loads when determining if the system is balanced and, when\nan imbalance is detected, to move an amount of weighted load between run\nqueues (as opposed to a number of tasks) to restore the balance.  Once\nagain, the easiest way to explain why both of these measures are necessary\nis to use a simple example.  Suppose that (in a slight variation of the\nabove example) that we have a two CPU system with 4 nice\u003d\u003d0 and 4 nice\u003d19\nhard spinning tasks running and that the 4 nice\u003d\u003d0 tasks are on one CPU and\nthe 4 nice\u003d\u003d19 tasks are on the other CPU.  The weighted loads for the two\nCPUs would be 4.0 and 0.2 respectively and the load balancing code would\nmove 2 tasks resulting in one CPU with a load of 2.0 and the other with\nload of 2.2.  If this was considered to be a big enough imbalance to\njustify moving a task and that task was moved using the current\nmove_tasks() then it would move the highest priority task that it found and\nthis would result in one CPU with a load of 3.0 and the other with a load\nof 1.2 which would result in the movement of a task in the opposite\ndirection and so on -- infinite loop.  If, on the other hand, an amount of\nload to be moved is calculated from the imbalance (in this case 0.1) and\nmove_tasks() skips tasks until it find ones whose contributions to the\nweighted load are less than this amount it would move two of the nice\u003d\u003d19\ntasks resulting in a system with 2 nice\u003d\u003d0 and 2 nice\u003d19 on each CPU with\nloads of 2.1 for each CPU.\n\nOne of the advantages of this mechanism is that on a system where all tasks\nhave nice\u003d\u003d0 the load balancing calculations would be mathematically\nidentical to the current load balancing code.\n\nNotes:\n\nstruct task_struct:\n\nhas a new field load_weight which (in a trade off of space for speed)\nstores the contribution that this task makes to a CPU\u0027s weighted load when\nit is runnable.\n\nstruct runqueue:\n\nhas a new field raw_weighted_load which is the sum of the load_weight\nvalues for the currently runnable tasks on this run queue.  This field\nalways needs to be updated when nr_running is updated so two new inline\nfunctions inc_nr_running() and dec_nr_running() have been created to make\nsure that this happens.  This also offers a convenient way to optimize away\nthis part of the smpnice mechanism when CONFIG_SMP is not defined.\n\nint try_to_wake_up():\n\nin this function the value SCHED_LOAD_BALANCE is used to represent the load\ncontribution of a single task in various calculations in the code that\ndecides which CPU to put the waking task on.  While this would be a valid\non a system where the nice values for the runnable tasks were distributed\nevenly around zero it will lead to anomalous load balancing if the\ndistribution is skewed in either direction.  To overcome this problem\nSCHED_LOAD_SCALE has been replaced by the load_weight for the relevant task\nor by the average load_weight per task for the queue in question (as\nappropriate).\n\nint move_tasks():\n\nThe modifications to this function were complicated by the fact that\nactive_load_balance() uses it to move exactly one task without checking\nwhether an imbalance actually exists.  This precluded the simple\noverloading of max_nr_move with max_load_move and necessitated the addition\nof the latter as an extra argument to the function.  The internal\nimplementation is then modified to move up to max_nr_move tasks and\nmax_load_move of weighted load.  This slightly complicates the code where\nmove_tasks() is called and if ever active_load_balance() is changed to not\nuse move_tasks() the implementation of move_tasks() should be simplified\naccordingly.\n\nstruct sched_group *find_busiest_group():\n\nSimilar to try_to_wake_up(), there are places in this function where\nSCHED_LOAD_SCALE is used to represent the load contribution of a single\ntask and the same issues are created.  A similar solution is adopted except\nthat it is now the average per task contribution to a group\u0027s load (as\nopposed to a run queue) that is required.  As this value is not directly\navailable from the group it is calculated on the fly as the queues in the\ngroups are visited when determining the busiest group.\n\nA key change to this function is that it is no longer to scale down\n*imbalance on exit as move_tasks() uses the load in its scaled form.\n\nvoid set_user_nice():\n\nhas been modified to update the task\u0027s load_weight field when it\u0027s nice\nvalue and also to ensure that its run queue\u0027s raw_weighted_load field is\nupdated if it was runnable.\n\nFrom: \"Siddha, Suresh B\" \u003csuresh.b.siddha@intel.com\u003e\n\nWith smpnice, sched groups with highest priority tasks can mask the imbalance\nbetween the other sched groups with in the same domain.  This patch fixes some\nof the listed down scenarios by not considering the sched groups which are\nlightly loaded.\n\na) on a simple 4-way MP system, if we have one high priority and 4 normal\n   priority tasks, with smpnice we would like to see the high priority task\n   scheduled on one cpu, two other cpus getting one normal task each and the\n   fourth cpu getting the remaining two normal tasks.  but with current\n   smpnice extra normal priority task keeps jumping from one cpu to another\n   cpu having the normal priority task.  This is because of the\n   busiest_has_loaded_cpus, nr_loaded_cpus logic..  We are not including the\n   cpu with high priority task in max_load calculations but including that in\n   total and avg_load calcuations..  leading to max_load \u003c avg_load and load\n   balance between cpus running normal priority tasks(2 Vs 1) will always show\n   imbalanace as one normal priority and the extra normal priority task will\n   keep moving from one cpu to another cpu having normal priority task..\n\nb) 4-way system with HT (8 logical processors).  Package-P0 T0 has a\n   highest priority task, T1 is idle.  Package-P1 Both T0 and T1 have 1 normal\n   priority task each..  P2 and P3 are idle.  With this patch, one of the\n   normal priority tasks on P1 will be moved to P2 or P3..\n\nc) With the current weighted smp nice calculations, it doesn\u0027t always make\n   sense to look at the highest weighted runqueue in the busy group..\n   Consider a load balance scenario on a DP with HT system, with Package-0\n   containing one high priority and one low priority, Package-1 containing one\n   low priority(with other thread being idle)..  Package-1 thinks that it need\n   to take the low priority thread from Package-0.  And find_busiest_queue()\n   returns the cpu thread with highest priority task..  And ultimately(with\n   help of active load balance) we move high priority task to Package-1.  And\n   same continues with Package-0 now, moving high priority task from package-1\n   to package-0..  Even without the presence of active load balance, load\n   balance will fail to balance the above scenario..  Fix find_busiest_queue\n   to use \"imbalance\" when it is lightly loaded.\n\n[kernel@kolivas.org: sched: store weighted load on up]\n[kernel@kolivas.org: sched: add discrete weighted cpu load function]\n[suresh.b.siddha@intel.com: sched: remove dead code]\nSigned-off-by: Peter Williams \u003cpwil3058@bigpond.com.au\u003e\nCc: \"Siddha, Suresh B\" \u003csuresh.b.siddha@intel.com\u003e\nCc: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Con Kolivas \u003ckernel@kolivas.org\u003e\nCc: John Hawkes \u003chawkes@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "48e6484d49020dba3578ad117b461e8a391e8f0f",
      "tree": "7824ca84bfe71c3fe2c09a1fedc31106fec4f500",
      "parents": [
        "662795deb854b31501e0ffb42b7f0cce802c134a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jun 26 00:25:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:24 2006 -0700"
      },
      "message": "[PATCH] proc: Rewrite the proc dentry flush on exit optimization\n\nTo keep the dcache from filling up with dead /proc entries we flush them on\nprocess exit.  However over the years that code has gotten hairy with a\ndentry_pointer and a lock in task_struct and misdocumented as a correctness\nfeature.\n\nI have rewritten this code to look and see if we have a corresponding entry in\nthe dcache and if so flush it on process exit.  This removes the extra fields\nin the task_struct and allows me to trivially handle the case of a\n/proc/\u003ctgid\u003e/task/\u003cpid\u003e entry as well as the current /proc/\u003cpid\u003e entries.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "77787bfb44da6e6166af088226707aeccee27968",
      "tree": "ada770c2f4f2d913c8f96f2eec3125d4cfb22011",
      "parents": [
        "f6ec29a42d7ac3b309a9cef179b686d23986ab98"
      ],
      "author": {
        "name": "KaiGai Kohei",
        "email": "kaigai@ak.jp.nec.com",
        "time": "Sun Jun 25 05:49:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:25 2006 -0700"
      },
      "message": "[PATCH] pacct: none-delayed process accounting accumulation\n\nIn current 2.6.17 implementation, signal_struct refered from task_struct is\nused for per-process data structure.  The pacct facility also uses it as a\nper-process data structure to store stime, utime, minflt, majflt.  But those\nmembers are saved in __exit_signal().  It\u0027s too late.\n\nFor example, if some threads exits at same time, pacct facility has a\npossibility to drop accountings for a part of those threads.  (see, the\nfollowing \u0027The results of original 2.6.17 kernel\u0027) I think accounting\ninformation should be completely collected into the per-process data structure\nbefore writing out an accounting record.\n\nThis patch fixes this matter.  Accumulation of stime, utime, minflt and majflt\nare done before generating accounting record.\n\n[mingo@elte.hu: fix acct_collect() siglock bug found by lockdep]\nSigned-off-by: KaiGai Kohei \u003ckaigai@ak.jp.nec.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f6ec29a42d7ac3b309a9cef179b686d23986ab98",
      "tree": "5150d4f403833ac18b468bd0e0e0a9a7cdd9f4be",
      "parents": [
        "0e4648141af02331f21aabcd34940c70f09a2d04"
      ],
      "author": {
        "name": "KaiGai Kohei",
        "email": "kaigai@ak.jp.nec.com",
        "time": "Sun Jun 25 05:49:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:25 2006 -0700"
      },
      "message": "[PATCH] pacct: avoidance to refer the last thread as a representation of the process\n\nWhen pacct facility generate an \u0027ac_flag\u0027 field in accounting record, it\nrefers a task_struct of the thread which died last in the process.  But any\nother task_structs are ignored.\n\nTherefore, pacct facility drops ASU flag even if root-privilege operations are\nused by any other threads except the last one.  In addition, AFORK flag is\nalways set when the thread of group-leader didn\u0027t die last, although this\nprocess has called execve() after fork().\n\nWe have a same matter in ac_exitcode.  The recorded ac_exitcode is an exit\ncode of the last thread in the process.  There is a possibility this exitcode\nis not the group leader\u0027s one.\n"
    },
    {
      "commit": "0e4648141af02331f21aabcd34940c70f09a2d04",
      "tree": "3e4dea992a8e3f3194be04a0fd3e14c24a313ee7",
      "parents": [
        "6bc392741d661eb84be503d1fdf14b6746615e4c"
      ],
      "author": {
        "name": "KaiGai Kohei",
        "email": "kaigai@ak.jp.nec.com",
        "time": "Sun Jun 25 05:49:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:25 2006 -0700"
      },
      "message": "[PATCH] pacct: add pacct_struct to fix some pacct bugs.\n\nThe pacct facility need an i/o operation when an accounting record is\ngenerated.  There is a possibility to wake OOM killer up.  If OOM killer is\nactivated, it kills some processes to make them release process memory\nregions.\n\nBut acct_process() is called in the killed processes context before calling\nexit_mm(), so those processes cannot release own memory.  In the results, any\nprocesses stop in this point and it finally cause a system stall.\n"
    },
    {
      "commit": "b31dc66a54ad986b6b73bdc49c8efc17cbad1833",
      "tree": "5591383c1cbffe11512da889c971f899333f1a44",
      "parents": [
        "271f18f102c789f59644bb6c53a69da1df72b2f4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 13 08:26:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] Kill PF_SYNCWRITE flag\n\nA process flag to indicate whether we are doing sync io is incredibly\nugly. It also causes performance problems when one does a lot of async\nio and then proceeds to sync it. Part of the io will go out as async,\nand the other part as sync. This causes a disconnect between the\npreviously submitted io and the synced io. For io schedulers such as CFQ,\nthis will cause us lost merges and suboptimal behaviour in scheduling.\n\nRemove PF_SYNCWRITE completely from the fsync/msync paths, and let\nthe O_DIRECT path just directly indicate that the writes are sync\nby using WRITE_SYNC instead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "260ea1013283d8acbb451459ed1ca560c1445c20",
      "tree": "35819d28dbfa8600ac0de336147323e660b0390c",
      "parents": [
        "4a4b69f79ba7286794765a856349e380f984a6cb"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Jun 23 02:05:18 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:03 2006 -0700"
      },
      "message": "[PATCH] ptrace: document the locking rules\n\nAfter a lot of reading the code and thinking about how it behaves I have\nmanaged to figure out what the current ptrace locking rules are.  The\ncurrent code is in much better that it appears at first glance.  The\ntroublesome code paths are actually the code paths that violate the current\nrules.\n\nptrace uses simple exclusive access as it\u0027s locking.  You can only touch\ntask-\u003eptrace if the task is stopped and you are the ptracer, or if the task\nis running and are the task itself.\n\nVery simple, very easy to maintain.  It just needs to be documented so\npeople know not to touch ptrace from elsewhere.\n\nCurrently we do have a few pieces of code that are in violation of this\nrule.  Particularly the core dump code, and ptrace_attach.  But so far the\ncode looks fixable.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9eaec9e295a84a80b663996d0489fcff3a1dca9",
      "tree": "85cfc09bb5f0eb42d3be7dfbddaad31353307796",
      "parents": [
        "cee4cca740d209bcb4b9857baa2253d5ba4e3fbe",
        "41757106b9ca7867dafb2404d618f947b4786fd7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 20 15:37:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 20 15:37:56 2006 -0700"
      },
      "message": "Merge branch \u0027audit.b21\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current\n\n* \u0027audit.b21\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current: (25 commits)\n  [PATCH] make set_loginuid obey audit_enabled\n  [PATCH] log more info for directory entry change events\n  [PATCH] fix AUDIT_FILTER_PREPEND handling\n  [PATCH] validate rule fields\u0027 types\n  [PATCH] audit: path-based rules\n  [PATCH] Audit of POSIX Message Queue Syscalls v.2\n  [PATCH] fix se_sen audit filter\n  [PATCH] deprecate AUDIT_POSSBILE\n  [PATCH] inline more audit helpers\n  [PATCH] proc_loginuid_write() uses simple_strtoul() on non-terminated array\n  [PATCH] update of IPC audit record cleanup\n  [PATCH] minor audit updates\n  [PATCH] fix audit_krule_to_{rule,data} return values\n  [PATCH] add filtering by ppid\n  [PATCH] log ppid\n  [PATCH] collect sid of those who send signals to auditd\n  [PATCH] execve argument logging\n  [PATCH] fix deadlocks in AUDIT_LIST/AUDIT_LIST_RULES\n  [PATCH] audit_panic() is audit-internal\n  [PATCH] inotify (5/5): update kernel documentation\n  ...\n\nManual fixup of conflict in unclude/linux/inotify.h\n"
    },
    {
      "commit": "2d9048e201bfb67ba21f05e647b1286b8a4a5667",
      "tree": "1df2ca6780d403f3209cf445f8b0b27f45098434",
      "parents": [
        "90204e0b7b51e9f2a6905adca12dc331128602c7"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Thu Jun 01 13:10:59 2006 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 20 05:25:17 2006 -0400"
      },
      "message": "[PATCH] inotify (1/5): split kernel API from userspace support\n\nThe following series of patches introduces a kernel API for inotify,\nmaking it possible for kernel modules to benefit from inotify\u0027s\nmechanism for watching inodes.  With these patches, inotify will\nmaintain for each caller a list of watches (via an embedded struct\ninotify_watch), where each inotify_watch is associated with a\ncorresponding struct inode.  The caller registers an event handler and\nspecifies for which filesystem events their event handler should be\ncalled per inotify_watch.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nAcked-by: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b7b3c76a0a21c5a98124e90c47c488f7e4166f87",
      "tree": "475b13a18a81b3ac6377a6c2701e78268f543e5c",
      "parents": [
        "f001e47f83db18a9f202f25c0255b4d11ebe468b"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Apr 27 00:12:56 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Apr 27 00:12:56 2006 +0100"
      },
      "message": "Sanitise linux/sched.h for userspace consumption\n\nThere was a whole load of crap exposed which should have been inside the\nexisting #ifdef __KERNEL__ part. Also hide struct sched_param for now,\nsince glibc has its own and doesn\u0027t like being given ours (yet).\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "a3b6714e1744a5e841753d74aca1de5972f24e6d",
      "tree": "2a463aa2d4fd93f754fb819e5e2ec56482844c99",
      "parents": [
        "98ca79d52bc34b8dfff729bc8559dbb918c9d02a"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Tue Apr 25 14:54:40 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Tue Apr 25 14:54:40 2006 +0100"
      },
      "message": "Partially sanitise linux/sched.h for userspace consumption\n\nFor now, just make sure all inclusion of private header files is done\nwithin #ifdef __KERNEL__. There\u0027ll be more to clean up later.\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "5e85d4abe3f43bb5362f384bab0e20ef082ce0b5",
      "tree": "cd3a29086e5274fd08bc8d22d15568deab144755",
      "parents": [
        "181ae4005d0a4010802be534d929b38c42b9ac06"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Apr 18 22:20:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Apr 19 09:13:49 2006 -0700"
      },
      "message": "[PATCH] task: Make task list manipulations RCU safe\n\nWhile we can currently walk through thread groups, process groups, and\nsessions with just the rcu_read_lock, this opens the door to walking the\nentire task list.\n\nWe already have all of the other RCU guarantees so there is no cost in\ndoing this, this should be enough so that proc can stop taking the\ntasklist lock during readdir.\n\nprev_task was killed because it has no users, and using it will miss new\ntasks when doing an rcu traversal.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64541d19702cfdb7ea946fdc20faee849f6874b1",
      "tree": "0eb2fbcac51359b590b9692b112fe662fee49a4a",
      "parents": [
        "1f60245479ca6d4d3f2cf4a47c7dd18caf5afdf2"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Apr 14 12:43:15 2006 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Apr 14 17:43:57 2006 -0700"
      },
      "message": "[PATCH] kill unushed __put_task_struct_cb\n\nSomehow in the midst of dotting i\u0027s and crossing t\u0027s during\nthe merge up to rc1 we wound up keeping __put_task_struct_cb\nwhen it should have been killed as it no longer has any users.\nSorry I probably should have caught this while it was\nstill in the -mm tree.\n\nHaving the old code there gets confusing when reading\nthrough the code and trying to understand what is\nhappening.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "88dd9c16cecbd105bbe7711b6120333f6f7b5474",
      "tree": "9632e5988abeaa7e4d20350305edc4e4652b56d1",
      "parents": [
        "6dde432553551ae036aae12c2b940677d36c9a5b",
        "d1195c516a9acd767cb541f914be2c6ddcafcfc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:34:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:34:02 2006 -0700"
      },
      "message": "Merge branch \u0027splice\u0027 of git://brick.kernel.dk/data/git/linux-2.6-block\n\n* \u0027splice\u0027 of git://brick.kernel.dk/data/git/linux-2.6-block:\n  [PATCH] vfs: add splice_write and splice_read to documentation\n  [PATCH] Remove sys_ prefix of new syscalls from __NR_sys_*\n  [PATCH] splice: warning fix\n  [PATCH] another round of fs/pipe.c cleanups\n  [PATCH] splice: comment styles\n  [PATCH] splice: add Ingo as addition copyright holder\n  [PATCH] splice: unlikely() optimizations\n  [PATCH] splice: speedups and optimizations\n  [PATCH] pipe.c/fifo.c code cleanups\n  [PATCH] get rid of the PIPE_*() macros\n  [PATCH] splice: speedup __generic_file_splice_read\n  [PATCH] splice: add direct fd \u003c-\u003e fd splicing support\n  [PATCH] splice: add optional input and output offsets\n  [PATCH] introduce a \"kernel-internal pipe object\" abstraction\n  [PATCH] splice: be smarter about calling do_page_cache_readahead()\n  [PATCH] splice: optimize the splice buffer mapping\n  [PATCH] splice: cleanup __generic_file_splice_read()\n  [PATCH] splice: only call wake_up_interruptible() when we really have to\n  [PATCH] splice: potential !page dereference\n  [PATCH] splice: mark the io page as accessed\n"
    },
    {
      "commit": "a9cdf410ca8f59b52bc7061a6751050010c7cc5b",
      "tree": "a7b63f15f2221e424b37989af1083701d1549adf",
      "parents": [
        "49b6e2ad00435209503863932d03470f825e0a1a"
      ],
      "author": {
        "name": "Keith Owens",
        "email": "kaos@sgi.com",
        "time": "Mon Apr 10 22:54:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:41 2006 -0700"
      },
      "message": "[PATCH] Reinstate const in next_thread()\n\nBefore commit 47e65328a7b1cdfc4e3102e50d60faf94ebba7d3, next_thread() took\na const task_t.  Reinstate the const qualifier, getting the next thread\nnever changes the current thread.\n\nSigned-off-by: Keith Owens \u003ckaos@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b92ce55893745e011edae70830b8bc863be881f9",
      "tree": "e2afd62d2e63d74157905140f5907d07bdfe31b9",
      "parents": [
        "529565dcb1581c9a1e3f6df1c1763ca3e0f0d512"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Apr 11 13:52:07 2006 +0200"
      },
      "message": "[PATCH] splice: add direct fd \u003c-\u003e fd splicing support\n\nIt\u0027s more efficient for sendfile() emulation. Basically we cache an\ninternal private pipe and just use that as the intermediate area for\npages. Direct splicing is not available from sys_splice(), it is only\nmeant to be used for sendfile() emulation.\n\nAdditional patch from Ingo Molnar to avoid the PIPE_BUFFERS loop at\nexit for the normal fast path.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "de12a7878c11f3b282d640888aa635e0711d0b5e",
      "tree": "742b72a47cc36a7e591dba1883cd9af3c44290c4",
      "parents": [
        "1b72373491a061be6d456d219a4e2d054ac2aaad"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Apr 10 17:16:49 2006 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Apr 10 16:36:50 2006 -0700"
      },
      "message": "[PATCH] de_thread: Don\u0027t confuse users do_each_thread.\n\nOleg Nesterov spotted two interesting bugs with the current de_thread\ncode.  The simplest is a long standing double decrement of\n__get_cpu_var(process_counts) in __unhash_process.  Caused by\ntwo processes exiting when only one was created.\n\nThe other is that since we no longer detach from the thread_group list\nit is possible for do_each_thread when run under the tasklist_lock to\nsee the same task_struct twice.  Once on the task list as a\nthread_group_leader, and once on the thread list of another\nthread.\n\nThe double appearance in do_each_thread can cause a double increment\nof mm_core_waiters in zap_threads resulting in problems later on in\ncoredump_wait.\n\nTo remedy those two problems this patch takes the simple approach\nof changing the old thread group leader into a child thread.\nThe only routine in release_task that cares is __unhash_process,\nand it can be trivially seen that we handle cleaning up a\nthread group leader properly.\n\nSince de_thread doesn\u0027t change the pid of the exiting leader process\nand instead shares it with the new leader process.  I change\nthread_group_leader to recognize group leadership based on the\ngroup_leader field and not based on pids.  This should also be\nslightly cheaper then the existing thread_group_leader macro.\n\nI performed a quick audit and I couldn\u0027t see any user of\nthread_group_leader that cared about the difference.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92476d7fc0326a409ab1d3864a04093a6be9aca7",
      "tree": "ea50a5a31522492d9915e0763a7adc6ac87c4fbc",
      "parents": [
        "8c7904a00b06d2ee51149794b619e07369fcf9d4"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Mar 31 02:31:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:19:00 2006 -0800"
      },
      "message": "[PATCH] pidhash: Refactor the pid hash table\n\nSimplifies the code, reduces the need for 4 pid hash tables, and makes the\ncode more capable.\n\nIn the discussions I had with Oleg it was felt that to a large extent the\ncleanup itself justified the work.  With struct pid being dynamically\nallocated meant we could create the hash table entry when the pid was\nallocated and free the hash table entry when the pid was freed.  Instead of\nplaying with the hash lists when ever a process would attach or detach to a\nprocess.\n\nFor myself the fact that it gave what my previous task_ref patch gave for free\nwith simpler code was a big win.  The problem is that if you hold a reference\nto struct task_struct you lock in 10K of low memory.  If you do that in a user\ncontrollable way like /proc does, with an unprivileged but hostile user space\napplication with typical resource limits of 1000 fds and 100 processes I can\ntrigger the OOM killer by consuming all of low memory with task structs, on a\nmachine wight 1GB of low memory.\n\nIf I instead hold a reference to struct pid which holds a pointer to my\ntask_struct, I don\u0027t suffer from that problem because struct pid is 2 orders\nof magnitude smaller.  In fact struct pid is small enough that most other\nkernel data structures dwarf it, so simply limiting the number of referring\ndata structures is enough to prevent exhaustion of low memory.\n\nThis splits the current struct pid into two structures, struct pid and struct\npid_link, and reduces our number of hash tables from PIDTYPE_MAX to just one.\nstruct pid_link is the per process linkage into the hash tables and lives in\nstruct task_struct.  struct pid is given an indepedent lifetime, and holds\npointers to each of the pid types.\n\nThe independent life of struct pid simplifies attach_pid, and detach_pid,\nbecause we are always manipulating the list of pids and not the hash table.\nIn addition in giving struct pid an indpendent life it makes the concept much\nmore powerful.\n\nKernel data structures can now embed a struct pid * instead of a pid_t and\nnot suffer from pid wrap around problems or from keeping unnecessarily\nlarge amounts of memory allocated.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c7904a00b06d2ee51149794b619e07369fcf9d4",
      "tree": "c995150254e17dfda6e1679c3249343586e178cb",
      "parents": [
        "e4e5d3fc80d26ed26ebe42907b224f08d7eccfbf"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Mar 31 02:31:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:59 2006 -0800"
      },
      "message": "[PATCH] task: RCU protect task-\u003eusage\n\nA big problem with rcu protected data structures that are also reference\ncounted is that you must jump through several hoops to increase the reference\ncount.  I think someone finally implemented atomic_inc_not_zero(\u0026count) to\nautomate the common case.  Unfortunately this means you must special case the\nrcu access case.\n\nWhen data structures are only visible via rcu in a manner that is not\ndetermined by the reference count on the object (i.e.  tasks are visible until\ntheir zombies are reaped) there is a much simpler technique we can employ.\nSimply delaying the decrement of the reference count until the rcu interval is\nover.\n\nWhat that means is that the proc code that looks up a task and later\nwants to sleep can now do:\n\nrcu_read_lock();\ntask \u003d find_task_by_pid(some_pid);\nif (task) {\n\tget_task_struct(task);\n}\nrcu_read_unlock();\n\nThe effect on the rest of the kernel is that put_task_struct becomes cheaper\nand immediate, and in the case where the task has been reaped it frees the\ntask immediate instead of unnecessarily waiting an until the rcu interval is\nover.\n\nCleanup of task_struct does not happen when its reference count drops to\nzero, instead cleanup happens when release_task is called.  Tasks can only\nbe looked up via rcu before release_task is called.  All rcu protected\nmembers of task_struct are freed by release_task.\n\nTherefore we can move call_rcu from put_task_struct into release_task.  And\nwe can modify release_task to not immediately release the reference count\nbut instead have it call put_task_struct from the function it gives to\ncall_rcu.\n\nThe end result:\n\n- get_task_struct is safe in an rcu context where we have just looked\n  up the task.\n\n- put_task_struct() simplifies into its old pre rcu self.\n\nThis reorganization also makes put_task_struct uncallable from modules as\nit is not exported but it does not appear to be called from any modules so\nthis should not be an issue, and is trivially fixed.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "158d9ebd19280582da172626ad3edda1a626dace",
      "tree": "5b821a6faf28d136b65ae30a56e7f731adc11c28",
      "parents": [
        "390e2ff07712468ce6600a43aa91e897b056ce12"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Mar 31 02:31:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:59 2006 -0800"
      },
      "message": "[PATCH] resurrect __put_task_struct\n\nThis just got nuked in mainline.  Bring it back because Eric\u0027s patches use it.\n\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d425b274ba83ba4e7746a40446ec0ba3267de51f",
      "tree": "73d3342be7ba8ef8d18a8c3cc9fea6e026e2bffa",
      "parents": [
        "7c4bb1f9b3788309e1159961c606ba0bdf7ed382"
      ],
      "author": {
        "name": "Con Kolivas",
        "email": "kernel@kolivas.org",
        "time": "Fri Mar 31 02:31:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:59 2006 -0800"
      },
      "message": "[PATCH] sched: activate SCHED BATCH expired\n\nTo increase the strength of SCHED_BATCH as a scheduling hint we can\nactivate batch tasks on the expired array since by definition they are\nlatency insensitive tasks.\n\nSigned-off-by: Con Kolivas \u003ckernel@kolivas.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3dee386e14045484a6c41c8f03a263f9d79de740",
      "tree": "4b1643508ad94981e8d4deb5136d0a626e60932d",
      "parents": [
        "db1b1fefc2cecbff2e4214062fa8c680cb6e7b7d"
      ],
      "author": {
        "name": "Con Kolivas",
        "email": "kernel@kolivas.org",
        "time": "Fri Mar 31 02:31:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:58 2006 -0800"
      },
      "message": "[PATCH] sched: cleanup task_activated()\n\nThe activated flag in task_struct is used to track different sleep types and\nits usage is somewhat obfuscated.  Convert the variable to an enum with more\ndescriptive names without altering the function.\n\nSigned-off-by: Con Kolivas \u003ckernel@kolivas.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "db1b1fefc2cecbff2e4214062fa8c680cb6e7b7d",
      "tree": "ad8e68882f7c36216e16ab264101c5da96ccd5c9",
      "parents": [
        "3055addadbe9bfb2365006a1c13fd342a8d30d52"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Fri Mar 31 02:31:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:58 2006 -0800"
      },
      "message": "[PATCH] sched: reduce overhead of calc_load\n\nCurrently, count_active_tasks() calls both nr_running() \u0026\nnr_interruptible().  Each of these functions does a \"for_each_cpu\" \u0026 reads\nvalues from the runqueue of each cpu.  Although this is not a lot of\ninstructions, each runqueue may be located on different node.  Depending on\nthe architecture, a unique TLB entry may be required to access each\nrunqueue.\n\nSince there may be more runqueues than cpu TLB entries, a scan of all\nrunqueues can trash the TLB.  Each memory reference incurs a TLB miss \u0026\nrefill.\n\nIn addition, the runqueue cacheline that contains nr_running \u0026\nnr_uninterruptible may be evicted from the cache between the two passes.\nThis causes unnecessary cache misses.\n\nCombining nr_running() \u0026 nr_interruptible() into a single function\nsubstantially reduces the TLB \u0026 cache misses on large systems.  This should\nhave no measureable effect on smaller systems.\n\nOn a 128p IA64 system running a memory stress workload, the new function\nreduced the overhead of calc_load() from 605 usec/call to 324 usec/call.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a7e5328a06a2beee3a2bbfaf87ce2a7bbe937de1",
      "tree": "168102a80e9b98d19e8bf39156d35dacdb253c3d",
      "parents": [
        "4a2c7a7837da1b91468e50426066d988050e4d56"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:44 2006 -0800"
      },
      "message": "[PATCH] cleanup __exit_signal-\u003ecleanup_sighand path\n\nMove \u0027tsk-\u003esighand \u003d NULL\u0027 from cleanup_sighand() to __exit_signal().  This\nmakes the exit path more understandable and allows us to do\ncleanup_sighand() outside of -\u003esiglock protected section.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "47e65328a7b1cdfc4e3102e50d60faf94ebba7d3",
      "tree": "78e00a5321cca87767806a91e623e71b5c6637c7",
      "parents": [
        "88531f725bd52e37a7be726860e4ff3f09031d89"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:44 2006 -0800"
      },
      "message": "[PATCH] pids: kill PIDTYPE_TGID\n\nThis patch kills PIDTYPE_TGID pid_type thus saving one hash table in\nkernel/pid.c and speeding up subthreads create/destroy a bit.  It is also a\npreparation for the further tref/pids rework.\n\nThis patch adds \u0027struct list_head thread_group\u0027 to \u0027struct task_struct\u0027\ninstead.\n\nWe don\u0027t detach group leader from PIDTYPE_PID namespace until another\nthread inherits it\u0027s -\u003epid \u003d\u003d -\u003etgid, so we are safe wrt premature\nfree_pidmap(-\u003etgid) call.\n\nCurrently there are no users of find_task_by_pid_type(PIDTYPE_TGID).\nShould the need arise, we can use find_task_by_pid()-\u003egroup_leader.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-By: Eric Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6a14c5c9da0b4c34b5be783403c54f0396fcfe77",
      "tree": "63e40e5761eb5327ae4f713b284c67128cb4d261",
      "parents": [
        "c81addc9d3a0ebff2155e0cd86f90820ab97147e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:43 2006 -0800"
      },
      "message": "[PATCH] move __exit_signal() to kernel/exit.c\n\n__exit_signal() is private to release_task() now.  I think it is better to\nmake it static in kernel/exit.c and export flush_sigqueue() instead - this\nfunction is much more simple and straightforward.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c81addc9d3a0ebff2155e0cd86f90820ab97147e",
      "tree": "56eb3a50f71e7a0e2a0f0daef4ec097375b06f8d",
      "parents": [
        "29ff471234d53c7235db287bc52f91884c2977c6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:43 2006 -0800"
      },
      "message": "[PATCH] rename __exit_sighand to cleanup_sighand\n\nCosmetic, rename __exit_sighand to cleanup_sighand and move it close to\ncopy_sighand().\n\nThis matches copy_signal/cleanup_signal naming, and I think it is easier to\nfollow.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6b3934ef52712ece50605dfc72e55d00c580831a",
      "tree": "5ec3c4f69a20880f75de6ff8d7d2f67d96328df3",
      "parents": [
        "7001510d0cbf51ad202dd2d0744f54104285cbb9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:42 2006 -0800"
      },
      "message": "[PATCH] copy_process: cleanup bad_fork_cleanup_signal\n\n__exit_signal() does important cleanups atomically under -\u003esiglock.  It is\nalso called from copy_process\u0027s error path.  This is not good, for example we\ncan\u0027t move __unhash_process() under -\u003esiglock for that reason.\n\nWe should not mix these 2 paths, just look at ugly \u0027if (p-\u003esighand)\u0027 under\n\u0027bad_fork_cleanup_sighand:\u0027 label.  For copy_process() case it is sufficient\nto just backout copy_signal(), nothing more.\n\nAgain, nobody can see this task yet.  For CLONE_THREAD case we just decrement\nsignal-\u003ecount, otherwise nobody can see this -\u003esignal and we can free it\nlockless.\n\nThis patch assumes it is safe to do exit_thread_group_keys() without\ntasklist_lock.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7001510d0cbf51ad202dd2d0744f54104285cbb9",
      "tree": "1df2a6930c460c12026231634b86d14b153a4a86",
      "parents": [
        "a9e88e84b5245da0a1dadb6ccca70ae84e93ccf6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:42 2006 -0800"
      },
      "message": "[PATCH] copy_process: cleanup bad_fork_cleanup_sighand\n\nThe only caller of exit_sighand(tsk) is copy_process\u0027s error path.  We can\ncall __exit_sighand() directly and kill exit_sighand().\n\nThis \u0027tsk\u0027 was not yet registered in pid_hash[] or init_task.tasks, it has no\nexternal references, nobody can see it, and\n\n\tIF (clone_flags \u0026 CLONE_SIGHAND)\n\t\tAt least \u0027current\u0027 has a reference to -\u003esighand, this\n\t\tmeans atomic_dec_and_test(sighand-\u003ecount) can\u0027t be true.\n\n\tELSE\n\t\tNobody can see this -\u003esighand, this means we can free it\n\t\twithout any locking.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f63ee72e0fb82e504a0489490babc7612c7cd6c2",
      "tree": "85167f8016d1f746135bf1777646a58c44376af1",
      "parents": [
        "aa1757f90bea3f598b6e5d04d922a6a60200f1da"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:42 2006 -0800"
      },
      "message": "[PATCH] introduce lock_task_sighand() helper\n\nAdd lock_task_sighand() helper and converts group_send_sig_info() to use\nit.  Hopefully we will have more users soon.\n\nThis patch also removes \u0027!sighand-\u003ecount\u0027 and \u0027!p-\u003eusage\u0027 checks, I think\nthey both are bogus, racy and unneeded (but probably it makes sense to\nrestore them as BUG_ON()s).\n\n-\u003esighand is cleared and it\u0027s -\u003ecount is decremented in release_task() with\nsighand-\u003esiglock held, so it is a bug to have \u0027!p-\u003eusage || !-\u003ecount\u0027 after\nwe already locked and verified it is the same.  On the other hand, an\nalready dead task without -\u003esighand can have a non-zero -\u003eusage due to\nptrace, for example.\n\nIf we read the stale value of -\u003esighand we must see the change after\nspin_lock(), because that change was done while holding that same old\n-\u003esighand.siglock.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "aa1757f90bea3f598b6e5d04d922a6a60200f1da",
      "tree": "4f8f3804b2595031d0b84de7086dc28375290f0d",
      "parents": [
        "1f09f9749cdde4e69f95d62d96d2e03f50b3353c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:42 2006 -0800"
      },
      "message": "[PATCH] convert sighand_cache to use SLAB_DESTROY_BY_RCU\n\nThis patch borrows a clever Hugh\u0027s \u0027struct anon_vma\u0027 trick.\n\nWithout tasklist_lock held we can\u0027t trust task-\u003esighand until we locked it\nand re-checked that it is still the same.\n\nBut this means we don\u0027t need to defer \u0027kmem_cache_free(sighand)\u0027.  We can\nreturn the memory to slab immediately, all we need is to be sure that\nsighand-\u003esiglock can\u0027t dissapear inside rcu protected section.\n\nTo do so we need to initialize -\u003esiglock inside ctor function,\nSLAB_DESTROY_BY_RCU does the rest.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "73b9ebfe126a4a886ee46cbab637374d7024668a",
      "tree": "d7ba00d4ce76b49c1569334956cd196b35977a04",
      "parents": [
        "c97d98931ac52ef110b62d9b75c6a6f2bfbc1898"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:41 2006 -0800"
      },
      "message": "[PATCH] pidhash: don\u0027t count idle threads\n\nfork_idle() does unhash_process() just after copy_process().  Contrary,\nboot_cpu\u0027s idle thread explicitely registers itself for each pid_type with nr\n\u003d 0.\n\ncopy_process() already checks p-\u003epid !\u003d 0 before process_counts++, I think we\ncan just skip attach_pid() calls and job control inits for idle threads and\nkill unhash_process().  We don\u0027t need to cleanup -\u003eproc_dentry in fork_idle()\nbecause with this patch idle threads are never hashed in\nkernel/pid.c:pid_hash[].\n\nWe don\u0027t need to hash pid \u003d\u003d 0 in pidmap_init().  free_pidmap() is never\ncalled with pid \u003d\u003d 0 arg, so it will never be reused.  So it is still possible\nto use pid \u003d\u003d 0 in any PIDTYPE_xxx namespace from kernel/pid.c\u0027s POV.\n\nHowever with this patch we don\u0027t hash pid \u003d\u003d 0 for PIDTYPE_PID case.  We still\nhave have PIDTYPE_PGID/PIDTYPE_SID entries with pid \u003d\u003d 0: /sbin/init and\nkernel threads which don\u0027t call daemonize().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c97d98931ac52ef110b62d9b75c6a6f2bfbc1898",
      "tree": "f811f8b2862692c2eb7ee92e62e8f0afcfd37a2d",
      "parents": [
        "9b678ece42893b53aae5ed7cb8d7cb261cacb72c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:41 2006 -0800"
      },
      "message": "[PATCH] kill SET_LINKS/REMOVE_LINKS\n\nBoth SET_LINKS() and SET_LINKS/REMOVE_LINKS() have exactly one caller, and\nthese callers already check thread_group_leader().\n\nThis patch kills theese macros, they mix two different things: setting\nprocess\u0027s parent and registering it in init_task.tasks list.  Callers are\nupdated to do these actions by hand.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8fafabd86f1b75ed3cc6a6ffbe6c3e53e3d8457d",
      "tree": "3ae1a8fc44870ac3046213b11cad4aa8b3ce5f04",
      "parents": [
        "d799f03597cabc6112acb518fc8ab4487aa4f953"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:41 2006 -0800"
      },
      "message": "[PATCH] remove add_parent()\u0027s parent argument\n\nadd_parent(p, parent) is always called with parent \u003d\u003d p-\u003eparent, and it makes\nno sense to do it differently.  This patch removes this argument.\n\nNo changes in affected .o files.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c99c5cb94319a601b5ec5ee31c331f84755dd74",
      "tree": "dca4d96ee6aa1cfbc36b3eaf060b14278e2bd0d7",
      "parents": [
        "1434261c07bcebd5ef8b8a18f919fdee533b84e0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 28 16:11:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:40 2006 -0800"
      },
      "message": "[PATCH] Remove dead kill_sl prototype from sched.h\n\nThe kill_sl function doesn\u0027t exist in the kernel so a prototype is completely\nunnecessary.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "34f192c6527f20c47ccec239e7d51a27691b93fc",
      "tree": "6c80416cf6a170a193f829e414051cc618b15ee3",
      "parents": [
        "2eec9ad91f71a3dbacece5c4fb5adc09fad53a96"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 27 01:16:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:49 2006 -0800"
      },
      "message": "[PATCH] lightweight robust futexes: compat\n\n32-bit syscall compatibility support.  (This patch also moves all futex\nrelated compat functionality into kernel/futex_compat.c.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0771dfefc9e538f077d0b43b6dec19a5a67d0e70",
      "tree": "696267e69228b7406b337f9651dedc75055a589e",
      "parents": [
        "e9056f13bfcdd054a0c3d730e4e096748d8a363a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 27 01:16:22 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:49 2006 -0800"
      },
      "message": "[PATCH] lightweight robust futexes: core\n\nAdd the core infrastructure for robust futexes: structure definitions, the new\nsyscalls and the do_exit() based cleanup mechanism.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nAcked-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "05cfb614ddbf3181540ce09d44d96486f8ba8d6a",
      "tree": "aafed98638557a4643141d906fbb2406f0764a94",
      "parents": [
        "df869b630d9d9131c10cf073fb61646048874b2f"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Sun Mar 26 01:38:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:03 2006 -0800"
      },
      "message": "[PATCH] hrtimers: remove data field\n\nThe nanosleep cleanup allows to remove the data field of hrtimer.  The\ncallback function can use container_of() to get it\u0027s own data.  Since the\nhrtimer structure is anyway embedded in other structures, this adds no\noverhead.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6687a97d4041f996f725902d2990e5de6ef5cbe5",
      "tree": "6ab982091cde7179d94cf592f9c669fd22d93a23",
      "parents": [
        "6a4d11c2abc57ed7ca42041e5f68ae4f7f640a81"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 24 03:18:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:30 2006 -0800"
      },
      "message": "[PATCH] timer-irq-driven soft-watchdog, cleanups\n\nMake the softlockup detector purely timer-interrupt driven, removing\nsoftirq-context (timer) dependencies.  This means that if the softlockup\nwatchdog triggers, it has truly observed a longer than 10 seconds\nscheduling delay of a SCHED_FIFO prio 99 task.\n\n(the patch also turns off the softlockup detector during the initial bootup\nphase and does small style fixes)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c61afb181c649754ea221f104e268cbacfc993e3",
      "tree": "870917b3f9175cf1663a2620d989856913cfb5f8",
      "parents": [
        "101a50019ae5e370d73984ee05d56dd3b08f330a"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:23 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread slab cache optimizations\n\nThe hooks in the slab cache allocator code path for support of NUMA\nmempolicies and cpuset memory spreading are in an important code path.  Many\nsystems will use neither feature.\n\nThis patch optimizes those hooks down to a single check of some bits in the\ncurrent tasks task_struct flags.  For non NUMA systems, this hook and related\ncode is already ifdef\u0027d out.\n\nThe optimization is done by using another task flag, set if the task is using\na non-default NUMA mempolicy.  Taking this flag bit along with the\nPF_SPREAD_PAGE and PF_SPREAD_SLAB flag bits added earlier in this \u0027cpuset\nmemory spreading\u0027 patch set, one can check for the combination of any of these\nspecial case memory placement mechanisms with a single test of the current\ntasks task_struct flags.\n\nThis patch also tightens up the code, to save a few bytes of kernel text\nspace, and moves some of it out of line.  Due to the nested inlines called\nfrom multiple places, we were ending up with three copies of this code, which\nonce we get off the main code path (for local node allocation) seems a bit\nwasteful of instruction memory.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "825a46af5ac171f9f41f794a0a00165588ba1589",
      "tree": "b690fe9d809d7b047f0393097fc79892e1217d98",
      "parents": [
        "8a39cc60bfa5a72f32d975729a354daca124f6de"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:22 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread basic implementation\n\nThis patch provides the implementation and cpuset interface for an alternative\nmemory allocation policy that can be applied to certain kinds of memory\nallocations, such as the page cache (file system buffers) and some slab caches\n(such as inode caches).\n\nThe policy is called \"memory spreading.\" If enabled, it spreads out these\nkinds of memory allocations over all the nodes allowed to a task, instead of\npreferring to place them on the node where the task is executing.\n\nAll other kinds of allocations, including anonymous pages for a tasks stack\nand data regions, are not affected by this policy choice, and continue to be\nallocated preferring the node local to execution, as modified by the NUMA\nmempolicy.\n\nThere are two boolean flag files per cpuset that control where the kernel\nallocates pages for the file system buffers and related in kernel data\nstructures.  They are called \u0027memory_spread_page\u0027 and \u0027memory_spread_slab\u0027.\n\nIf the per-cpuset boolean flag file \u0027memory_spread_page\u0027 is set, then the\nkernel will spread the file system buffers (page cache) evenly over all the\nnodes that the faulting task is allowed to use, instead of preferring to put\nthose pages on the node where the task is running.\n\nIf the per-cpuset boolean flag file \u0027memory_spread_slab\u0027 is set, then the\nkernel will spread some file system related slab caches, such as for inodes\nand dentries evenly over all the nodes that the faulting task is allowed to\nuse, instead of preferring to put those pages on the node where the task is\nrunning.\n\nThe implementation is simple.  Setting the cpuset flags \u0027memory_spread_page\u0027\nor \u0027memory_spread_cache\u0027 turns on the per-process flags PF_SPREAD_PAGE or\nPF_SPREAD_SLAB, respectively, for each task that is in the cpuset or\nsubsequently joins that cpuset.  In subsequent patches, the page allocation\ncalls for the affected page cache and slab caches are modified to perform an\ninline check for these flags, and if set, a call to a new routine\ncpuset_mem_spread_node() returns the node to prefer for the allocation.\n\nThe cpuset_mem_spread_node() routine is also simple.  It uses the value of a\nper-task rotor cpuset_mem_spread_rotor to select the next node in the current\ntasks mems_allowed to prefer for the allocation.\n\nThis policy can provide substantial improvements for jobs that need to place\nthread local data on the corresponding node, but that need to access large\nfile system data sets that need to be spread across the several nodes in the\njobs cpuset in order to fit.  Without this patch, especially for jobs that\nmight have one thread reading in the data set, the memory allocation across\nthe nodes in the jobs cpuset can become very uneven.\n\nA couple of Copyright year ranges are updated as well.  And a couple of email\naddresses that can be found in the MAINTAINERS file are removed.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2056a782f8e7e65fd4bfd027506b4ce1c5e9ccd4",
      "tree": "d4fe59a7ca0c110690937085548936a4535c39db",
      "parents": [
        "6dac40a7ce2483a47b54af07afebeb84131c7228"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 23 20:00:26 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Thu Mar 23 20:00:26 2006 +0100"
      },
      "message": "[PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "7cd9013be6c22f3ff6f777354f766c8c0b955e17",
      "tree": "328e45aadb4c5bc9b6cd530be03572070201f5e5",
      "parents": [
        "27d162e26a873883937b64526445877bd3341d23"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Mar 11 03:27:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 11 09:19:34 2006 -0800"
      },
      "message": "[PATCH] remove __put_task_struct_cb export again\n\nThe patch \u0027[PATCH] RCU signal handling\u0027 [1] added an export for\n__put_task_struct_cb, a put_task_struct helper newly introduced in that\npatch.  But the put_task_struct couldn\u0027t be used modular previously as\n__put_task_struct wasn\u0027t exported.  There are not callers of it in modular\ncode, and it shouldn\u0027t be exported because we don\u0027t want drivers to hold\nreferences to task_structs.\n\nThis patch removes the export and folds __put_task_struct into\n__put_task_struct_cb as there\u0027s no other caller.\n\n[1] http://www2.kernel.org/git/gitweb.cgi?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003de56d090310d7625ecb43a1eeebd479f04affb48b\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0551fbd29e16fccd46e41b7d01bf0f8f39b14212",
      "tree": "760783df743eec940d6f6cb848498580ddde03d8",
      "parents": [
        "f61388822a6040ff462c5f7260daa0f1017f2db0"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Tue Feb 28 16:59:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 28 20:53:44 2006 -0800"
      },
      "message": "[PATCH] Add mm-\u003etask_size and fix powerpc vdso\n\nThis patch adds mm-\u003etask_size to keep track of the task size of a given mm\nand uses that to fix the powerpc vdso so that it uses the mm task size to\ndecide what pages to fault in instead of the current thread flags (which\nbroke when ptracing).\n\n(akpm: I expect that mm_struct.task_size will become the way in which we\nfinally sort out the confusion between 32-bit processes and 32-bit mm\u0027s.  It\nmay need tweaks, but at this stage this patch is powerpc-only.)\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6077cb80cde4506720f9165eba99ee07438513f",
      "tree": "f4462e51cf0a14a113c0c524711636c8429424bb",
      "parents": [
        "f822566165dd46ff5de9bf895cfa6c51f53bb0c4"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Tue Feb 14 13:53:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 14 16:09:34 2006 -0800"
      },
      "message": "[PATCH] sched: revert \"filter affine wakeups\"\n\nRevert commit d7102e95b7b9c00277562c29aad421d2d521c5f6:\n\n    [PATCH] sched: filter affine wakeups\n\nApparently caused more than 10% performance regression for aim7 benchmark.\nThe setup in use is 16-cpu HP rx8620, 64Gb of memory and 12 MSA1000s with 144\ndisks.  Each disk is 72Gb with a single ext3 filesystem (courtesy of HP, who\nsupplied benchmark results).\n\nThe problem is, for aim7, the wake-up pattern is random, but it still needs\nload balancing action in the wake-up path to achieve best performance.  With\nthe above commit, lack of load balancing hurts that workload.\n\nHowever, for workloads like database transaction processing, the requirement\nis exactly opposite.  In the wake up path, best performance is achieved with\nabsolutely zero load balancing.  We simply wake up the process on the CPU that\nit was previously run.  Worst performance is obtained when we do load\nbalancing at wake up.\n\nThere isn\u0027t an easy way to auto detect the workload characteristics.  Ingo\u0027s\nearlier patch that detects idle CPU and decide whether to load balance or not\ndoesn\u0027t perform with aim7 either since all CPUs are busy (it causes even\nbigger perf.  regression).\n\nRevert commit d7102e95b7b9c00277562c29aad421d2d521c5f6, which causes more\nthan 10% performance regression with aim7.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ac95f2f90e022c16d293d7978faddf7e779a1a9",
      "tree": "dcc1769ed614585e956c20c718506cdfe4b0bf92",
      "parents": [
        "c70d3d703ad94727dab2a3664aeee33d71e00715"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Feb 09 22:41:50 2006 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Feb 09 16:17:36 2006 -0800"
      },
      "message": "[PATCH] do_sigaction: cleanup -\u003esa_mask manipulation\n\nClear unblockable signals beforehand.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "150256d8aadb3a337c31efa9e175cbd25bf06b06",
      "tree": "8cd7e2a0bc6af23984682c5ea3ca687809580c5a",
      "parents": [
        "a60fc5190a31d98508ea6a76f74217f4104e74b7"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Jan 18 17:43:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:29 2006 -0800"
      },
      "message": "[PATCH] Generic sys_rt_sigsuspend()\n\nThe TIF_RESTORE_SIGMASK flag allows us to have a generic implementation of\nsys_rt_sigsuspend() instead of duplicating it for each architecture.  This\nprovides such an implementation and makes arch/powerpc use it.\n\nIt also tidies up the ppc32 sys_sigsuspend() to use TIF_RESTORE_SIGMASK.\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b0a9499c3dd50d333e2aedb7e894873c58da3785",
      "tree": "1b9610020884091984ce8290c70bebdc3e7bb09b",
      "parents": [
        "2d0cfb527944c2cfee2cffab14f52d483e329fcf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 14 13:20:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:25:20 2006 -0800"
      },
      "message": "[PATCH] sched: add new SCHED_BATCH policy\n\nAdd a new SCHED_BATCH (3) scheduling policy: such tasks are presumed\nCPU-intensive, and will acquire a constant +5 priority level penalty.  Such\npolicy is nice for workloads that are non-interactive, but which do not\nwant to give up their nice levels.  The policy is also useful for workloads\nthat want a deterministic scheduling policy without interactivity causing\nextra preemptions (between that workload\u0027s tasks).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9fc658763bf992e778243ebe898b03746151ab88",
      "tree": "9ae10dfbf30c2301e8b7ae2845c725078088521b",
      "parents": [
        "d7102e95b7b9c00277562c29aad421d2d521c5f6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Thu Jan 12 01:05:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jan 12 09:08:50 2006 -0800"
      },
      "message": "[PATCH] missing helper - task_stack_page()\n\nPatchset annotates arch/* uses of -\u003ethread_info.  Ones that really are about\naccess of thread_info of given process are simply switched to\ntask_thread_info(task); ones that deal with access to objects on stack are\nswitched to new helper - task_stack_page().  A _lot_ of the latter are\nactually open-coded instances of \"find where pt_regs are\"; those are\nconsolidated into task_pt_regs(task) (many architectures actually have such\nhelper already).\n\nNote that these annotations are not mandatory - any code not converted to\nthese helpers still works.  However, they clean up a lot of places and have\nactually caught a number of bugs, so converting out of tree ports would be a\ngood idea...\n\nAs an example of breakage caught by that stuff, see i386 pt_regs mess - we\nused to have it open-coded in a bunch of places and when back in April Stas\nhad fixed a bug in copy_thread(), the rest had been left out of sync.  That\nrequired two followup patches (the latest - just before 2.6.15) _and_ still\nhad left /proc/*/stat eip field broken.  Try ps -eo eip on i386 and watch the\njunk...\n\nThis patch:\n\nnew helper - task_stack_page(task).  Returns pointer to the memory object\ncontaining task stack; usually thread_info of task sits in the beginning\nof that object.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d7102e95b7b9c00277562c29aad421d2d521c5f6",
      "tree": "3ad3d94c329095962c6cd6dcea41e1ccf2db5a7e",
      "parents": [
        "198e2f181163233b379dc7ce8a6d7516b84042e7"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Thu Jan 12 01:05:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jan 12 09:08:50 2006 -0800"
      },
      "message": "[PATCH] sched: filter affine wakeups\n\n\r)\n\nFrom: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\n\nTrack the last waker CPU, and only consider wakeup-balancing if there\u0027s a\nmatch between current waker CPU and the previous waker CPU.  This ensures\nthat there is some correlation between two subsequent wakeup events before\nwe move the task.  Should help random-wakeup workloads on large SMP\nsystems, by reducing the migration attempts by a factor of nr_cpus.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "198e2f181163233b379dc7ce8a6d7516b84042e7",
      "tree": "cc4067ca1c81034ba8d214b7ff4c39f2f5be66ee",
      "parents": [
        "4dc7a0bbeb6882ad665e588e82fabe5bb4645f2f"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Thu Jan 12 01:05:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jan 12 09:08:50 2006 -0800"
      },
      "message": "[PATCH] scheduler cache-hot-autodetect\n\n\r)\n\nFrom: Ingo Molnar \u003cmingo@elte.hu\u003e\n\nThis is the latest version of the scheduler cache-hot-auto-tune patch.\n\nThe first problem was that detection time scaled with O(N^2), which is\nunacceptable on larger SMP and NUMA systems. To solve this:\n\n- I\u0027ve added a \u0027domain distance\u0027 function, which is used to cache\n  measurement results. Each distance is only measured once. This means\n  that e.g. on NUMA distances of 0, 1 and 2 might be measured, on HT\n  distances 0 and 1, and on SMP distance 0 is measured. The code walks\n  the domain tree to determine the distance, so it automatically follows\n  whatever hierarchy an architecture sets up. This cuts down on the boot\n  time significantly and removes the O(N^2) limit. The only assumption\n  is that migration costs can be expressed as a function of domain\n  distance - this covers the overwhelming majority of existing systems,\n  and is a good guess even for more assymetric systems.\n\n  [ People hacking systems that have assymetries that break this\n    assumption (e.g. different CPU speeds) should experiment a bit with\n    the cpu_distance() function. Adding a -\u003emigration_distance factor to\n    the domain structure would be one possible solution - but lets first\n    see the problem systems, if they exist at all. Lets not overdesign. ]\n\nAnother problem was that only a single cache-size was used for measuring\nthe cost of migration, and most architectures didnt set that variable\nup. Furthermore, a single cache-size does not fit NUMA hierarchies with\nL3 caches and does not fit HT setups, where different CPUs will often\nhave different \u0027effective cache sizes\u0027. To solve this problem:\n\n- Instead of relying on a single cache-size provided by the platform and\n  sticking to it, the code now auto-detects the \u0027effective migration\n  cost\u0027 between two measured CPUs, via iterating through a wide range of\n  cachesizes. The code searches for the maximum migration cost, which\n  occurs when the working set of the test-workload falls just below the\n  \u0027effective cache size\u0027. I.e. real-life optimized search is done for\n  the maximum migration cost, between two real CPUs.\n\n  This, amongst other things, has the positive effect hat if e.g. two\n  CPUs share a L2/L3 cache, a different (and accurate) migration cost\n  will be found than between two CPUs on the same system that dont share\n  any caches.\n\n(The reliable measurement of migration costs is tricky - see the source\nfor details.)\n\nFurthermore i\u0027ve added various boot-time options to override/tune\nmigration behavior.\n\nFirstly, there\u0027s a blanket override for autodetection:\n\n\tmigration_cost\u003d1000,2000,3000\n\nwill override the depth 0/1/2 values with 1msec/2msec/3msec values.\n\nSecondly, there\u0027s a global factor that can be used to increase (or\ndecrease) the autodetected values:\n\n\tmigration_factor\u003d120\n\nwill increase the autodetected values by 20%. This option is useful to\ntune things in a workload-dependent way - e.g. if a workload is\ncache-insensitive then CPU utilization can be maximized by specifying\nmigration_factor\u003d0.\n\nI\u0027ve tested the autodetection code quite extensively on x86, on 3\nP3/Xeon/2MB, and the autodetected values look pretty good:\n\nDual Celeron (128K L2 cache):\n\n ---------------------\n migration cost matrix (max_cache_size: 131072, cpu: 467 MHz):\n ---------------------\n           [00]    [01]\n [00]:     -     1.7(1)\n [01]:   1.7(1)    -\n ---------------------\n cacheflush times [2]: 0.0 (0) 1.7 (1784008)\n ---------------------\n\nHere the slow memory subsystem dominates system performance, and even\nthough caches are small, the migration cost is 1.7 msecs.\n\nDual HT P4 (512K L2 cache):\n\n ---------------------\n migration cost matrix (max_cache_size: 524288, cpu: 2379 MHz):\n ---------------------\n           [00]    [01]    [02]    [03]\n [00]:     -     0.4(1)  0.0(0)  0.4(1)\n [01]:   0.4(1)    -     0.4(1)  0.0(0)\n [02]:   0.0(0)  0.4(1)    -     0.4(1)\n [03]:   0.4(1)  0.0(0)  0.4(1)    -\n ---------------------\n cacheflush times [2]: 0.0 (33900) 0.4 (448514)\n ---------------------\n\nHere it can be seen that there is no migration cost between two HT\nsiblings (CPU#0/2 and CPU#1/3 are separate physical CPUs). A fast memory\nsystem makes inter-physical-CPU migration pretty cheap: 0.4 msecs.\n\n8-way P3/Xeon [2MB L2 cache]:\n\n ---------------------\n migration cost matrix (max_cache_size: 2097152, cpu: 700 MHz):\n ---------------------\n           [00]    [01]    [02]    [03]    [04]    [05]    [06]    [07]\n [00]:     -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)\n [01]:  19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)\n [02]:  19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)\n [03]:  19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1) 19.2(1)\n [04]:  19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1) 19.2(1)\n [05]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1) 19.2(1)\n [06]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -    19.2(1)\n [07]:  19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1) 19.2(1)    -\n ---------------------\n cacheflush times [2]: 0.0 (0) 19.2 (19281756)\n ---------------------\n\nThis one has huge caches and a relatively slow memory subsystem - so the\nmigration cost is 19 msecs.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: \u003cwilder@us.ibm.com\u003e\nSigned-off-by: John Hawkes \u003chawkes@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c59ede7b78db329949d9cdcd7064e22d357560ef",
      "tree": "f9dc9d464fdad5bfd464d983e77c1af031389dda",
      "parents": [
        "e16885c5ad624a6efe1b1bf764e075d75f65a788"
      ],
      "author": {
        "name": "Randy.Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] move capable() to capability.h\n\n- Move capable() from sched.h to capability.h;\n\n- Use \u003clinux/capability.h\u003e where capable() is used\n\t(in include/, block/, ipc/, kernel/, a few drivers/,\n\tmm/, security/, \u0026 sound/;\n\tmany more drivers/ to go)\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e16885c5ad624a6efe1b1bf764e075d75f65a788",
      "tree": "de137e799ddc0a696bb288b34fade65af1708a5e",
      "parents": [
        "a9fad4cc3975573a359a92ad047f5995d8391631"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 11 12:17:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] uninline capable()\n\nUninline capable().  Saves 2K of kernel text on a generic .config, and 1K on a\ntiny config.  In addition it makes the use of capable more consistent between\nCONFIG_SECURITY and !CONFIG_SECURITY\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c29c4c5f28616f2a87f0e6499aa9776d9be58ad",
      "tree": "897af28f11c412f9d784df2c86e5f659588b4f30",
      "parents": [
        "d974837ae076101d33a59eefc6bfef923eaa0e32"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Jan 09 20:54:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:02:02 2006 -0800"
      },
      "message": "[PATCH] include/linux/sched.h: no need to guard the normalize_rt_tasks() prototype\n\nThere\u0027s no need to guard the normalize_rt_tasks() prototype with an #ifdef\nCONFIG_MAGIC_SYSRQ.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2ff678b8da6478d861c1b0ecb3ac14575760e906",
      "tree": "0ca983ce820ac8bb9f6e8b193926e0804116a7e0",
      "parents": [
        "df78488de7befd387e9d060da6e18bb5d1cb882c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jan 09 20:52:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:38 2006 -0800"
      },
      "message": "[PATCH] hrtimer: switch itimers to hrtimer\n\nswitch itimers to a hrtimers-based implementation\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "408894ee4dd4debfdedd472eb4d8414892fc90f6",
      "tree": "b324c1086b804cc05c2839f9d9675eef2bc7c949",
      "parents": [
        "f3f54ffa703c6298240ffd69616451d645bae4d5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 09 15:59:20 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:20 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, debugging code\n\nmutex implementation - add debugging code.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\n"
    },
    {
      "commit": "b5f545c880a2a47947ba2118b2509644ab7a2969",
      "tree": "8720e02262b0ff6309ae79603f6c63965296d378",
      "parents": [
        "cab8eb594e84b434d20412fc5a3985b0bee3ab9f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sun Jan 08 01:02:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:53 2006 -0800"
      },
      "message": "[PATCH] keys: Permit running process to instantiate keys\n\nMake it possible for a running process (such as gssapid) to be able to\ninstantiate a key, as was requested by Trond Myklebust for NFS4.\n\nThe patch makes the following changes:\n\n (1) A new, optional key type method has been added. This permits a key type\n     to intercept requests at the point /sbin/request-key is about to be\n     spawned and do something else with them - passing them over the\n     rpc_pipefs files or netlink sockets for instance.\n\n     The uninstantiated key, the authorisation key and the intended operation\n     name are passed to the method.\n\n (2) The callout_info is no longer passed as an argument to /sbin/request-key\n     to prevent unauthorised viewing of this data using ps or by looking in\n     /proc/pid/cmdline.\n\n     This means that the old /sbin/request-key program will not work with the\n     patched kernel as it will expect to see an extra argument that is no\n     longer there.\n\n     A revised keyutils package will be made available tomorrow.\n\n (3) The callout_info is now attached to the authorisation key. Reading this\n     key will retrieve the information.\n\n (4) A new field has been added to the task_struct. This holds the\n     authorisation key currently active for a thread. Searches now look here\n     for the caller\u0027s set of keys rather than looking for an auth key in the\n     lowest level of the session keyring.\n\n     This permits a thread to be servicing multiple requests at once and to\n     switch between them. Note that this is per-thread, not per-process, and\n     so is usable in multithreaded programs.\n\n     The setting of this field is inherited across fork and exec.\n\n (5) A new keyctl function (KEYCTL_ASSUME_AUTHORITY) has been added that\n     permits a thread to assume the authority to deal with an uninstantiated\n     key. Assumption is only permitted if the authorisation key associated\n     with the uninstantiated key is somewhere in the thread\u0027s keyrings.\n\n     This function can also clear the assumption.\n\n (6) A new magic key specifier has been added to refer to the currently\n     assumed authorisation key (KEY_SPEC_REQKEY_AUTH_KEY).\n\n (7) Instantiation will only proceed if the appropriate authorisation key is\n     assumed first. The assumed authorisation key is discarded if\n     instantiation is successful.\n\n (8) key_validate() is moved from the file of request_key functions to the\n     file of permissions functions.\n\n (9) The documentation is updated.\n\nFrom: \u003cValdis.Kletnieks@vt.edu\u003e\n\n    Build fix.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Alexander Zangerl \u003caz@bond.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d4829cd5b4bd1ea58ba1bebad44d562f4027c290",
      "tree": "c60f85fdb0233d7a8574b203aeac96d7570c583f",
      "parents": [
        "2d89c929078588aa9b9c674ef03ee9aa816b59b8"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@us.ibm.com",
        "time": "Sun Jan 08 01:01:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:40 2006 -0800"
      },
      "message": "[PATCH] remove get_task_struct_rcu()\n\nThe latest set of signal-RCU patches does not use get_task_struct_rcu().\nAttached is a patch that removes it.\n\nSigned-off-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e56d090310d7625ecb43a1eeebd479f04affb48b",
      "tree": "2f479215dff4a2d8f3a9ed85200a5bc4f51534be",
      "parents": [
        "4369ef3c3e9d3bd9b879580678778f558d481e90"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 08 01:01:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:40 2006 -0800"
      },
      "message": "[PATCH] RCU signal handling\n\nRCU tasklist_lock and RCU signal handling: send signals RCU-read-locked\ninstead of tasklist_lock read-locked.  This is a scalability improvement on\nSMP and a preemption-latency improvement under PREEMPT_RCU.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "930d915252edda7042c944ed3c30194a2f9fe163",
      "tree": "620452f11a9949943765b7a28e5b919f40f32b12",
      "parents": [
        "21eac81f252fe31c3cf64b805a1e8652192f3a3b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:00:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:41 2006 -0800"
      },
      "message": "[PATCH] Swap Migration V5: PF_SWAPWRITE to allow writing to swap\n\nAdd PF_SWAPWRITE to control a processes permission to write to swap.\n\n- Use PF_SWAPWRITE in may_write_to_queue() instead of checking for kswapd\n  and pdflush\n\n- Set PF_SWAPWRITE flag for kswapd and pdflush\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d3cb487149bd706aa6aeb02042332a450978dc1c",
      "tree": "69051e0f9853314cf275e4e800faad950e3053c3",
      "parents": [
        "070f80326a215d8e6c4fd6f175e28eb446c492bc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:11:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:29 2006 -0800"
      },
      "message": "[PATCH] atomic_long_t \u0026 include/asm-generic/atomic.h V2\n\nSeveral counters already have the need to use 64 atomic variables on 64 bit\nplatforms (see mm_counter_t in sched.h).  We have to do ugly ifdefs to fall\nback to 32 bit atomic on 32 bit platforms.\n\nThe VM statistics patch that I am working on will also make more extensive\nuse of atomic64.\n\nThis patch introduces a new type atomic_long_t by providing definitions in\nasm-generic/atomic.h that works similar to the c \"long\" type.  Its 32 bits\non 32 bit platforms and 64 bits on 64 bit platforms.\n\nAlso cleans up the determination of the mm_counter_t in sched.h.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a9d9baa1e819b2f92f9cfa5240f766c535e636a6",
      "tree": "0ae15e5b1071b395affa0ac9abf6fd746ad60b0e",
      "parents": [
        "e0f39591cc178026607fcbbe9a53be435fe8285d"
      ],
      "author": {
        "name": "Ashok Raj",
        "email": "ashok.raj@intel.com",
        "time": "Mon Nov 28 13:43:46 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:23 2005 -0800"
      },
      "message": "[PATCH] clean up lock_cpu_hotplug() in cpufreq\n\nThere are some callers in cpufreq hotplug notify path that the lowest\nfunction calls lock_cpu_hotplug().  The lock is already held during\ncpu_up() and cpu_down() calls when the notify calls are broadcast to\nregistered clients.\n\nIdeally if possible, we could disable_preempt() at the highest caller and\nmake sure we dont sleep in the path down in cpufreq-\u003edriver_target() calls\nbut the calls are so intertwined and cumbersome to cleanup.\n\nHence we consistently use lock_cpu_hotplug() and unlock_cpu_hotplug() in\nall places.\n\n - Removed export of cpucontrol semaphore and made it static.\n - removed explicit uses of up/down with lock_cpu_hotplug()\n   so we can keep track of the the callers in same thread context and\n   just keep refcounts without calling a down() that causes a deadlock.\n - Removed current_in_hotplug() uses\n - Removed PF_HOTPLUG_CPU in sched.h introduced for the current_in_hotplug()\n   temporary workaround.\n\nTested with insmod of cpufreq_stat.ko, and logical online/offline\nto make sure we dont have any hang situations.\n\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nCc: Zwane Mwaikambo \u003czwane@linuxpower.ca\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: \"Siddha, Suresh B\" \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "20dcae32439384b6863c626bb3b2a09bed65b33e",
      "tree": "9750c39119447fb32963448bf1935e1ba22b2f9d",
      "parents": [
        "4557398f8cbaf9f254cff747534b4724c7f75c4f"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Nov 13 16:07:33 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:16 2005 -0800"
      },
      "message": "[PATCH] aio: remove kioctx from mm_struct\n\nSync iocbs have a life cycle that don\u0027t need a kioctx.  Their retrying, if\nany, is done in the context of their owner who has allocated them on the\nstack.\n\nThe sole user of a sync iocb\u0027s ctx reference was aio_complete() checking for\nan elevated iocb ref count that could never happen.  No path which grabs an\niocb ref has access to sync iocbs.\n\nIf we were to implement sync iocb cancelation it would be done by the owner of\nthe iocb using its on-stack reference.\n\nRemoving this chunk from aio_complete allows us to remove the entire kioctx\ninstance from mm_struct, reducing its size by a third.  On a i386 testing box\nthe slab size went from 768 to 504 bytes and from 5 to 8 per page.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f037360f2ed111fe89a8f5cb6ba351f4e9934e53",
      "tree": "5978627d4252a7faf6d4fb9577fe8aa55e5db648",
      "parents": [
        "10ebffde3d3916026974352b7900e44afe2b243f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@parcelfarce.linux.theplanet.co.uk",
        "time": "Sun Nov 13 16:06:57 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:13 2005 -0800"
      },
      "message": "[PATCH] m68k: thread_info header cleanup\n\na) in smp_lock.h #include of sched.h and spinlock.h moved under #ifdef\n   CONFIG_LOCK_KERNEL.\n\nb) interrupt.h now explicitly pulls sched.h (not via smp_lock.h from\n   hardirq.h as it used to)\n\nc) in three more places we need changes to compensate for (a) - one place\n   in arch/sparc needs string.h now, hardirq.h needs forward declaration of\n   task_struct and preempt.h needs direct include of thread_info.h.\n\nd) thread_info-related helpers in sched.h and thread_info.h put under\n   ifndef __HAVE_THREAD_FUNCTIONS.  Obviously safe.\n\nSigned-off-by: Al Viro \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "10ebffde3d3916026974352b7900e44afe2b243f",
      "tree": "ac88fa33694f5bea1b6958e1e56bcd4c9b95b002",
      "parents": [
        "a1261f54611ec4ad6a7ab7080f86747e3ac3685b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@parcelfarce.linux.theplanet.co.uk",
        "time": "Sun Nov 13 16:06:56 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:13 2005 -0800"
      },
      "message": "[PATCH] m68k: introduce setup_thread_stack() and end_of_stack()\n\nencapsulates the rest of arch-dependent operations with thread_info access.\nTwo new helpers - setup_thread_stack() and end_of_stack().  For normal case\nthe former consists of copying thread_info of parent to new thread_info and\nthe latter returns pointer immediately past the end of thread_info.\n\nSigned-off-by: Al Viro \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a1261f54611ec4ad6a7ab7080f86747e3ac3685b",
      "tree": "8a65c419da590e3712543f69284fb5f8cd613a37",
      "parents": [
        "7feacd53347c04aee789ba5d632eda0c3fc421c4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@parcelfarce.linux.theplanet.co.uk",
        "time": "Sun Nov 13 16:06:55 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:13 2005 -0800"
      },
      "message": "[PATCH] m68k: introduce task_thread_info\n\nnew helper - task_thread_info(task).  On platforms that have thread_info\nallocated separately (i.e.  in default case) it simply returns\ntask-\u003ethread_info.  m68k wants (and for good reasons) to embed its thread_info\ninto task_struct.  So it will (in later patch) have task_thread_info() of its\nown.  For now we just add a macro for generic case and convert existing\ninstances of its body in core kernel to uses of new macro.  Obviously safe -\nall normal architectures get the same preprocessor output they used to get.\n\nSigned-off-by: Al Viro \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90d45d17f3e68608ac7ba8fc3d7acce022a19c8e",
      "tree": "615b2f21c3e02e0ec901febd180014fed64a6a01",
      "parents": [
        "330d57fb98a916fa8e1363846540dd420e99499a"
      ],
      "author": {
        "name": "Ashok Raj",
        "email": "ashok.raj@intel.com",
        "time": "Tue Nov 08 21:34:24 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:55:50 2005 -0800"
      },
      "message": "[PATCH] cpu hotplug: fix locking in cpufreq drivers\n\nWhen calling target drivers to set frequency, we take cpucontrol lock.\nWhen we modified the code to accomodate CPU hotplug, there was an attempt\nto take a double lock of cpucontrol leading to a deadlock.  Since the\ncurrent thread context is already holding the cpucontrol lock, we dont need\nto make another attempt to acquire it.\n\nNow we leave a trace in current-\u003eflags indicating current thread already is\nunder cpucontrol lock held, so we dont attempt to do this another time.\n\nThanks to Andrew Morton for the beating:-)\n\nFrom: Brice Goglin \u003cBrice.Goglin@ens-lyon.org\u003e\n\n  Build fix\n\n(akpm: this patch is still unpleasant.  Ashok continues to look for a cleaner\nsolution, doesn\u0027t he?  ;))\n\nSigned-off-by: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@ens-lyon.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "621d31219d9a788bda924a0613048053f3f5f211",
      "tree": "9fb9846fdd999ba04c436aa84c7da0d8233ac545",
      "parents": [
        "b67a1b9e4bf878aa5d4b6b44cb5a251a2f425f0d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Oct 30 15:03:45 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:31 2005 -0800"
      },
      "message": "[PATCH] cleanup the usage of SEND_SIG_xxx constants\n\nThis patch simplifies some checks for magic siginfo values.  It should not\nchange the behaviour in any way.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4098f9918e068e51fed1727f6ba80efcec372378",
      "tree": "0495f14e29ad93c165988be49c70ec658fffd086",
      "parents": [
        "70a6a0cb92f24fd6bbe2e75299168909f735676a"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Oct 30 15:03:21 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:28 2005 -0800"
      },
      "message": "[PATCH] sched: hardcode non-smp set_cpus_allowed\n\nSimplify the UP (1 CPU) implementatin of set_cpus_allowed.\n\nThe one CPU is hardcoded to be cpu 0 - so just test for that bit, and avoid\nhaving to pick up the cpu_online_map.\n\nAlso, unexport cpu_online_map: it was only needed for set_cpus_allowed().\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "053199edf54f685e7dea765b60d4d5e9070dadec",
      "tree": "a2d12a8b7f07b59048da992e7ae9405bc4ee292b",
      "parents": [
        "5aa15b5f27fc2c404530c6c8eabdb8437deb3163"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Oct 30 15:02:30 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:21 2005 -0800"
      },
      "message": "[PATCH] cpusets: dual semaphore locking overhaul\n\nOverhaul cpuset locking.  Replace single semaphore with two semaphores.\n\nThe suggestion to use two locks was made by Roman Zippel.\n\nBoth locks are global.  Code that wants to modify cpusets must first\nacquire the exclusive manage_sem, which allows them read-only access to\ncpusets, and holds off other would-be modifiers.  Before making actual\nchanges, the second semaphore, callback_sem must be acquired as well.  Code\nthat needs only to query cpusets must acquire callback_sem, which is also a\nglobal exclusive lock.\n\nThe earlier problems with double tripping are avoided, because it is\nallowed for holders of manage_sem to nest the second callback_sem lock, and\nonly callback_sem is needed by code called from within __alloc_pages(),\nwhere the double tripping had been possible.\n\nThis is not quite the same as a normal read/write semaphore, because\nobtaining read-only access with intent to change must hold off other such\nattempts, while allowing read-only access w/o such intention.  Changing\ncpusets involves several related checks and changes, which must be done\nwhile allowing read-only queries (to avoid the double trip), but while\nensuring nothing changes (holding off other would be modifiers.)\n\nThis overhaul of cpuset locking also makes careful use of task_lock() to\nguard access to the task-\u003ecpuset pointer, closing a couple of race\nconditions noticed while reading this code (thanks, Roman).  I\u0027ve never\nseen these races fail in any use or test.\n\nSee further the comments in the code.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f412ac08c9861b4791af0145934c22f1458686da",
      "tree": "5e515efa116f3968c2caa75bc691a197199313a8",
      "parents": [
        "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: fix rss and mmlist locking\n\nA couple of oddities were guarded by page_table_lock, no longer properly\nguarded when that is split.\n\nThe mm_counters of file_rss and anon_rss: make those an atomic_t, or an\natomic64_t if the architecture supports it, in such a case.  Definitions by\ncourtesy of Christoph Lameter: who spent considerable effort on more scalable\nways of counting, but found insufficient benefit in practice.\n\nAnd adding an mm with swap to the mmlist for swapoff: the list is well-\nguarded by its own lock, but the list_empty check now has to be repeated\ninside it.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f449952bc8bde7fbc73c6d20dff92b627a21f8b9",
      "tree": "2d7dc4b7381274b1111c76e436b4a81d119f656a",
      "parents": [
        "365e9c87a982c03d0af3886e29d877f581b59611"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:19 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: mm_struct hiwaters moved\n\nSlight and timid rearrangement of mm_struct: hiwater_rss and hiwater_vm were\ntacked on the end, but it seems better to keep them near _file_rss, _anon_rss\nand total_vm, in the same cacheline on those arches verified.\n\nThere are likely to be more profitable rearrangements, but less obvious (is it\ngood or bad that saved_auxv[AT_VECTOR_SIZE] isolates cpu_vm_mask and context\nfrom many others?), needing serious instrumentation.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "365e9c87a982c03d0af3886e29d877f581b59611",
      "tree": "d06c1918ca9fe6677d7e4e869555e095004274f7",
      "parents": [
        "861f2fb8e796022b4928cab9c74fca6681a1c557"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: update_hiwaters just in time\n\nupdate_mem_hiwater has attracted various criticisms, in particular from those\nconcerned with mm scalability.  Originally it was called whenever rss or\ntotal_vm got raised.  Then many of those callsites were replaced by a timer\ntick call from account_system_time.  Now Frank van Maarseveen reports that to\nbe found inadequate.  How about this?  Works for Frank.\n\nReplace update_mem_hiwater, a poor combination of two unrelated ops, by macros\nupdate_hiwater_rss and update_hiwater_vm.  Don\u0027t attempt to keep\nmm-\u003ehiwater_rss up to date at timer tick, nor every time we raise rss (usually\nby 1): those are hot paths.  Do the opposite, update only when about to lower\nrss (usually by many), or just before final accounting in do_exit.  Handle\nmm-\u003ehiwater_vm in the same way, though it\u0027s much less of an issue.  Demand\nthat whoever collects these hiwater statistics do the work of taking the\nmaximum with rss or total_vm.\n\nAnd there has been no collector of these hiwater statistics in the tree.  The\nnew convention needs an example, so match Frank\u0027s usage by adding a VmPeak\nline above VmSize to /proc/\u003cpid\u003e/status, and also a VmHWM line above VmRSS\n(High-Water-Mark or High-Water-Memory).\n\nThere was a particular anomaly during mremap move, that hiwater_vm might be\ncaptured too high.  A fleeting such anomaly remains, but it\u0027s quickly\ncorrected now, whereas before it would stick.\n\nWhat locking?  None: if the app is racy then these statistics will be racy,\nit\u0027s not worth any overhead to make them exact.  But whenever it suits,\nhiwater_vm is updated under exclusive mmap_sem, and hiwater_rss under\npage_table_lock (for now) or with preemption disabled (later on): without\ngoing to any trouble, minimize the time between reading current values and\nupdating, to minimize those occasions when a racing thread bumps a count up\nand back down in between.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4294621f41a85497019fae64341aa5351a1921b7",
      "tree": "fdeb7eb44384a99d0679ffa6de5019bab0ea2166",
      "parents": [
        "404351e67a9facb475abf1492245374a28d13e90"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: rss \u003d file_rss + anon_rss\n\nI was lazy when we added anon_rss, and chose to change as few places as\npossible.  So currently each anonymous page has to be counted twice, in rss\nand in anon_rss.  Which won\u0027t be so good if those are atomic counts in some\nconfigurations.\n\nChange that around: keep file_rss and anon_rss separately, and add them\ntogether (with get_mm_rss macro) when the total is needed - reading two\natomics is much cheaper than updating two atomics.  And update anon_rss\nupfront, typically in memory.c, not tucked away in page_add_anon_rmap.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46113830a18847cff8da73005e57bc49c2f95a56",
      "tree": "93946fc290d9481e7055217ff497583647d1e4d4",
      "parents": [
        "094804c5a132f04c12dd4902ee15c64362e5c1af"
      ],
      "author": {
        "name": "Harald Welte",
        "email": "laforge@gnumonks.org",
        "time": "Mon Oct 10 19:44:29 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 10 16:16:33 2005 -0700"
      },
      "message": "[PATCH] Fix signal sending in usbdevio on async URB completion\n\nIf a process issues an URB from userspace and (starts to) terminate\nbefore the URB comes back, we run into the issue described above.  This\nis because the urb saves a pointer to \"current\" when it is posted to the\ndevice, but there\u0027s no guarantee that this pointer is still valid\nafterwards.\n\nIn fact, there are three separate issues:\n\n1) the pointer to \"current\" can become invalid, since the task could be\n   completely gone when the URB completion comes back from the device.\n\n2) Even if the saved task pointer is still pointing to a valid task_struct,\n   task_struct-\u003esighand could have gone meanwhile.\n\n3) Even if the process is perfectly fine, permissions may have changed,\n   and we can no longer send it a signal.\n\nSo what we do instead, is to save the PID and uid\u0027s of the process, and\nintroduce a new kill_proc_info_as_uid() function.\n\nSigned-off-by: Harald Welte \u003claforge@gnumonks.org\u003e\n[ Fixed up types and added symbol exports ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4a8342d233a39ee582e9f7260e12d2f5fd194a05",
      "tree": "cf0972e1deec828977794cc300597bb448535d4c",
      "parents": [
        "aa55a08687059aa169d10a313c41f238c2070488"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 29 15:18:21 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 29 15:18:21 2005 -0700"
      },
      "message": "Revert task flag re-ordering, add comments\n\nRoland points out that the flags end up having non-obvious dependencies\nelsewhere, so revert aa55a08687059aa169d10a313c41f238c2070488 and add\nsome comments about why things are as they are.\n\nWe\u0027ll just have to fix up the broken comparisons. Roland has a patch.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "aa55a08687059aa169d10a313c41f238c2070488",
      "tree": "9eaad6fc01e385778142b451a22bef99af9ecc68",
      "parents": [
        "b20fd6508c565df04a6b5816f17e03b04d4f924d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Sep 29 19:58:53 2005 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 29 09:05:52 2005 -0700"
      },
      "message": "[PATCH] fix TASK_STOPPED vs TASK_NONINTERACTIVE interaction\n\ndo_signal_stop:\n\n\tfor_each_thread(t) {\n\t\tif (t-\u003estate \u003c TASK_STOPPED)\n\t\t\t++sig-\u003egroup_stop_count;\n\t}\n\nHowever, TASK_NONINTERACTIVE \u003e TASK_STOPPED, so this loop will not\ncount TASK_INTERRUPTIBLE | TASK_NONINTERACTIVE threads.\n\nSee also wait_task_stopped(), which checks -\u003estate \u003e TASK_STOPPED.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\n\n[ We really probably should always use the appropriate bitmasks to test\n  task states, not do it like this. Using something like\n\n\t#define TASK_RUNNABLE (TASK_RUNNING | TASK_INTERRUPTIBLE | \\\n\t\t\t\tTASK_UNINTERRUPTIBLE | TASK_NONINTERACTIVE)\n\n  and then doing \"if (task-\u003estate \u0026 TASK_RUNNABLE)\" or similar. But the\n  ordering of the task states is historical, and keeping the ordering\n  does make sense regardless. ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "498d0c5711094b0e1fd93f5355d270ccebdec706",
      "tree": "e155f09b6f5b752171638028e574947e275cc3d9",
      "parents": [
        "921717a2a1cde78c9b2aa971c16510d63efe7320"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Sep 13 01:25:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 13 08:22:29 2005 -0700"
      },
      "message": "[PATCH] set_current_state() commentary\n\nExplain the mysteries of set_current_state().\n\nQuoth Linus:\n\n The scheduler itself never needs the memory barrier at all.\n\n The barrier is needed only if the user itself ends up testing some other\n thing afterwards, ie if you have\n\n \tset_process_state(TASK_INTERRUPTIBLE);\n \tif (still_need_to_sleep())\n \t\tschedule();\n\n then the \"still_need_to_sleep()\" thing may test flags and wakeup events,\n and then you _may_ want to (and often do) make sure that the write of\n TASK_INTERRUPTIBLE is serialized wrt the reads of any wakeup data (since\n the wakeup may have happened on another CPU).\n\n So the comment is somewhat wrong. We don\u0027t really _care_ whether the state\n propagates out to other CPU\u0027s since all of our actions are purely local,\n and there is nothing we do that is conditional on any other CPU: we\u0027re\n going to sleep unconditionally, and the scheduler only cares about _our_\n state, not about somebody elses state.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b3426599af9524104be6938bcb1fcaab314781c7",
      "tree": "c6d354bddb5b8cd298d139b60a9257ebd8323b90",
      "parents": [
        "f24ec7f6c6278c0ea4c00efe96d50b1e66796c44"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Mon Sep 12 04:30:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Sep 12 09:16:27 2005 -0700"
      },
      "message": "[PATCH] cpuset semaphore depth check optimize\n\nOptimize the deadlock avoidance check on the global cpuset\nsemaphore cpuset_sem.  Instead of adding a depth counter to the\ntask struct of each task, rather just two words are enough, one\nto store the depth and the other the current cpuset_sem holder.\n\nThanks to Nikita Danilov for the idea.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\n\n[ We may want to change this further, but at least it\u0027s now\n  a totally internal decision to the cpusets code ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a2a979821b6ab75a4f143cfaa1c4672cc259ec10",
      "tree": "4e327a4a8c14829d4addf8a09e13355e0cf565a4",
      "parents": [
        "9fe66dfd8846706ff11ed7990d06c92644973bd8"
      ],
      "author": {
        "name": "Keith Owens",
        "email": "kaos@sgi.com",
        "time": "Sun Sep 11 17:19:06 2005 +1000"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Sun Sep 11 14:01:30 2005 -0700"
      },
      "message": "[PATCH] MCA/INIT: scheduler hooks\n\nScheduler hooks to see/change which process is deemed to be on a cpu.\n\nSigned-off-by: Keith Owens \u003ckaos@sgi.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "64ed93a268bc18fa6f72f61420d0e0022c5e38d1",
      "tree": "1332ce542510b88014767f3536d9150710a2f3f9",
      "parents": [
        "672289e9faa56acd4e39ad866ea258b7be7c99a6"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sat Sep 10 00:27:21 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:36 2005 -0700"
      },
      "message": "[PATCH] add schedule_timeout_{,un}interruptible() interfaces\n\nAdd schedule_timeout_{,un}interruptible() interfaces so that\nschedule_timeout() callers don\u0027t have to worry about forgetting to add the\nset_current_state() call beforehand.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d79fc0fc6645b0cf5cd980da76942ca6d6300fa4",
      "tree": "e74aca1df1d37dbd7af66636a4e39a3f7e1af479",
      "parents": [
        "95cdf3b799a481969a48d69a1a52916ad5da6694"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 10 00:26:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:22 2005 -0700"
      },
      "message": "[PATCH] sched: TASK_NONINTERACTIVE\n\nThis patch implements a task state bit (TASK_NONINTERACTIVE), which can be\nused by blocking points to mark the task\u0027s wait as \"non-interactive\".  This\ndoes not mean the task will be considered a CPU-hog - the wait will simply\nnot have an effect on the waiting task\u0027s priority - positive or negative\nalike.  Right now only pipe_wait() will make use of it, because it\u0027s a\ncommon source of not-so-interactive waits (kernel compilation jobs, etc.).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "4247bdc60048018b98f71228b45cfbc5f5270c86"
}
