)]}'
{
  "log": [
    {
      "commit": "d098adfb7d281258173a43151483e52e21761021",
      "tree": "29a28d972770cdcd6b316d4ab43a5829f4fbe795",
      "parents": [
        "8af7c12436803291c90295259db23d371a7ad9cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 20 22:09:01 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 22 22:58:58 2010 +0200"
      },
      "message": "fscache: drop references to slow-work\n\nfscache no longer uses slow-work.  Drop references to it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "8af7c12436803291c90295259db23d371a7ad9cc",
      "tree": "5e75360876ac5783a3e64bd35a1715847d90e9ce",
      "parents": [
        "8b8edefa2fffbff97f9eec8b70e78ae23abad1a0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 20 22:09:01 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 22 22:58:47 2010 +0200"
      },
      "message": "fscache: convert operation to use workqueue instead of slow-work\n\nMake fscache operation to use only workqueue instead of combination of\nworkqueue and slow-work.  FSCACHE_OP_SLOW is dropped and\nFSCACHE_OP_FAST is renamed to FSCACHE_OP_ASYNC and uses newly added\nfscache_op_wq workqueue to execute op-\u003eprocessor().\nfscache_operation_init_slow() is dropped and fscache_operation_init()\nnow takes @processor argument directly.\n\n* Unbound workqueue is used.\n\n* fscache_retrieval_work() is no longer necessary as OP_ASYNC now does\n  the equivalent thing.\n\n* sysctl fscache.operation_max_active added to control concurrency.\n  The default value is nr_cpus clamped between 2 and\n  WQ_UNBOUND_MAX_ACTIVE.\n\n* debugfs support is dropped for now.  Tracing API based debug\n  facility is planned to be added.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "8b8edefa2fffbff97f9eec8b70e78ae23abad1a0",
      "tree": "7f0efac8adb9c9ed7be8af63e51510954f1c51dc",
      "parents": [
        "e120153ddf8620fd0a194d301e9c5a8b28483bb5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 20 22:09:01 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 22 22:58:34 2010 +0200"
      },
      "message": "fscache: convert object to use workqueue instead of slow-work\n\nMake fscache object state transition callbacks use workqueue instead\nof slow-work.  New dedicated unbound CPU workqueue fscache_object_wq\nis created.  get/put callbacks are renamed and modified to take\n@object and called directly from the enqueue wrapper and the work\nfunction.  While at it, make all open coded instances of get/put to\nuse fscache_get/put_object().\n\n* Unbound workqueue is used.\n\n* work_busy() output is printed instead of slow-work flags in object\n  debugging outputs.  They mean basically the same thing bit-for-bit.\n\n* sysctl fscache.object_max_active added to control concurrency.  The\n  default value is nr_cpus clamped between 4 and\n  WQ_UNBOUND_MAX_ACTIVE.\n\n* slow_work_sleep_till_thread_needed() is replaced with fscache\n  private implementation fscache_object_sleep_till_congested() which\n  waits on fscache_object_wq congestion.\n\n* debugfs support is dropped for now.  Tracing API based debug\n  facility is planned to be added.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "e120153ddf8620fd0a194d301e9c5a8b28483bb5",
      "tree": "953ef1a61ca29d0486a6c8c3bb72dd8bbc080419",
      "parents": [
        "f2e005aaff4878a8ea93d5fb033a21389b72579a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 22 14:14:25 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 22 22:39:22 2010 +0200"
      },
      "message": "workqueue: fix how cpu number is stored in work-\u003edata\n\nOnce a work starts execution, its data contains the cpu number it was\non instead of pointing to cwq.  This is added by commit 7a22ad75\n(workqueue: carry cpu number in work data once execution starts) to\nreliably determine the work was last on even if the workqueue itself\nwas destroyed inbetween.\n\nWhether data points to a cwq or contains a cpu number was\ndistinguished by comparing the value against PAGE_OFFSET.  The\nassumption was that a cpu number should be below PAGE_OFFSET while a\npointer to cwq should be above it.  However, on architectures which\nuse separate address spaces for user and kernel spaces, this doesn\u0027t\nhold as PAGE_OFFSET is zero.\n\nFix it by using an explicit flag, WORK_STRUCT_CWQ, to mark what the\ndata field contains.  If the flag is set, it\u0027s pointing to a cwq;\notherwise, it contains a cpu number.\n\nReported on s390 and microblaze during linux-next testing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Sachin Sant \u003csachinp@in.ibm.com\u003e\nReported-by: Michal Simek \u003cmichal.simek@petalogix.com\u003e\nReported-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nTested-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nTested-by: Michal Simek \u003cmonstr@monstr.eu\u003e\n"
    },
    {
      "commit": "c7fc77f78f16d138ca997ce096a62f46e2e9420a",
      "tree": "0478e5dde66f6ff86d4baa0fe541748e1a6f1ed2",
      "parents": [
        "f34217977d717385a3e9fd7018ac39fade3964c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:51 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 11:00:08 2010 +0200"
      },
      "message": "workqueue: remove WQ_SINGLE_CPU and use WQ_UNBOUND instead\n\nWQ_SINGLE_CPU combined with @max_active of 1 is used to achieve full\nordering among works queued to a workqueue.  The same can be achieved\nusing WQ_UNBOUND as unbound workqueues always use the gcwq for\nWORK_CPU_UNBOUND.  As @max_active is always one and benefits from cpu\nlocality isn\u0027t accessible anyway, serving them with unbound workqueues\nshould be fine.\n\nDrop WQ_SINGLE_CPU support and use WQ_UNBOUND instead.  Note that most\nsingle thread workqueue users will be converted to use multithread or\nnon-reentrant instead and only the ones which require strict ordering\nwill keep using WQ_UNBOUND + @max_active of 1.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f34217977d717385a3e9fd7018ac39fade3964c0",
      "tree": "7e05645e911eea15b33a368b91ac82ae12884e6d",
      "parents": [
        "bdbc5dd7de5d07d6c9d3536e598956165a031d4c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:51 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 11:00:02 2010 +0200"
      },
      "message": "workqueue: implement unbound workqueue\n\nThis patch implements unbound workqueue which can be specified with\nWQ_UNBOUND flag on creation.  An unbound workqueue has the following\nproperties.\n\n* It uses a dedicated gcwq with a pseudo CPU number WORK_CPU_UNBOUND.\n  This gcwq is always online and disassociated.\n\n* Workers are not bound to any CPU and not concurrency managed.  Works\n  are dispatched to workers as soon as possible and the only applied\n  limitation is @max_active.  IOW, all unbound workqeueues are\n  implicitly high priority.\n\nUnbound workqueues can be used as simple execution context provider.\nContexts unbound to any cpu are served as soon as possible.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "bdbc5dd7de5d07d6c9d3536e598956165a031d4c",
      "tree": "1f0f263126c2fc2e07a032df1e9ad3fecb534c9a",
      "parents": [
        "ad72cf9885c536e3adae03f8337557ac9dd1e4bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:51 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:59:57 2010 +0200"
      },
      "message": "workqueue: prepare for WQ_UNBOUND implementation\n\nIn preparation of WQ_UNBOUND addition, make the following changes.\n\n* Add WORK_CPU_* constants for pseudo cpu id numbers used (currently\n  only WORK_CPU_NONE) and use them instead of NR_CPUS.  This is to\n  allow another pseudo cpu id for unbound cpu.\n\n* Reorder WQ_* flags.\n\n* Make workqueue_struct-\u003ecpu_wq a union which contains a percpu\n  pointer, regular pointer and an unsigned long value and use\n  kzalloc/kfree() in UP allocation path.  This will be used to\n  implement unbound workqueues which will use only one cwq on SMPs.\n\n* Move alloc_cwqs() allocation after initialization of wq fields, so\n  that alloc_cwqs() has access to wq-\u003eflags.\n\n* Trivial relocation of wq local variables in freeze functions.\n\nThese changes don\u0027t cause any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "ad72cf9885c536e3adae03f8337557ac9dd1e4bb",
      "tree": "e93af7f241987ffe365792c0130d182b0ac890d1",
      "parents": [
        "d313dd85ad846bc768d58e9ceb28588f917f4c9a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:52 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:59:24 2010 +0200"
      },
      "message": "libata: take advantage of cmwq and remove concurrency limitations\n\nlibata has two concurrency related limitations.\n\na. ata_wq which is used for polling PIO has single thread per CPU.  If\n   there are multiple devices doing polling PIO on the same CPU, they\n   can\u0027t be executed simultaneously.\n\nb. ata_aux_wq which is used for SCSI probing has single thread.  In\n   cases where SCSI probing is stalled for extended period of time\n   which is possible for ATAPI devices, this will stall all probing.\n\n#a is solved by increasing maximum concurrency of ata_wq.  Please note\nthat polling PIO might be used under allocation path and thus needs to\nbe served by a separate wq with a rescuer.\n\n#b is solved by using the default wq instead and achieving exclusion\nvia per-port mutex.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "fb0e7beb5c1b6fb4da786ba709d7138373d5fb22",
      "tree": "e222b2238ed691ced6eaeb47733f7e4c2b9a3c37",
      "parents": [
        "649027d73a6309ac34dc2886362e662bd73456dc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:15 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:15 2010 +0200"
      },
      "message": "workqueue: implement cpu intensive workqueue\n\nThis patch implements cpu intensive workqueue which can be specified\nwith WQ_CPU_INTENSIVE flag on creation.  Works queued to a cpu\nintensive workqueue don\u0027t participate in concurrency management.  IOW,\nit doesn\u0027t contribute to gcwq-\u003enr_running and thus doesn\u0027t delay\nexcution of other works.\n\nNote that although cpu intensive works won\u0027t delay other works, they\ncan be delayed by other works.  Combine with WQ_HIGHPRI to avoid being\ndelayed by other works too.\n\nAs the name suggests this is useful when using workqueue for cpu\nintensive works.  Workers executing cpu intensive works are not\nconsidered for workqueue concurrency management and left for the\nscheduler to manage.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "649027d73a6309ac34dc2886362e662bd73456dc",
      "tree": "4faf07773683ff5ec2b120d9070dbbb590199057",
      "parents": [
        "dcd989cb73ab0f7b722d64ab6516f101d9f43f88"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "message": "workqueue: implement high priority workqueue\n\nThis patch implements high priority workqueue which can be specified\nwith WQ_HIGHPRI flag on creation.  A high priority workqueue has the\nfollowing properties.\n\n* A work queued to it is queued at the head of the worklist of the\n  respective gcwq after other highpri works, while normal works are\n  always appended at the end.\n\n* As long as there are highpri works on gcwq-\u003eworklist,\n  [__]need_more_worker() remains %true and process_one_work() wakes up\n  another worker before it start executing a work.\n\nThe above two properties guarantee that works queued to high priority\nworkqueues are dispatched to workers and start execution as soon as\npossible regardless of the state of other works.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcd989cb73ab0f7b722d64ab6516f101d9f43f88",
      "tree": "8c2f14e708367cb67dd9d29f2da0f7e5f454cf31",
      "parents": [
        "d320c03830b17af64e4547075003b1eeb274bc6c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "message": "workqueue: implement several utility APIs\n\nImplement the following utility APIs.\n\n workqueue_set_max_active()\t: adjust max_active of a wq\n workqueue_congested()\t\t: test whether a wq is contested\n work_cpu()\t\t\t: determine the last / current cpu of a work\n work_busy()\t\t\t: query whether a work is busy\n\n* Anton Blanchard fixed missing ret initialization in work_busy().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\n"
    },
    {
      "commit": "d320c03830b17af64e4547075003b1eeb274bc6c",
      "tree": "9917a69dc2efa6f37c54097c4651408faf4b343b",
      "parents": [
        "b71ab8c2025caef8db719aa41af0ed735dc543cd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "message": "workqueue: s/__create_workqueue()/alloc_workqueue()/, and add system workqueues\n\nThis patch makes changes to make new workqueue features available to\nits users.\n\n* Now that workqueue is more featureful, there should be a public\n  workqueue creation function which takes paramters to control them.\n  Rename __create_workqueue() to alloc_workqueue() and make 0\n  max_active mean WQ_DFL_ACTIVE.  In the long run, all\n  create_workqueue_*() will be converted over to alloc_workqueue().\n\n* To further unify access interface, rename keventd_wq to system_wq\n  and export it.\n\n* Add system_long_wq and system_nrt_wq.  The former is to host long\n  running works separately (so that flush_scheduled_work() dosen\u0027t\n  take so long) and the latter guarantees any queued work item is\n  never executed in parallel by multiple CPUs.  These will be used by\n  future patches to update workqueue users.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b71ab8c2025caef8db719aa41af0ed735dc543cd",
      "tree": "8cc2c6164acf5fe82e8d8d05924590cb80fe088d",
      "parents": [
        "e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "message": "workqueue: increase max_active of keventd and kill current_is_keventd()\n\nDefine WQ_MAX_ACTIVE and create keventd with max_active set to half of\nit which means that keventd now can process upto WQ_MAX_ACTIVE / 2 - 1\nworks concurrently.  Unless some combination can result in dependency\nloop longer than max_active, deadlock won\u0027t happen and thus it\u0027s\nunnecessary to check whether current_is_keventd() before trying to\nschedule a work.  Kill current_is_keventd().\n\n(Lockdep annotations are broken.  We need lock_map_acquire_read_norecurse())\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c",
      "tree": "9854d22294699d9ec27e28f70c05f479e5640abd",
      "parents": [
        "d302f0178223802a1e496ba90c66193b7721c9c1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:14 2010 +0200"
      },
      "message": "workqueue: implement concurrency managed dynamic worker pool\n\nInstead of creating a worker for each cwq and putting it into the\nshared pool, manage per-cpu workers dynamically.\n\nWorks aren\u0027t supposed to be cpu cycle hogs and maintaining just enough\nconcurrency to prevent work processing from stalling due to lack of\nprocessing context is optimal.  gcwq keeps the number of concurrent\nactive workers to minimum but no less.  As long as there\u0027s one or more\nrunning workers on the cpu, no new worker is scheduled so that works\ncan be processed in batch as much as possible but when the last\nrunning worker blocks, gcwq immediately schedules new worker so that\nthe cpu doesn\u0027t sit idle while there are works to be processed.\n\ngcwq always keeps at least single idle worker around.  When a new\nworker is necessary and the worker is the last idle one, the worker\nassumes the role of \"manager\" and manages the worker pool -\nie. creates another worker.  Forward-progress is guaranteed by having\ndedicated rescue workers for workqueues which may be necessary while\ncreating a new worker.  When the manager is having problem creating a\nnew worker, mayday timer activates and rescue workers are summoned to\nthe cpu and execute works which might be necessary to create new\nworkers.\n\nTrustee is expanded to serve the role of manager while a CPU is being\ntaken down and stays down.  As no new works are supposed to be queued\non a dead cpu, it just needs to drain all the existing ones.  Trustee\ncontinues to try to create new workers and summon rescuers as long as\nthere are pending works.  If the CPU is brought back up while the\ntrustee is still trying to drain the gcwq from the previous offlining,\nthe trustee will kill all idles ones and tell workers which are still\nbusy to rebind to the cpu, and pass control over to gcwq which assumes\nthe manager role as necessary.\n\nConcurrency managed worker pool reduces the number of workers\ndrastically.  Only workers which are necessary to keep the processing\ngoing are created and kept.  Also, it reduces cache footprint by\navoiding unnecessarily switching contexts between different workers.\n\nPlease note that this patch does not increase max_active of any\nworkqueue.  All workqueues can still only process one work per cpu.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "18aa9effad4adb2c1efe123af4eb24fec9f59b30",
      "tree": "76975b37ae0ef1ebf460aaab68359ed7a12fe37a",
      "parents": [
        "7a22ad757ec75186ad43a5b4670fa7423ee8f480"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "message": "workqueue: implement WQ_NON_REENTRANT\n\nWith gcwq managing all the workers and work-\u003edata pointing to the last\ngcwq it was on, non-reentrance can be easily implemented by checking\nwhether the work is still running on the previous gcwq on queueing.\nImplement it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "7a22ad757ec75186ad43a5b4670fa7423ee8f480",
      "tree": "698807765421a46dcb5e2daa609336a61d1cdea5",
      "parents": [
        "8cca0eea3964b72b14e8c3f88e3a40bef7b9113e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "message": "workqueue: carry cpu number in work data once execution starts\n\nTo implement non-reentrant workqueue, the last gcwq a work was\nexecuted on must be reliably obtainable as long as the work structure\nis valid even if the previous workqueue has been destroyed.\n\nTo achieve this, work-\u003edata will be overloaded to carry the last cpu\nnumber once execution starts so that the previous gcwq can be located\nreliably.  This means that cwq can\u0027t be obtained from work after\nexecution starts but only gcwq.\n\nImplement set_work_{cwq|cpu}(), get_work_[g]cwq() and\nclear_work_data() to set work data to the cpu number when starting\nexecution, access the overloaded work data and clear it after\ncancellation.\n\nqueue_delayed_work_on() is updated to preserve the last cpu while\nin-flight in timer and other callers which depended on getting cwq\nfrom work after execution starts are converted to depend on gcwq\ninstead.\n\n* Anton Blanchard fixed compile error on powerpc due to missing\n  linux/threads.h include.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Anton Blanchard \u003canton@samba.org\u003e\n"
    },
    {
      "commit": "502ca9d819792e7d79b6e002afe9094c641fe410",
      "tree": "5f06a8845643f1007ce9807636cde4057f8761a9",
      "parents": [
        "db7bccf45cb87522096b8f43144e31ca605a9f24"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:13 2010 +0200"
      },
      "message": "workqueue: make single thread workqueue shared worker pool friendly\n\nReimplement st (single thread) workqueue so that it\u0027s friendly to\nshared worker pool.  It was originally implemented by confining st\nworkqueues to use cwq of a fixed cpu and always having a worker for\nthe cpu.  This implementation isn\u0027t very friendly to shared worker\npool and suboptimal in that it ends up crossing cpu boundaries often.\n\nReimplement st workqueue using dynamic single cpu binding and\ncwq-\u003elimit.  WQ_SINGLE_THREAD is replaced with WQ_SINGLE_CPU.  In a\nsingle cpu workqueue, at most single cwq is bound to the wq at any\ngiven time.  Arbitration is done using atomic accesses to\nwq-\u003esingle_cpu when queueing a work.  Once bound, the binding stays\ntill the workqueue is drained.\n\nNote that the binding is never broken while a workqueue is frozen.\nThis is because idle cwqs may have works waiting in delayed_works\nqueue while frozen.  On thaw, the cwq is restarted if there are any\ndelayed works or unbound otherwise.\n\nWhen combined with max_active limit of 1, single cpu workqueue has\nexactly the same execution properties as the original single thread\nworkqueue while allowing sharing of per-cpu workers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "db7bccf45cb87522096b8f43144e31ca605a9f24",
      "tree": "d16cc764243fb6feaa4c9dea5398e139c8012124",
      "parents": [
        "c8e55f360210c1bc49bea5d62bc3939b7ee13483"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "message": "workqueue: reimplement CPU hotplugging support using trustee\n\nReimplement CPU hotplugging support using trustee thread.  On CPU\ndown, a trustee thread is created and each step of CPU down is\nexecuted by the trustee and workqueue_cpu_callback() simply drives and\nwaits for trustee state transitions.\n\nCPU down operation no longer waits for works to be drained but trustee\nsticks around till all pending works have been completed.  If CPU is\nbrought back up while works are still draining,\nworkqueue_cpu_callback() tells trustee to step down and tell workers\nto rebind to the cpu.\n\nAs it\u0027s difficult to tell whether cwqs are empty if it\u0027s freezing or\nfrozen, trustee doesn\u0027t consider draining to be complete while a gcwq\nis freezing or frozen (tracked by new GCWQ_FREEZING flag).  Also,\nworkers which get unbound from their cpu are marked with WORKER_ROGUE.\n\nTrustee based implementation doesn\u0027t bring any new feature at this\npoint but it will be used to manage worker pool when dynamic shared\nworker pool is implemented.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a0a1a5fd4fb15ec61117c759fe9f5c16c53d9e9c",
      "tree": "6df8eddcaeff6cde892c8cae6bdfa7653805e144",
      "parents": [
        "1e19ffc63dbbaea7a7d1c63d99c38d3e5a4c7edf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "message": "workqueue: reimplement workqueue freeze using max_active\n\nCurrently, workqueue freezing is implemented by marking the worker\nfreezeable and calling try_to_freeze() from dispatch loop.\nReimplement it using cwq-\u003elimit so that the workqueue is frozen\ninstead of the worker.\n\n* workqueue_struct-\u003esaved_max_active is added which stores the\n  specified max_active on initialization.\n\n* On freeze, all cwq-\u003emax_active\u0027s are quenched to zero.  Freezing is\n  complete when nr_active on all cwqs reach zero.\n\n* On thaw, all cwq-\u003emax_active\u0027s are restored to wq-\u003esaved_max_active\n  and the worklist is repopulated.\n\nThis new implementation allows having single shared pool of workers\nper cpu.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1e19ffc63dbbaea7a7d1c63d99c38d3e5a4c7edf",
      "tree": "357690d6017682a4a21824f7d3f34a83406a136d",
      "parents": [
        "affee4b294a0fc97d67c8a77dc080c4dd262a79e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "message": "workqueue: implement per-cwq active work limit\n\nAdd cwq-\u003enr_active, cwq-\u003emax_active and cwq-\u003edelayed_work.  nr_active\ncounts the number of active works per cwq.  A work is active if it\u0027s\nflushable (colored) and is on cwq\u0027s worklist.  If nr_active reaches\nmax_active, new works are queued on cwq-\u003edelayed_work and activated\nlater as works on the cwq complete and decrement nr_active.\n\ncwq-\u003emax_active can be specified via the new @max_active parameter to\n__create_workqueue() and is set to 1 for all workqueues for now.  As\neach cwq has only single worker now, this double queueing doesn\u0027t\ncause any behavior difference visible to its users.\n\nThis will be used to reimplement freeze/thaw and implement shared\nworker pool.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "affee4b294a0fc97d67c8a77dc080c4dd262a79e",
      "tree": "5b3fd79640ad7940e0abbed193a192d3919f259d",
      "parents": [
        "c34056a3fdde777c079cc8a70785c2602f2586cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:12 2010 +0200"
      },
      "message": "workqueue: reimplement work flushing using linked works\n\nA work is linked to the next one by having WORK_STRUCT_LINKED bit set\nand these links can be chained.  When a linked work is dispatched to a\nworker, all linked works are dispatched to the worker\u0027s newly added\n-\u003escheduled queue and processed back-to-back.\n\nCurrently, as there\u0027s only single worker per cwq, having linked works\ndoesn\u0027t make any visible behavior difference.  This change is to\nprepare for multiple shared workers per cpu.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "73f53c4aa732eced5fcb1844d3d452c30905f20f",
      "tree": "6185ebab8337d33de9ca9c3d19fc5217bc4ee6bc",
      "parents": [
        "0f900049cbe2767d47c2a62b54f0e822e1d66840"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:11 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:11 2010 +0200"
      },
      "message": "workqueue: reimplement workqueue flushing using color coded works\n\nReimplement workqueue flushing using color coded works.  wq has the\ncurrent work color which is painted on the works being issued via\ncwqs.  Flushing a workqueue is achieved by advancing the current work\ncolors of cwqs and waiting for all the works which have any of the\nprevious colors to drain.\n\nCurrently there are 16 possible colors, one is reserved for no color\nand 15 colors are useable allowing 14 concurrent flushes.  When color\nspace gets full, flush attempts are batched up and processed together\nwhen color frees up, so even with many concurrent flushers, the new\nimplementation won\u0027t build up huge queue of flushers which has to be\nprocessed one after another.\n\nOnly works which are queued via __queue_work() are colored.  Works\nwhich are directly put on queue using insert_work() use NO_COLOR and\ndon\u0027t participate in workqueue flushing.  Currently only works used\nfor work-specific flush fall in this category.\n\nThis new implementation leaves only cleanup_workqueue_thread() as the\nuser of flush_cpu_workqueue().  Just make its users use\nflush_workqueue() and kthread_stop() directly and kill\ncleanup_workqueue_thread().  As workqueue flushing doesn\u0027t use barrier\nrequest anymore, the comment describing the complex synchronization\naround it in cleanup_workqueue_thread() is removed together with the\nfunction.\n\nThis new implementation is to allow having and sharing multiple\nworkers per cpu.\n\nPlease note that one more bit is reserved for a future work flag by\nthis patch.  This is to avoid shifting bits and updating comments\nlater.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0f900049cbe2767d47c2a62b54f0e822e1d66840",
      "tree": "b7d2ce3e00ef49c038d0641a860b98b4c24fb203",
      "parents": [
        "1537663f5763892cacf1409ac0efef1b4f332d1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:11 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:11 2010 +0200"
      },
      "message": "workqueue: update cwq alignement\n\nwork-\u003edata field is used for two purposes.  It points to cwq it\u0027s\nqueued on and the lower bits are used for flags.  Currently, two bits\nare reserved which is always safe as 4 byte alignment is guaranteed on\nevery architecture.  However, future changes will need more flag bits.\n\nOn SMP, the percpu allocator is capable of honoring larger alignment\n(there are other users which depend on it) and larger alignment works\njust fine.  On UP, percpu allocator is a thin wrapper around\nkzalloc/kfree() and don\u0027t honor alignment request.\n\nThis patch introduces WORK_STRUCT_FLAG_BITS and implements\nalloc/free_cwqs() which guarantees max(1 \u003c\u003c WORK_STRUCT_FLAG_BITS,\n__alignof__(unsigned long long) alignment both on SMP and UP.  On SMP,\nsimply wrapping percpu allocator is enough.  On UP, extra space is\nallocated so that cwq can be aligned and the original pointer can be\nstored after it which is used in the free path.\n\n* Alignment problem on UP is reported by Michal Simek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReported-by: Michal Simek \u003cmichal.simek@petalogix.com\u003e\n"
    },
    {
      "commit": "22df02bb3fab24af97bff4c69cc6fd8529fc66fe",
      "tree": "125b00589e5abe4dc941a1dba467cd50563ad195",
      "parents": [
        "97e37d7b9e65a6ac939f796f91081135b7a08acc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "message": "workqueue: define masks for work flags and conditionalize STATIC flags\n\nWork flags are about to see more traditional mask handling.  Define\nWORK_STRUCT_*_BIT as the bit position constant and redefine\nWORK_STRUCT_* as bit masks.  Also, make WORK_STRUCT_STATIC_* flags\nconditional\n\nWhile at it, re-define these constants as enums and use\nWORK_STRUCT_STATIC instead of hard-coding 2 in\nWORK_DATA_STATIC_INIT().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "97e37d7b9e65a6ac939f796f91081135b7a08acc",
      "tree": "1125644ee13ecf0825688502aa4a7495008cc88e",
      "parents": [
        "4690c4ab56c71919893ca25252f2dd65b58188c7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "message": "workqueue: merge feature parameters into flags\n\nCurrently, __create_workqueue_key() takes @singlethread and\n@freezeable paramters and store them separately in workqueue_struct.\nMerge them into a single flags parameter and field and use\nWQ_FREEZEABLE and WQ_SINGLE_THREAD.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "4690c4ab56c71919893ca25252f2dd65b58188c7",
      "tree": "dcdb5b7dd2104db2dc8babe66064dd6f5022247f",
      "parents": [
        "c790bce0481857412c964c5e9d46d56e41c4b051"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:10 2010 +0200"
      },
      "message": "workqueue: misc/cosmetic updates\n\nMake the following updates in preparation of concurrency managed\nworkqueue.  None of these changes causes any visible behavior\ndifference.\n\n* Add comments and adjust indentations to data structures and several\n  functions.\n\n* Rename wq_per_cpu() to get_cwq() and swap the position of two\n  parameters for consistency.  Convert a direct per_cpu_ptr() access\n  to wq-\u003ecpu_wq to get_cwq().\n\n* Add work_static() and Update set_wq_data() such that it sets the\n  flags part to WORK_STRUCT_PENDING | WORK_STRUCT_STATIC if static |\n  @extra_flags.\n\n* Move santiy check on work-\u003eentry emptiness from queue_work_on() to\n  __queue_work() which all queueing paths share.\n\n* Make __queue_work() take @cpu and @wq instead of @cwq.\n\n* Restructure flush_work() and __create_workqueue_key() to make them\n  easier to modify.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c790bce0481857412c964c5e9d46d56e41c4b051",
      "tree": "82e87167b78bbf3456a53d057b1b741c250a0b76",
      "parents": [
        "8fec62b2d9d0c80b594d0d85678bfdf57a70df1b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "message": "workqueue: kill RT workqueue\n\nWith stop_machine() converted to use cpu_stop, RT workqueue doesn\u0027t\nhave any user left.  Kill RT workqueue support.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "82805ab77d25643f579d90397dcd34f05d1b750a",
      "tree": "4e5fd250d8625e032250fd02101c3b6ce595cbbf",
      "parents": [
        "7bc465605ffa90b281d6b774fcb13911636a6d45"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "message": "kthread: implement kthread_data()\n\nImplement kthread_data() which takes @task pointing to a kthread and\nreturns @data specified when creating the kthread.  The caller is\nresponsible for ensuring the validity of @task when calling this\nfunction.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b56c0d8937e665a27d90517ee7a746d0aa05af46",
      "tree": "fefff33fe3bbebfc8d60ba581e5343dc6cb56a70",
      "parents": [
        "53c5f5ba42c194cb13dd3083ed425f2c5b1ec439"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 29 10:07:09 2010 +0200"
      },
      "message": "kthread: implement kthread_worker\n\nImplement simple work processor for kthread.  This is to ease using\nkthread.  Single thread workqueue used to be used for things like this\nbut workqueue won\u0027t guarantee fixed kthread association anymore to\nenable worker sharing.\n\nThis can be used in cases where specific kthread association is\nnecessary, for example, when it should have RT priority or be assigned\nto certain cgroup.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53c5f5ba42c194cb13dd3083ed425f2c5b1ec439",
      "tree": "72aea970204f3cbf8bd159a8936b36fc61b55718",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02",
        "21aa9af03d06cb1d19a3738e5cf12acff984e69b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 13 18:19:48 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Jun 13 18:19:48 2010 +0200"
      },
      "message": "Merge branch \u0027sched-wq\u0027 of ../wq into cmwq-base\n"
    },
    {
      "commit": "4cea8706c39023f5f721c88dd0ae17a097a39c98",
      "tree": "7eb589399dc10944cde2802d68adb5511405446f",
      "parents": [
        "7ae1277a5202109a31d8f81ac99d4a53278dab84",
        "e79aa8671033535c2e9ffc0a68010ae49ed5734c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 11 14:20:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 11 14:20:03 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  wimax/i2400m: fix missing endian correction read in fw loader\n  net8139: fix a race at the end of NAPI\n  pktgen: Fix accuracy of inter-packet delay.\n  pkt_sched: gen_estimator: add a new lock\n  net: deliver skbs on inactive slaves to exact matches\n  ipv6: fix ICMP6_MIB_OUTERRORS\n  r8169: fix mdio_read and update mdio_write according to hw specs\n  gianfar: Revive the driver for eTSEC devices (disable timestamping)\n  caif: fix a couple range checks\n  phylib: Add support for the LXT973 phy.\n  net: Print num_rx_queues imbalance warning only when there are allocated queues\n"
    },
    {
      "commit": "597a264b1a9c7e36d1728f677c66c5c1f7e3b837",
      "tree": "22db16f0a7b54ece127e127e152e9172456d9e1c",
      "parents": [
        "00d9d6a185de89edc0649ca4ead58f0283dfcbac"
      ],
      "author": {
        "name": "John Fastabend",
        "email": "john.r.fastabend@intel.com",
        "time": "Thu Jun 03 09:30:11 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jun 10 22:23:34 2010 -0700"
      },
      "message": "net: deliver skbs on inactive slaves to exact matches\n\nCurrently, the accelerated receive path for VLAN\u0027s will\ndrop packets if the real device is an inactive slave and\nis not one of the special pkts tested for in\nskb_bond_should_drop().  This behavior is different then\nthe non-accelerated path and for pkts over a bonded vlan.\n\nFor example,\n\nvlanx -\u003e bond0 -\u003e ethx\n\nwill be dropped in the vlan path and not delivered to any\npacket handlers at all.  However,\n\nbond0 -\u003e vlanx -\u003e ethx\n\nand\n\nbond0 -\u003e ethx\n\nwill be delivered to handlers that match the exact dev,\nbecause the VLAN path checks the real_dev which is not a\nslave and netif_recv_skb() doesn\u0027t drop frames but only\ndelivers them to exact matches.\n\nThis patch adds a sk_buff flag which is used for tagging\nskbs that would previously been dropped and allows the\nskb to continue to skb_netif_recv().  Here we add\nlogic to check for the deliver_no_wcard flag and if it\nis set only deliver to handlers that match exactly.  This\nmakes both paths above consistent and gives pkt handlers\na way to identify skbs that come from inactive slaves.\nWithout this patch in some configurations skbs will be\ndelivered to handlers with exact matches and in others\nbe dropped out right in the vlan path.\n\nI have tested the following 4 configurations in failover modes\nand load balancing modes.\n\n# bond0 -\u003e ethx\n\n# vlanx -\u003e bond0 -\u003e ethx\n\n# bond0 -\u003e vlanx -\u003e ethx\n\n# bond0 -\u003e ethx\n            |\n  vlanx -\u003e --\n\nSigned-off-by: John Fastabend \u003cjohn.r.fastabend@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "79907d89c397b8bc2e05b347ec94e928ea919d33",
      "tree": "1f0047491ef1424272f14a032acf01f569fe84c4",
      "parents": [
        "84f7586edab93052bbe7eb72e1e9bce5f7b6ae45"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@linux.intel.com",
        "time": "Wed Jun 09 09:39:49 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 09 08:50:31 2010 -0700"
      },
      "message": "misc: Fix allocation \u0027borrowed\u0027 by vhost_net\n\n10, 233 is allocated officially to /dev/kmview which is shipping in\nUbuntu and Debian distributions.  vhost_net seem to have borrowed it\nwithout making a proper request and this causes regressions in the other\ndistributions.\n\nvhost_net can use a dynamic minor so use that instead.  Also update the\nfile with a comment to try and avoid future misunderstandings.\n\ncc: stable@kernel.org\nSigned-off-by: Alan Cox \u003cdevice@lanana.org\u003e\n[ We should have caught this before 2.6.34 got released.  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b5649278e39a068aaf91399941bab1b4a4a3cc2",
      "tree": "3fd2c782385137f5b135c07149de772e207fdaf8",
      "parents": [
        "8d7458daea2a6809d32418bf489b949d23de99ea"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 09 10:37:18 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 08 18:12:44 2010 -0700"
      },
      "message": "writeback: pay attention to wbc-\u003enr_to_write in write_cache_pages\n\nIf a filesystem writes more than one page in -\u003ewritepage, write_cache_pages\nfails to notice this and continues to attempt writeback when wbc-\u003enr_to_write\nhas gone negative - this trace was captured from XFS:\n\n    wbc_writeback_start: towrt\u003d1024\n    wbc_writepage: towrt\u003d1024\n    wbc_writepage: towrt\u003d0\n    wbc_writepage: towrt\u003d-1\n    wbc_writepage: towrt\u003d-5\n    wbc_writepage: towrt\u003d-21\n    wbc_writepage: towrt\u003d-85\n\nThis has adverse effects on filesystem writeback behaviour. write_cache_pages()\nneeds to terminate after a certain number of pages are written, not after a\ncertain number of calls to -\u003ewritepage are made.  This is a regression\nintroduced by 17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4 (\"vfs: Add\nno_nrwrite_index_update writeback control flag\"), but cannot be reverted\ndirectly due to subsequent bug fixes that have gone in on top of it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "21aa9af03d06cb1d19a3738e5cf12acff984e69b",
      "tree": "e205a742a4a9baf098b4e3d428c04f4d3a065bca",
      "parents": [
        "9ed3811a6c0d6b66e6cd47a5d7b9136386dce743"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:37 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:37 2010 +0200"
      },
      "message": "sched: add hooks for workqueue\n\nConcurrency managed workqueue needs to know when workers are going to\nsleep and waking up.  Using these two hooks, cmwq keeps track of the\ncurrent concurrency level and throttles execution of new works if it\u0027s\ntoo high and wakes up another worker from the sleep hook if it becomes\ntoo low.\n\nThis patch introduces PF_WQ_WORKER to identify workqueue workers and\nadds the following two hooks.\n\n* wq_worker_waking_up(): called when a worker is woken up.\n\n* wq_worker_sleeping(): called when a worker is going to sleep and may\n  return a pointer to a local task which should be woken up.  The\n  returned task is woken up using try_to_wake_up_local() which is\n  simplified ttwu which is called under rq lock and can only wake up\n  local tasks.\n\nBoth hooks are currently defined as noop in kernel/workqueue_sched.h.\nLater cmwq implementation will replace them with proper\nimplementation.\n\nThese hooks are hard coded as they\u0027ll always be enabled.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3a101d0548e925ab16ca6aaa8cf4f767d322ddb0",
      "tree": "b90d8c5f2efe30fcfa49a00fdea037567c6cd46f",
      "parents": [
        "50a323b73069b169385a8ac65633dee837a7d13f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "message": "sched: adjust when cpu_active and cpuset configurations are updated during cpu on/offlining\n\nCurrently, when a cpu goes down, cpu_active is cleared before\nCPU_DOWN_PREPARE starts and cpuset configuration is updated from a\ndefault priority cpu notifier.  When a cpu is coming up, it\u0027s set\nbefore CPU_ONLINE but cpuset configuration again is updated from the\nsame cpu notifier.\n\nFor cpu notifiers, this presents an inconsistent state.  Threads which\na CPU_DOWN_PREPARE notifier expects to be bound to the CPU can be\nmigrated to other cpus because the cpu is no more inactive.\n\nFix it by updating cpu_active in the highest priority cpu notifier and\ncpuset configuration in the second highest when a cpu is coming up.\nDown path is updated similarly.  This guarantees that all other cpu\nnotifiers see consistent cpu_active and cpuset configuration.\n\ncpuset_track_online_cpus() notifier is converted to\ncpuset_update_active_cpus() which just updates the configuration and\nnow called from cpuset_cpu_[in]active() notifiers registered from\nsched_init_smp().  If cpuset is disabled, cpuset_update_active_cpus()\ndegenerates into partition_sched_domains() making separate notifier\nfor !CONFIG_CPUSETS unnecessary.\n\nThis problem is triggered by cmwq.  During CPU_DOWN_PREPARE, hotplug\ncallback creates a kthread and kthread_bind()s it to the target cpu,\nand the thread is expected to run on that cpu.\n\n* Ingo\u0027s test discovered __cpuinit/exit markups were incorrect.\n  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\n"
    },
    {
      "commit": "50a323b73069b169385a8ac65633dee837a7d13f",
      "tree": "020820efb3af12486981381a1e087c1907fdeeb8",
      "parents": [
        "3975d16760d4be7402d1067c548c30c427971331"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jun 08 21:40:36 2010 +0200"
      },
      "message": "sched: define and use CPU_PRI_* enums for cpu notifier priorities\n\nInstead of hardcoding priority 10 and 20 in sched and perf, collect\nthem into CPU_PRI_* enums.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "4daedcfe8c6851aa01cc1997220f2577f4039c13",
      "tree": "5200735d13bb14343682e23c88c4d7525f0a73e6",
      "parents": [
        "b475a3b83a7709e16a734ef2b8ead4d50f885427"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 03 11:57:04 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jun 07 16:03:10 2010 -0400"
      },
      "message": "ahci: add pci quirk for JMB362\n\nJMB362 is a new variant of jmicron controller which is similar to\nJMB360 but has two SATA ports instead of one.  As there is no PATA\nport, single function AHCI mode can be used as in JMB360.  Add pci\nquirk for JMB362.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Aries Lee \u003carieslee@jmicron.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "7f0d384cafabfbb56663ee6944c18fc0450fc5d6",
      "tree": "bf68721fb65b64392177f498a9ba61ef027b2b3d",
      "parents": [
        "90ec7819737d42a0ad1c2df1ff56016facae3c6e",
        "01afaf61983d08ed1c9e5e8f2fcf4f40e9008033"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 21:12:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 21:12:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Minix: Clean up left over label\n  fix truncate inode time modification breakage\n  fix setattr error handling in sysfs, configfs\n  fcntl: return -EFAULT if copy_to_user fails\n  wrong type for \u0027magic\u0027 argument in simple_fill_super()\n  fix the deadlock in qib_fs\n  mqueue doesn\u0027t need make_bad_inode()\n"
    },
    {
      "commit": "90ec7819737d42a0ad1c2df1ff56016facae3c6e",
      "tree": "0dac92b38de5cb13764b5f3de33346359928deda",
      "parents": [
        "8ce655e737dc395e115ecdce143a43b9b6127f46",
        "9bea7f23952d5948f8e5dfdff4de09bb9981fb5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 21:09:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 21:09:48 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  module: fix bne2 \"gave up waiting for init of module libcrc32c\"\n  module: verify_export_symbols under the lock\n  module: move find_module check to end\n  module: make locking more fine-grained.\n  module: Make module sysfs functions private.\n  module: move sysfs exposure to end of load_module\n  module: fix kdb\u0027s illicit use of struct module_use.\n  module: Make the \u0027usage\u0027 lists be two-way\n"
    },
    {
      "commit": "6407ebb271fc34440b306f305e1efb7685eece26",
      "tree": "dd3fa7484bcaa4499138d2249dbed24f003fdf85",
      "parents": [
        "80a3d1bb410e000e176931a076cdf19a1e89a955"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: Make module sysfs functions private.\n\nThese were placed in the header in ef665c1a06 to get the various\nSYSFS/MODULE config combintations to compile.\n\nThat may have been necessary then, but it\u0027s not now.  These functions\nare all local to module.c.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "c8e21ced08b39ef8dfe7236fb2a923a95f645262",
      "tree": "da34400daf3049814b459b9c8ba507d90abfe2bc",
      "parents": [
        "2c02dfe7fe3fba97a5665d329d039d2415ea5607"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:35 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:36 2010 +0930"
      },
      "message": "module: fix kdb\u0027s illicit use of struct module_use.\n\nLinus changed the structure, and luckily this didn\u0027t compile any more.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nCc: Martin Hicks \u003cmort@sgi.com\u003e\n"
    },
    {
      "commit": "2c02dfe7fe3fba97a5665d329d039d2415ea5607",
      "tree": "7f50644bbfcc119cb85e21642a76eabfaf77b8ad",
      "parents": [
        "ad8456361fa19068cf49b50a4f98e41b73c08e76"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 31 12:19:37 2010 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jun 05 11:17:35 2010 +0930"
      },
      "message": "module: Make the \u0027usage\u0027 lists be two-way\n\nWhen adding a module that depends on another one, we used to create a\none-way list of \"modules_which_use_me\", so that module unloading could\nsee who needs a module.\n\nIt\u0027s actually quite simple to make that list go both ways: so that we\nnot only can see \"who uses me\", but also see a list of modules that are\n\"used by me\".\n\nIn fact, we always wanted that list in \"module_unload_free()\": when we\nunload a module, we want to also release all the other modules that are\nused by that module.  But because we didn\u0027t have that list, we used to\nfirst iterate over all modules, and then iterate over each \"used by me\"\nlist of that module.\n\nBy making the list two-way, we simplify module_unload_free(), and it\nallows for some trivial fixes later too.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (cleaned \u0026 rebased)\n"
    },
    {
      "commit": "999fd1ab344dabd9c985b638bf4c29495b8e4619",
      "tree": "b4a238aafc79caa085e469ee28ab61301ca17f8f",
      "parents": [
        "9a9620db07b27700a4de9e86985735fffb78e2f8",
        "ac422f9443191e050c16fe99baeb5c3d74934589"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:42:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:42:09 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (23 commits)\n  sh: Make intc messages consistent via pr_fmt.\n  sh: make sure static declaration on ms7724se\n  sh: make sure static declaration on mach-migor\n  sh: make sure static declaration on mach-ecovec24\n  sh: make sure static declaration on mach-ap325rxa\n  clocksource: sh_cmt: compute mult and shift before registration\n  clocksource: sh_tmu: compute mult and shift before registration\n  sh: PIO disabling for x3proto and urquell.\n  sh: mach-sdk7786: conditionally disable PIO support.\n  sh: support for platforms without PIO.\n  usb: r8a66597-hcd pio to mmio accessor conversion.\n  usb: gadget: r8a66597-udc pio to mmio accessor conversion.\n  usb: gadget: m66592-udc pio to mmio accessor conversion.\n  sh: add romImage MMCIF boot for sh7724 and Ecovec V2\n  sh: add boot code to MMCIF driver header\n  sh: prepare MMCIF driver header file\n  sh: allow romImage data between head.S and the zero page\n  sh: Add support MMCIF for ecovec\n  sh: remove duplicated #include\n  input: serio: disable i8042 for non-cayman sh platforms.\n  ...\n"
    },
    {
      "commit": "9a9620db07b27700a4de9e86985735fffb78e2f8",
      "tree": "14cf3a384ea0d7afeb759cdaf96de7fec7abc9a7",
      "parents": [
        "e620d1e39aa33b43bed96aa7f2ebbc88914aed58",
        "52707f918cca231f8461d45e78a60014795f20d9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:39:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:39:54 2010 -0700"
      },
      "message": "Merge branch \u0027linux_next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/i7core\n\n* \u0027linux_next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/i7core: (83 commits)\n  i7core_edac: Better describe the supported devices\n  Add support for Westmere to i7core_edac driver\n  i7core_edac: don\u0027t free on success\n  i7core_edac: Add support for X5670\n  Always call i7core_[ur]dimm_check_mc_ecc_err\n  i7core_edac: fix memory leak of i7core_dev\n  EDAC: add __init to i7core_xeon_pci_fixup\n  i7core_edac: Fix wrong device id for channel 1 devices\n  i7core: add support for Lynnfield alternate address\n  i7core_edac: Add initial support for Lynnfield\n  i7core_edac: do not export static functions\n  edac: fix i7core build\n  edac: i7core_edac produces undefined behaviour on 32bit\n  i7core_edac: Use a more generic approach for probing PCI devices\n  i7core_edac: PCI device is called NONCORE, instead of NOCORE\n  i7core_edac: Fix ringbuffer maxsize\n  i7core_edac: First store, then increment\n  i7core_edac: Better parse \"any\" addrmask\n  i7core_edac: Use a lockless ringbuffer\n  edac: Create an unique instance for each kobj\n  ...\n"
    },
    {
      "commit": "d2dd328b7f7bc6cebe167648289337755944ad2a",
      "tree": "5d664a2db1ac209f7537452ddc02597972f7aa37",
      "parents": [
        "c1518f12bab97a6d409a25aaccb02dc8895800f3",
        "1abec4fdbb142e3ccb6ce99832fae42129134a96"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:37:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:37:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (27 commits)\n  block: make blk_init_free_list and elevator_init idempotent\n  block: avoid unconditionally freeing previously allocated request_queue\n  pipe: change /proc/sys/fs/pipe-max-pages to byte sized interface\n  pipe: change the privilege required for growing a pipe beyond system max\n  pipe: adjust minimum pipe size to 1 page\n  block: disable preemption before using sched_clock()\n  cciss: call BUG() earlier\n  Preparing 8.3.8rc2\n  drbd: Reduce verbosity\n  drbd: use drbd specific ratelimit instead of global printk_ratelimit\n  drbd: fix hang on local read errors while disconnected\n  drbd: Removed the now empty w_io_error() function\n  drbd: removed duplicated #includes\n  drbd: improve usage of MSG_MORE\n  drbd: need to set socket bufsize early to take effect\n  drbd: improve network latency, TCP_QUICKACK\n  drbd: Revert \"drbd: Create new current UUID as late as possible\"\n  brd: support discard\n  Revert \"writeback: fix WB_SYNC_NONE writeback from umount\"\n  Revert \"writeback: ensure that WB_SYNC_NONE writeback with sb pinned is sync\"\n  ...\n"
    },
    {
      "commit": "485d527686850d68a0e9006dd9904f19f122485e",
      "tree": "8400c646135bb4ce68f137004298e1be7fdbd913",
      "parents": [
        "d6d03f9158516b50d0d343158e3f33bcff1e4ca5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jun 04 14:14:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 15:21:45 2010 -0700"
      },
      "message": "sys_personality: change sys_personality() to accept \"unsigned int\" instead of u_long\n\ntask_struct-\u003epesonality is \"unsigned int\", but sys_personality() paths use\n\"unsigned long pesonality\".  This means that every assignment or\ncomparison is not right.  In particular, if this argument does not fit\ninto \"unsigned int\" __set_personality() changes the caller\u0027s personality\nand then sys_personality() returns -EINVAL.\n\nTurn this argument into \"unsigned int\" and avoid overflows.  Obviously,\nthis is the user-visible change, we just ignore the upper bits.  But this\ncan\u0027t break the sane application.\n\nThere is another thing which can confuse the poorly written applications.\nUser-space thinks that this syscall returns int, not long.  This means\nthat the returned value can be negative and look like the error code.  But\nnote that libc won\u0027t be confused and thus errno won\u0027t be set, and with\nthis patch the user-space can never get -1 unless sys_personality() really\nfails.  And, most importantly, the negative RET !\u003d -1 is only possible if\nthat app previously called personality(RET).\n\nPointed-out-by: Wenming Zhang \u003cwezhang@redhat.com\u003e\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d683a09990ff095a91b6e724ecee0ff8733274a",
      "tree": "81269fde9fb4d3958fea616269425dd61769aeec",
      "parents": [
        "971b2e8a3f5dc0cbef19ec1a77b6d20237aa751e"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Thu Jun 03 11:58:28 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 04 17:16:28 2010 -0400"
      },
      "message": "wrong type for \u0027magic\u0027 argument in simple_fill_super()\n\nIt\u0027s used to superblock -\u003es_magic, which is unsigned long.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nReviewed-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nCC: stable@kernel.org\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bc23416cd4579093acc1e7d819eee747def623da",
      "tree": "4fab11d6dac818927e5d80c5fddcf903412dd4fc",
      "parents": [
        "ad8456361fa19068cf49b50a4f98e41b73c08e76",
        "d4376802999d478a103868d7e7b1f473e4a387af"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 09:48:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 04 09:48:03 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:\n  ALSA: hda-intel - fix wallclk variable update and condition\n  ALSA: asihpi - Fix uninitialized variable\n  ALSA: hda: Use LPIB for ASUS M2V\n  usb/gadget: Replace the old USB audio FU definitions in f_audio.c\n  ASoC: MX31ads sound support should depend on MACH_MX31ADS_WM1133_EV1\n  ASoC: Add missing Kconfig entry for Phytec boards\n  ALSA: usb-audio: export UAC2 clock selectors as mixer controls\n  ALSA: usb-audio: clean up find_audio_control_unit()\n  ALSA: usb-audio: add UAC2 sepecific Feature Unit controls\n  ALSA: usb-audio: unify constants from specification\n  ALSA: usb-audio: parse clock topology of UAC2 devices\n  ALSA: usb-audio: fix selector unit string index accessor\n  include/linux/usb/audio-v2.h: add more UAC2 details\n  ALSA: usb-audio: support partially write-protected UAC2 controls\n  ALSA: usb-audio: UAC2: clean up parsing of bmaControls\n  ALSA: hda: Use LPIB for another mainboard\n  ALSA: hda: Use mb31 quirk for an iMac model\n  ALSA: hda: Use LPIB for an ASUS device\n"
    },
    {
      "commit": "ad8456361fa19068cf49b50a4f98e41b73c08e76",
      "tree": "281c96054fa2a8ca42ac47a4edfa6961cc463f29",
      "parents": [
        "39d112100e561686ab1e2b19c57984163ad6c1fa",
        "d8d9129ea28e2177749627c82962feb26e8d11e9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 15:48:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 15:48:15 2010 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:\n  libata: implement on-demand HPA unlocking\n  libata: use the enlarged capacity after late HPA unlock\n  SCSI: implement sd_unlock_native_capacity()\n  libata-sff: trivial corrections to Kconfig help text\n  sata_nv: don\u0027t diddle with nIEN on mcp55\n  sata_via: magic vt6421 fix for transmission problems w/ WD drives\n"
    },
    {
      "commit": "f150dba6d4a1e275b62ca76572c2786c71b91e85",
      "tree": "1fb8ed0a64f69431e8a3304a1b346a19979028b9",
      "parents": [
        "636667a545b2d16797f27002a65d688c195c9b60",
        "c6df8d5ab87a246942d138321e1721edbb69f6e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 15:45:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 15:45:26 2010 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf: Fix crash in swevents\n  perf buildid-list: Fix --with-hits event processing\n  perf scripts python: Give field dict to unhandled callback\n  perf hist: fix objdump output parsing\n  perf-record: Check correct pid when forking\n  perf: Do the comm inheritance per thread in event__process_task\n  perf: Use event__process_task from perf sched\n  perf: Process comm events by tid\n  blktrace: Fix new kernel-doc warnings\n  perf_events: Fix unincremented buffer base on partial copy\n  perf_events: Fix event scheduling issues introduced by transactional API\n  perf_events, trace: Fix perf_trace_destroy(), mutex went missing\n  perf_events, trace: Fix probe unregister race\n  perf_events: Fix races in group composition\n  perf_events: Fix races and clean up perf_event and perf_mmap_data interaction\n"
    },
    {
      "commit": "1067b6c2bea7fd2cc9da290d865ab3f3b91c8130",
      "tree": "5b20d5fbe9f9a2b3cfbb794018d74606f5031a88",
      "parents": [
        "a652883a244901742d6c9733a9eebdf72e3114ea",
        "d8dcaa1dc50f5aecd38d34180cd99d6af8566c88"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 07:19:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 03 07:19:45 2010 -0700"
      },
      "message": "Merge branch \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (41 commits)\n  drm/radeon/kms: make sure display hw is disabled when suspending\n  drm/vmwgfx: Allow userspace to change default layout. Bump minor.\n  drm/vmwgfx: Fix framebuffer modesetting\n  drm/vmwgfx: Fix vga save / restore with display topology.\n  vgaarb: use MIT license\n  vgaarb: convert pr_devel() to pr_debug()\n  drm: fix typos in Linux DRM Developer\u0027s Guide\n  drm/radeon/kms/pm: voltage fixes\n  drm/radeon/kms/pm: radeon_set_power_state fixes\n  drm/radeon/kms/pm: patch default power state with default clocks/voltages on r6xx+\n  drm/radeon/kms/pm: enable SetVoltage on r7xx/evergreen\n  drm/radeon/kms/pm: add support for SetVoltage cmd table (V2)\n  drm/radeon/kms/evergreen: add initial CS parser\n  drm/kms: disable/enable poll around switcheroo on/off\n  drm/nouveau: fixup confusion over which handle the DSM is hanging off.\n  drm/nouveau: attempt to get bios from ACPI v3\n  drm/nv50: cast IGP memory location to u64 before shifting\n  drm/ttm: Fix ttm_page_alloc.c\n  drm/ttm: Fix cached TTM page allocation.\n  drm/vmwgfx: Remove some leftover debug messages.\n  ...\n"
    },
    {
      "commit": "ff9da691c0498ff81fdd014e7a0731dab2337dac",
      "tree": "429dc9ea36c9927954ed3a32f03d28730e693c8b",
      "parents": [
        "419f8367ea37e5adc5d95479e8fd5554b92b49fe"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 03 14:54:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 03 14:54:39 2010 +0200"
      },
      "message": "pipe: change /proc/sys/fs/pipe-max-pages to byte sized interface\n\nThis changes the interface to be based on bytes instead. The API\nmatches that of F_SETPIPE_SZ in that it rounds up the passed in\nsize so that the resulting page array is a power-of-2 in size.\n\nThe proc file is renamed to /proc/sys/fs/pipe-max-size to\nreflect this change.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c0db9cbc73338d8e2987a19a02388d67aeec0bfe",
      "tree": "e298c03a1c8c146208bdbde73c29db06dd6b93ac",
      "parents": [
        "2d6e9b91971034103ac51b20fa692258bf6bdd40"
      ],
      "author": {
        "name": "Tiago Vignatti",
        "email": "tiago.vignatti@nokia.com",
        "time": "Mon May 24 18:24:31 2010 +0300"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Thu Jun 03 13:13:34 2010 +1000"
      },
      "message": "vgaarb: use MIT license\n\nSigned-off-by: Tiago Vignatti \u003ctiago.vignatti@nokia.com\u003e\nCc: Henry Zhao \u003cHenry.Zhao@Sun.COM\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "d8d9129ea28e2177749627c82962feb26e8d11e9",
      "tree": "f930703c8e3ba66cadcaf712ee7ce9b36a6d0823",
      "parents": [
        "68939ce5fc17ee9c03ef6e543d4f82bd9f5583d4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat May 15 20:09:34 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jun 02 13:50:10 2010 -0400"
      },
      "message": "libata: implement on-demand HPA unlocking\n\nImplement ata_scsi_unlock_native_capacity() which will be called\nthrough SCSI layer when block layer notices that partitions on a\ndevice extend beyond the end of the device.  It requests EH to unlock\nHPA, waits for completion and returns the current device capacity.\n\nThis allows libata to unlock HPA on demand instead of having to decide\nwhether to unlock upfront.  Unlocking on demand is safer than\nunlocking by upfront because some BIOSes write private data to the\narea beyond HPA limit.  This was suggested by Ben Hutchings.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSuggested-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c7a441bba9de3b4e166b6a4449208bc906d70558",
      "tree": "346fdf11e464c8201a9aaa8abdd1c1b6dc4f86e0",
      "parents": [
        "ead54d878465291746c91c95749990d62742a6cf",
        "e4caa8bab3862a7694ab7c6dfede223227ad7fc5"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Wed Jun 02 14:18:06 2010 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Wed Jun 02 14:18:06 2010 +0200"
      },
      "message": "Merge branch \u0027fix/hda\u0027 into for-linus\n"
    },
    {
      "commit": "1f73897861b8ef0be64ff4b801f8d6f830f683b5",
      "tree": "b4bae8f12e1422113910d8cb00a19d010dc4a52f",
      "parents": [
        "b904d7131d116900524bd36ec170dcd97846bfd3",
        "64ffc9ff424c65adcffe7d590018cc75e2d5d42a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 01 08:55:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild\n\n* \u0027for-35\u0027 of git://repo.or.cz/linux-kbuild: (81 commits)\n  kbuild: Revert part of e8d400a to resolve a conflict\n  kbuild: Fix checking of scm-identifier variable\n  gconfig: add support to show hidden options that have prompts\n  menuconfig: add support to show hidden options which have prompts\n  gconfig: remove show_debug option\n  gconfig: remove dbg_print_ptype() and dbg_print_stype()\n  kconfig: fix zconfdump()\n  kconfig: some small fixes\n  add random binaries to .gitignore\n  kbuild: Include gen_initramfs_list.sh and the file list in the .d file\n  kconfig: recalc symbol value before showing search results\n  .gitignore: ignore *.lzo files\n  headerdep: perlcritic warning\n  scripts/Makefile.lib: Align the output of LZO\n  kbuild: Generate modules.builtin in make modules_install\n  Revert \"kbuild: specify absolute paths for cscope\"\n  kbuild: Do not unnecessarily regenerate modules.builtin\n  headers_install: use local file handles\n  headers_check: fix perl warnings\n  export_report: fix perl warnings\n  ...\n"
    },
    {
      "commit": "b4ca761577535b2b4d153689ee97342797dfff05",
      "tree": "29054d55508f1faa22ec32acf7c245751af03348",
      "parents": [
        "28f4197e5d4707311febeec8a0eb97cb5fd93c97",
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:42:12 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:42:12 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n\nConflicts:\n\tfs/pipe.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28f4197e5d4707311febeec8a0eb97cb5fd93c97",
      "tree": "9f7c5808e0c069b449b67856207c5ee4f740bd34",
      "parents": [
        "713b686494a577b3c4f4f9f585a4705fc30d51c2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:23:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:23:18 2010 +0200"
      },
      "message": "block: disable preemption before using sched_clock()\n\nCommit 9195291e5f05e01d67f9a09c756b8aca8f009089 added calls to\nsched_clock() from preemptible code. sched_clock() is both the\nwrong interface AND cannot be called without preempt disabled.\n\nApply a temporary fix to get rid of the warnings, a real patch\nis in the works.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "099c5c310e9744bd0654881bb55c137051228e56",
      "tree": "819e89bc3187d231cd0c82025ff8924152357099",
      "parents": [
        "2a0ab2cd73c26835e635ed4e3868f983519048fb"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu May 27 13:46:35 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 11:12:28 2010 +0200"
      },
      "message": "Preparing 8.3.8rc2\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0e3c9a2284f5417f196e327c254d0b84c9ee8929",
      "tree": "e3fb40ebe7d042b4b3c1042bc7f2edaf7fb6eee0",
      "parents": [
        "f17625b318d9b151e7bd41e31223e9d89b2aaa77"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 11:08:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 11:08:43 2010 +0200"
      },
      "message": "Revert \"writeback: fix WB_SYNC_NONE writeback from umount\"\n\nThis reverts commit e913fc825dc685a444cb4c1d0f9d32f372f59861.\n\nWe are investigating a hang associated with the WB_SYNC_NONE changes,\nso revert them for now.\n\nConflicts:\n\n\tfs/fs-writeback.c\n\tmm/page-writeback.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5953a303471951a4c2f2127f0b4c74df7ceb7ac2",
      "tree": "13b51217a6f538fe5c72821b1ee65d9bfea72842",
      "parents": [
        "b1faf5666438090a4dc4fceac8502edc7788b7e3",
        "7489aec8eed4f2f1eb3b4d35763bd3ea30b32ef5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:57 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 23:44:57 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6\n"
    },
    {
      "commit": "65f25da44b51f55e3a74301c25f29263be2bf1ba",
      "tree": "5a2e91b0af5a0000b6c404f625b3933dd81aaae3",
      "parents": [
        "79f920fbff566ffc9de44111eb1456a3cef310f0"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon May 31 13:35:41 2010 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Mon May 31 18:17:22 2010 +0200"
      },
      "message": "ALSA: usb-audio: unify constants from specification\n\nMove more definitions from private enums to appropriate header files.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\n"
    },
    {
      "commit": "7176d37a28fa4ea7e32815007673f578cdcebf51",
      "tree": "14698442d389d5da85366b3706402dbb1fdade9b",
      "parents": [
        "5dd360ebd8328affb22225141cece3a29403b965"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon May 31 13:35:39 2010 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Mon May 31 18:16:31 2010 +0200"
      },
      "message": "ALSA: usb-audio: fix selector unit string index accessor\n\nThis is another regression from the UAC2 code refactoring.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\n"
    },
    {
      "commit": "5dd360ebd8328affb22225141cece3a29403b965",
      "tree": "aac45704e11484151404d0660097b19b284318d4",
      "parents": [
        "a6a3325913efbe35a10e87fd3e9c3ce621fd32c7"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon May 31 13:35:38 2010 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Mon May 31 18:16:14 2010 +0200"
      },
      "message": "include/linux/usb/audio-v2.h: add more UAC2 details\n\nAlso, remove the \u0027bmControl\u0027 field from uac_clock_selector_descriptor,\nwhich was at the wrong offset. This struct is currently unused.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\n"
    },
    {
      "commit": "dcbe7bcfa32c5bc4f9bb6c75d4d41bb4db8c36fc",
      "tree": "7cadc69ed8c6d3bd8df6f48cd640946b818200d6",
      "parents": [
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon May 31 13:35:36 2010 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Mon May 31 18:15:45 2010 +0200"
      },
      "message": "ALSA: usb-audio: UAC2: clean up parsing of bmaControls\n\nIntroduce two new static inline functions for a more readable parsing\nof UAC2 bmaControls.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\n"
    },
    {
      "commit": "7489aec8eed4f2f1eb3b4d35763bd3ea30b32ef5",
      "tree": "fe2450679dc217183421e606b3912641545596bd",
      "parents": [
        "c936e8bd1de2fa50c49e3df6fa5036bf07870b67"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Mon May 31 16:41:35 2010 +0200"
      },
      "committer": {
        "name": "Patrick McHardy",
        "email": "kaber@trash.net",
        "time": "Mon May 31 16:41:35 2010 +0200"
      },
      "message": "netfilter: xtables: stackptr should be percpu\n\ncommit f3c5c1bfd4 (netfilter: xtables: make ip_tables reentrant)\nintroduced a performance regression, because stackptr array is shared by\nall cpus, adding cache line ping pongs. (16 cpus share a 64 bytes cache\nline)\n\nFix this using alloc_percpu()\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-By: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n"
    },
    {
      "commit": "64960848abd18d0bcde3f53ffa7ed0b631e6b25d",
      "tree": "8424a1c550a98ce09f127425fde9b7b5f2f5027a",
      "parents": [
        "2903037400a26e7c0cc93ab75a7d62abfacdf485",
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 05:46:45 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon May 31 05:46:45 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "8a49542c0554af7d0073aac0ee73ee65b807ef34",
      "tree": "73e82ee5a624012ac723c3af21bb1945b7bd675f",
      "parents": [
        "ac9721f3f54b27a16c7e1afb2481e7ee95a70318"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu May 27 15:47:49 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 31 08:46:09 2010 +0200"
      },
      "message": "perf_events: Fix races in group composition\n\nGroup siblings don\u0027t pin each-other or the parent, so when we destroy\nevents we must make sure to clean up all cross referencing pointers.\n\nIn particular, for destruction of a group leader we must be able to\nfind all its siblings and remove their reference to it.\n\nThis means that detaching an event from its context must not detach it\nfrom the group, otherwise we can end up failing to clear all pointers.\n\nSolve this by clearly separating the attachment to a context and\nattachment to a group, and keep the group composed until we destroy\nthe events.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac9721f3f54b27a16c7e1afb2481e7ee95a70318",
      "tree": "a9f21d60c7c4c1910696553a6f8273edcca03c64",
      "parents": [
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu May 27 12:54:41 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 31 08:46:08 2010 +0200"
      },
      "message": "perf_events: Fix races and clean up perf_event and perf_mmap_data interaction\n\nIn order to move toward separate buffer objects, rework the whole\nperf_mmap_data construct to be a more self-sufficient entity, one\nwith its own lifetime rules.\n\nThis greatly sanitizes the whole output redirection code, which\nwas riddled with bugs and races.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8a768952ca8cb5cad98cfa343e6fb131e3bbdc3e",
      "tree": "4e79a49469e6035946aa76d0168cd8c234768283",
      "parents": [
        "487d9fc5016529d7d77dfe35b666fd3a090e2953"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Tue May 18 14:43:04 2010 +0000"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon May 31 13:11:47 2010 +0900"
      },
      "message": "sh: add boot code to MMCIF driver header\n\nThis patch adds a set of MMCIF functions for the romImage\nboot loader that allows the kernel to be booted directly\nfrom an MMC card.\n\nThanks to Jeremy Baker for the initial prototype.\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "487d9fc5016529d7d77dfe35b666fd3a090e2953",
      "tree": "2cfcd7ed5bcbd6d8768f233770382a1378292f84",
      "parents": [
        "b34bce45530ca897aea35915e0e42eb3c8047b52"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Tue May 18 14:42:51 2010 +0000"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon May 31 13:11:41 2010 +0900"
      },
      "message": "sh: prepare MMCIF driver header file\n\nUpdate the MMCIF driver to include register information\nand register access functions in the header file.\nThe MMCIF boot code builds on top of this.\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "8fa76f7e61ef4e5bc97207143ea4e198b22487bc",
      "tree": "266c42b6687e68e4febb72d8c031e5facd899a1c",
      "parents": [
        "a41a7b91772da2c77ac0da74285fd8ebd86a85ba",
        "67a3e12b05e055c0415c556a315a3d3eb637e29e"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon May 31 12:59:19 2010 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon May 31 12:59:19 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n"
    },
    {
      "commit": "3b03117c5cfbb04175b688c79ea4155b8ef812d3",
      "tree": "5d2e3d0d7db98e2b47c7bb51be39bc4ced6a4d97",
      "parents": [
        "fa7eadab4b4aec0139d2429e6f8d13375ff8a658",
        "0f1f694260e0d35b5ce7d471f6e679c3dd4d7d94"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 12:46:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 12:46:17 2010 -0700"
      },
      "message": "Merge branch \u0027slub/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slub/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  SLUB: Allow full duplication of kmalloc array for 390\n  slub: move kmem_cache_node into it\u0027s own cacheline\n"
    },
    {
      "commit": "003386fff3e02e51cea882e60f7d28290113964c",
      "tree": "253001a9a0fc609b757362708edc2dcaab9e2a14",
      "parents": [
        "092405cdb66f060918160ae730640b449ed7b827",
        "51921cb746f56983db5a373ca68deb2b0d3ddf01"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:16:14 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  mm: export generic_pipe_buf_*() to modules\n  fuse: support splice() reading from fuse device\n  fuse: allow splice to move pages\n  mm: export remove_from_page_cache() to modules\n  mm: export lru_cache_add_*() to modules\n  fuse: support splice() writing to fuse device\n  fuse: get page reference for readpages\n  fuse: use get_user_pages_fast()\n  fuse: remove unneeded variable\n"
    },
    {
      "commit": "17d30ac077df253c12c7ba4db8d5cdacfceeb6d1",
      "tree": "991a18cd249d66c7e08faa1b93f014ad169f04f3",
      "parents": [
        "e38c1e54ce51059a1aa8744c895762906cf43b32",
        "191211f50f35deb5b3b80bc7b620cfd4b0a4a2d9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:13:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:13:08 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (47 commits)\n  mfd: Rename twl5031 sih modules\n  mfd: Storage class for timberdale should be before const qualifier\n  mfd: Remove unneeded and dangerous clearing of clientdata\n  mfd: New AB8500 driver\n  gpio: Fix inverted rdc321x gpio data out registers\n  mfd: Change rdc321x resources flags to IORESOURCE_IO\n  mfd: Move pcf50633 irq related functions to its own file.\n  mfd: Use threaded irq for pcf50633\n  mfd: pcf50633-adc: Fix potential race in pcf50633_adc_sync_read\n  mfd: Fix pcf50633 bitfield logic in interrupt handler\n  gpio: rdc321x needs to select MFD_CORE\n  mfd: Use menuconfig for quicker config editing\n  ARM: AB3550 board configuration and irq for U300\n  mfd: AB3550 core driver\n  mfd: AB3100 register access change to abx500 API\n  mfd: Renamed ab3100.h to abx500.h\n  gpio: Add TC35892 GPIO driver\n  mfd: Add Toshiba\u0027s TC35892 MFD core\n  mfd: Delay to mask tsc irq in max8925\n  mfd: Remove incorrect wm8350 kfree\n  ...\n"
    },
    {
      "commit": "e38c1e54ce51059a1aa8744c895762906cf43b32",
      "tree": "6af00994b3d07da2db3419346f740ae06f3cfe7e",
      "parents": [
        "3e9345edd8562dc4f9bbca88a598c91c8779a9c4",
        "7b8ddb06e54ad98edeb7951f317aee4d1feda9d6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:12:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:12:43 2010 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:\n  DMAENGINE: DMA40 U8500 platform configuration\n  DMA: PL330: Add dma api driver\n"
    },
    {
      "commit": "d28619f1563140526e2f84eae436f39206f40a69",
      "tree": "d93284016a0983c8f27b745a3c50738617e50995",
      "parents": [
        "021fad8b706849c091f6e682bc5df3ce4f9ab4d7",
        "f32764bd2bbb6ea003c158b1d276b4dc9f900348"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:11:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:11:11 2010 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Convert quota statistics to generic percpu_counter\n  ext3 uses rb_node \u003d NULL; to zero rb_root.\n  quota: Fixup dquot_transfer\n  reiserfs: Fix resuming of quotas on remount read-write\n  pohmelfs: Remove dead quota code\n  ufs: Remove dead quota code\n  udf: Remove dead quota code\n  quota: rename default quotactl methods to dquot_\n  quota: explicitly set -\u003edq_op and -\u003es_qcop\n  quota: drop remount argument to -\u003equota_on and -\u003equota_off\n  quota: move unmount handling into the filesystem\n  quota: kill the vfs_dq_off and vfs_dq_quota_on_remount wrappers\n  quota: move remount handling into the filesystem\n  ocfs2: Fix use after free on remount read-only\n\nFix up conflicts in fs/ext4/super.c and fs/ufs/file.c\n"
    },
    {
      "commit": "97ef6f7449da6ceddf9a90fa8851f607b67283dd",
      "tree": "a994fe080741edc1c6ef0281ec72425f25b3f256",
      "parents": [
        "06b2e9886e039c2f1b3048c47e539b80ab4155b0"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri May 28 15:08:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:02:47 2010 -0700"
      },
      "message": "rapidio: fix new kernel-doc warnings\n\nFix a bunch of new rapidio kernel-doc warnings:\n\nWarning(include/linux/rio.h:123): No description found for parameter \u0027comp_tag\u0027\nWarning(include/linux/rio.h:123): No description found for parameter \u0027phys_efptr\u0027\nWarning(include/linux/rio.h:123): No description found for parameter \u0027em_efptr\u0027\nWarning(include/linux/rio.h:123): No description found for parameter \u0027pwcback\u0027\nWarning(include/linux/rio.h:247): No description found for parameter \u0027set_domain\u0027\nWarning(include/linux/rio.h:247): No description found for parameter \u0027get_domain\u0027\nWarning(drivers/rapidio/rio-scan.c:1133): No description found for parameter \u0027rdev\u0027\nWarning(drivers/rapidio/rio-scan.c:1133): Excess function parameter \u0027port\u0027 description in \u0027rio_init_em\u0027\nWarning(drivers/rapidio/rio.c:349): No description found for parameter \u0027rdev\u0027\nWarning(drivers/rapidio/rio.c:349): Excess function parameter \u0027mport\u0027 description in \u0027rio_request_inb_pwrite\u0027\nWarning(drivers/rapidio/rio.c:393): No description found for parameter \u0027port\u0027\nWarning(drivers/rapidio/rio.c:393): No description found for parameter \u0027local\u0027\nWarning(drivers/rapidio/rio.c:393): No description found for parameter \u0027destid\u0027\nWarning(drivers/rapidio/rio.c:393): No description found for parameter \u0027hopcount\u0027\nWarning(drivers/rapidio/rio.c:393): Excess function parameter \u0027rdev\u0027 description in \u0027rio_mport_get_physefb\u0027\nWarning(drivers/rapidio/rio.c:845): Excess function parameter \u0027local\u0027 description in \u0027rio_std_route_clr_table\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35926ff5fba8245bd1c6ac04155048f6f89232b1",
      "tree": "9afc520f47e29cb3cd80462fe62858f17b1c6cfb",
      "parents": [
        "b612a0553714c6b9744ad0d03f10cac78f3a84b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:00:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 09:00:03 2010 -0700"
      },
      "message": "Revert \"cpusets: randomize node rotor used in cpuset_mem_spread_node()\"\n\nThis reverts commit 0ac0c0d0f837c499afd02a802f9cf52d3027fa3b, which\ncaused cross-architecture build problems for all the wrong reasons.\nIA64 already added its own version of __node_random(), but the fact is,\nthere is nothing architectural about the function, and the original\ncommit was just badly done. Revert it, since no fix is forthcoming.\n\nRequested-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b612a0553714c6b9744ad0d03f10cac78f3a84b1",
      "tree": "9dfb5cb5d13c187ff1f54448f8441512203625d0",
      "parents": [
        "52b0ace7dfe8f70350218017a95d7cab1eb41fbb",
        "2a8e5e3637e2fc058798f5d3626f525729ffaaaf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 08:56:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 08:56:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: clean up on forwarded aborted mds request\n  ceph: fix leak of osd authorizer\n  ceph: close out mds, osd connections before stopping auth\n  ceph: make lease code DN specific\n  fs/ceph: Use ERR_CAST\n  ceph: renew auth tickets before they expire\n  ceph: do not resend mon requests on auth ticket renewal\n  ceph: removed duplicated #includes\n  ceph: avoid possible null dereference\n  ceph: make mds requests killable, not interruptible\n  sched: add wait_for_completion_killable_timeout\n"
    },
    {
      "commit": "0f1f694260e0d35b5ce7d471f6e679c3dd4d7d94",
      "tree": "0779df2dc3d993569b776acc70256d7659ded2d0",
      "parents": [
        "73367bd8eef4f4eb311005886aaa916013073265"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Thu May 27 09:17:17 2010 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun May 30 13:02:08 2010 +0300"
      },
      "message": "SLUB: Allow full duplication of kmalloc array for 390\n\nCommit 756dee75872a2a764b478e18076360b8a4ec9045 (\"SLUB: Get rid of dynamic DMA\nkmalloc cache allocation\") makes S390 run out of kmalloc caches.  Increase the\nnumber of kmalloc caches to a safe size.\n\nCc: \u003cstable@kernel.org\u003e [ .33 and .34 ]\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "52b0ace7dfe8f70350218017a95d7cab1eb41fbb",
      "tree": "e474f8e2c5ac1712e1e1155b879420dde4aa3922",
      "parents": [
        "24010e460454ec0d2f4f0213b667b4349cbdb8e1",
        "d6695f09ea30de712662fcf8dd0e8c4d4306a15a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 29 15:31:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 29 15:31:57 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (26 commits)\n  ALSA: snd-usb-caiaq: Bump version number to 1.3.21\n  ALSA: Revert \"ALSA: snd-usb-caiaq: Set default input mode of A4DJ\"\n  ALSA: snd-usb-caiaq: Simplify single case to an \u0027if\u0027\n  ALSA: snd-usb-caiaq: Restore \u0027Control vinyl\u0027 input mode on A4DJ\n  ALSA: hda: Use LPIB for a Shuttle device\n  ALSA: hda: Add support for another Lenovo ThinkPad Edge in conexant codec\n  ALSA: hda: Use LPIB for Sony VPCS11V9E\n  ALSA: usb-audio: fix feature unit parser for UAC2\n  ALSA: asihpi - Minor code cleanup\n  ALSA: asihpi - Add support for new ASI8800 family\n  ALSA: asihpi - Fix bug preventing outstream_write preload from happening\n  ALSA: asihpi - Fix imbalanced lock path in hw_message\n  ALSA: asihpi - Remove support for old ASI8800 family\n  ALSA: asihpi - Add hd radio blend functions\n  ALSA: asihpi - Remove unused io map functions\n  ALSA: usb-audio: add support for UAC2 pitch control\n  ALSA: usb-audio: parse UAC2 endpoint descriptors correctly\n  ALSA: usb-audio: fix return values\n  ALSA: usb-audio: parse more format descriptors with structs\n  sound: Add missing spin_unlock\n  ...\n"
    },
    {
      "commit": "0aa12fb439838a85802ab8b7fbb9bcfc3e6e05cb",
      "tree": "c944cf9abba9a6afb3d1259140c73101d0e222a0",
      "parents": [
        "240ed68eb567d80dd6bab739341999a5ab0ad55d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat May 29 09:12:30 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat May 29 09:12:30 2010 -0700"
      },
      "message": "sched: add wait_for_completion_killable_timeout\n\nAdd missing _killable_timeout variant for wait_for_completion that will\nreturn when a timeout expires or the task is killed.\n\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCC: Mike Galbraith \u003cefault@gmx.de\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5b0daa3474d52bed906c4d5e92b44e10148c6972",
      "tree": "3ed95111a3637d1b64f4c1bf27a0e86a785ca104",
      "parents": [
        "6057fd78a8dcce6269f029b967051d5a2e9b0895"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sat May 29 00:12:13 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat May 29 00:12:13 2010 -0700"
      },
      "message": "skb: make skb_recycle_check() return a bool value\n\nSigned-off-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e4f2e5eaac8f5f903ca4a8cc944d26e68745d6bb",
      "tree": "1a8d89561fa5b231202d5287acc2683eccadee7f",
      "parents": [
        "9a90e09854a3c7cc603ab8fc9163f77bb1f66cfa",
        "2671717265ae6e720a9ba5f13fbec3a718983b65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 16:14:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 16:14:17 2010 -0700"
      },
      "message": "Merge branch \u0027idle-release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6\n\n* \u0027idle-release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6:\n  intel_idle: native hardware cpuidle driver for latest Intel processors\n  ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case\n  acpi_pad: uses MONITOR/MWAIT, so it doesn\u0027t need to clear TS_POLLING\n  sched: clarify commment for TS_POLLING\n  ACPI: allow a native cpuidle driver to displace ACPI\n  cpuidle: make cpuidle_curr_driver static\n  cpuidle: add cpuidle_unregister_driver() error check\n  cpuidle: fail to register if !CONFIG_CPU_IDLE\n"
    },
    {
      "commit": "9a90e09854a3c7cc603ab8fc9163f77bb1f66cfa",
      "tree": "c8c5f767dd2351c9db440f003cc14401583bafd3",
      "parents": [
        "d372e7fe4698bde3a00b718f7901a0025dda47ef",
        "d3b383338f105f50724c10a7d81b04a3930e886b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 14:42:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 14:42:18 2010 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (27 commits)\n  ACPI: Don\u0027t let acpi_pad needlessly mark TSC unstable\n  drivers/acpi/sleep.h: Checkpatch cleanup\n  ACPI: Minor cleanup eliminating redundant PMTIMER_TICKS to NS conversion\n  ACPI: delete unused c-state promotion/demotion data strucutures\n  ACPI: video: fix acpi_backlight\u003dvideo\n  ACPI: EC: Use kmemdup\n  drivers/acpi: use kasprintf\n  ACPI, APEI, EINJ injection parameters support\n  Add x64 support to debugfs\n  ACPI, APEI, Use ERST for persistent storage of MCE\n  ACPI, APEI, Error Record Serialization Table (ERST) support\n  ACPI, APEI, Generic Hardware Error Source memory error support\n  ACPI, APEI, UEFI Common Platform Error Record (CPER) header\n  Unified UUID/GUID definition\n  ACPI Hardware Error Device (PNP0C33) support\n  ACPI, APEI, PCIE AER, use general HEST table parsing in AER firmware_first setup\n  ACPI, APEI, Document for APEI\n  ACPI, APEI, EINJ support\n  ACPI, APEI, HEST table parsing\n  ACPI, APEI, APEI supporting infrastructure\n  ...\n"
    },
    {
      "commit": "91dd6964390b331beb731623cb59c4a933ff8162",
      "tree": "2d22bdbd92e1e642fa4a77be4d4bf4cc5cbba2a9",
      "parents": [
        "dc1544ea5d6dfdf29440295788e639e4b44c605a",
        "b6dacf63e9fb2e7a1369843d6cef332f76fca6a3"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Fri May 28 16:17:27 2010 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Fri May 28 16:17:27 2010 -0400"
      },
      "message": "Merge branch \u0027acpi_enable\u0027 into release\n"
    },
    {
      "commit": "89ad6a6173127e5d31bea7a4a45ec23fa5bf4a17",
      "tree": "6feb3d663ee48b790a0be2420647e43bc20c31ad",
      "parents": [
        "aa36c7bf987dfa5597c0f7c46f8fca46b2dd33d2",
        "49837a80b38b79a7c06217b2c40842aeb6fa13b9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:07:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:07:48 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  remove detritus left by \"mm: make read_cache_page synchronous\"\n  fix fs/sysv s_dirt handling\n  fat: convert to use the new truncate convention.\n  ext2: convert to use the new truncate convention.\n  tmpfs: convert to use the new truncate convention\n  fs: convert simple fs to new truncate\n  kill spurious reference to vmtruncate\n  fs: introduce new truncate sequence\n  fs/super: fix kernel-doc warning\n  fs/minix: bugfix, number of indirect block ptrs per block depends on block size\n  rename the generic fsync implementations\n  drop unused dentry argument to -\u003efsync\n  fs: Add missing mutex_unlock\n  Fix racy use of anon_inode_getfd() in perf_event.c\n  get rid of the magic around f_count in aio\n  VFS: fix recent breakage of FS_REVAL_DOT\n  Revert \"anon_inode: set S_IFREG on the anon_inode\"\n"
    },
    {
      "commit": "7bb46a6734a7e1ad4beaecc11cae7ed3ff81d30f",
      "tree": "e575d9c55e2a6ccc645dcb3ae2564de458b428f2",
      "parents": [
        "7000d3c424e5bb350e502a477fb0e1ed42f8b10e"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu May 27 01:05:33 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:15:33 2010 -0400"
      },
      "message": "fs: introduce new truncate sequence\n\nIntroduce a new truncate calling sequence into fs/mm subsystems. Rather than\nsetattr \u003e vmtruncate \u003e truncate, have filesystems call their truncate sequence\nfrom -\u003esetattr if filesystem specific operations are required. vmtruncate is\ndeprecated, and truncate_pagecache and inode_newsize_ok helpers introduced\npreviously should be used.\n\nsimple_setattr is introduced for simple in-ram filesystems to implement\nthe new truncate sequence. Eventually all filesystems should be converted\nto implement a setattr, and the default code in notify_change should go\naway.\n\nsimple_setsize is also introduced to perform just the ATTR_SIZE portion\nof simple_setattr (ie. changing i_size and trimming pagecache).\n\nTo implement the new truncate sequence:\n- filesystem specific manipulations (eg freeing blocks) must be done in\n  the setattr method rather than -\u003etruncate.\n- vmtruncate can not be used by core code to trim blocks past i_size in\n  the event of write failure after allocation, so this must be performed\n  in the fs code.\n- convert usage of helpers block_write_begin, nobh_write_begin,\n  cont_write_begin, and *blockdev_direct_IO* to use _newtrunc postfixed\n  variants. These avoid calling vmtruncate to trim blocks (see previous).\n- inode_setattr should not be used. generic_setattr is a new function\n  to be used to copy simple attributes into the generic inode.\n- make use of the better opportunity to handle errors with the new sequence.\n\nBig problem with the previous calling sequence: the filesystem is not called\nuntil i_size has already changed.  This means it is not allowed to fail the\ncall, and also it does not know what the previous i_size was. Also, generic\ncode calling vmtruncate to truncate allocated blocks in case of error had\nno good way to return a meaningful error (or, for example, atomically handle\nblock deallocation).\n\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1b061d9247f71cd15edc4c4c4600191a903642c0",
      "tree": "30d92ca82d8286e7a45fba108230ecd23e61673b",
      "parents": [
        "7ea8085910ef3dd4f3cad6845aaa2b580d39b115"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:41 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:06:06 2010 -0400"
      },
      "message": "rename the generic fsync implementations\n\nWe don\u0027t name our generic fsync implementations very well currently.\nThe no-op implementation for in-memory filesystems currently is called\nsimple_sync_file which doesn\u0027t make too much sense to start with,\nthe the generic one for simple filesystems is called simple_fsync\nwhich can lead to some confusion.\n\nThis patch renames the generic file fsync method to generic_file_fsync\nto match the other generic_file_* routines it is supposed to be used\nwith, and the no-op implementation to noop_fsync to make it obvious\nwhat to expect.  In addition add some documentation for both methods.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d7065da038227a4d09a244e6014e0186a6bd21d0",
      "tree": "0b3b30a6ec59aa03e5fb7084eed31f2a5dfc9686",
      "parents": [
        "176306f59ac7a35369cbba87aff13e14c5916074"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 26 15:13:55 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:03:07 2010 -0400"
      },
      "message": "get rid of the magic around f_count in aio\n\n__aio_put_req() plays sick games with file refcount.  What\nit wants is fput() from atomic context; it\u0027s almost always\ndone with f_count \u003e 1, so they only have to deal with delayed\nwork in rare cases when their reference happens to be the\nlast one.  Current code decrements f_count and if it hasn\u0027t\nhit 0, everything is fine.  Otherwise it keeps a pointer\nto struct file (with zero f_count!) around and has delayed\nwork do __fput() on it.\n\nBetter way to do it: use atomic_long_add_unless( , -1, 1)\ninstead of !atomic_long_dec_and_test().  IOW, decrement it\nonly if it\u0027s not the last reference, leave refcount alone\nif it was.  And use normal fput() in delayed work.\n\nI\u0027ve made that atomic_long_add_unless call a new helper -\nfput_atomic().  Drops a reference to file if it\u0027s safe to\ndo in atomic (i.e. if that\u0027s not the last one), tells if\nit had been able to do that.  aio.c converted to it, __fput()\nuse is gone.  req-\u003eki_file *always* contributes to refcount\nnow.  And __fput() became static.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aa36c7bf987dfa5597c0f7c46f8fca46b2dd33d2",
      "tree": "ad9fe2294b45562b434bf7cf9e387624057bbd65",
      "parents": [
        "9dda696f0de87a2e5cfabb147e28c76b7d3c6846",
        "43c9c59185eec7caaff6e9dd8d4c93a4d9836a86"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 18:34:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 18:34:58 2010 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:\n  libata: implement dump_id force param\n  libata: disable ATAPI AN by default\n  libata-sff: make BMDMA optional\n  libata-sff: kill dummy BMDMA ops from sata_qstor and pata_octeon_cf\n  libata-sff: separate out BMDMA init\n  libata-sff: separate out BMDMA irq handler\n  libata-sff: ata_sff_irq_clear() is BMDMA specific\n  sata_mv: drop unncessary EH callback resetting\n"
    },
    {
      "commit": "752138df0dc2daaae09379c754caeb08c97905dc",
      "tree": "4908627df11ccb42570fc3525c560f89c444781c",
      "parents": [
        "c0d64cb031c21f163a0ec15cf10844bcf0ceedcf"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Sat May 22 16:57:26 2010 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Thu May 27 21:06:58 2010 -0400"
      },
      "message": "cpuidle: make cpuidle_curr_driver static\n\ncpuidle_register_driver() sets cpuidle_curr_driver\ncpuidle_unregister_driver() clears cpuidle_curr_driver\n\nWe should\u0027t expose cpuidle_curr_driver to\npotential modification except via these interfaces.\nSo make it static and create cpuidle_get_driver() to observe it.\n\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "62579266cf9caca5b999560be2b5ceee42fc4d4d",
      "tree": "eda6066624c734ef3057a9dc568ebaf978499c1a",
      "parents": [
        "75907a1153b42100b7a5e960bfe47d208d726309"
      ],
      "author": {
        "name": "Rabin Vincent",
        "email": "rabin.vincent@stericsson.com",
        "time": "Wed May 19 11:39:02 2010 +0200"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "sameo@linux.intel.com",
        "time": "Fri May 28 01:38:00 2010 +0200"
      },
      "message": "mfd: New AB8500 driver\n\nAdd a new driver to support the AB8500 Power Management chip, replacing\nthe current AB4500.  The new driver replaces the old one, instead of an\nincremental modification, because this is a substantial overhaul\nincluding:\n\n - Split of the driver into -core and -spi portions, to allow another\n   interface layer to be added\n\n - Addition of interrupt support\n\n - Switch to MFD core API for handling subdevices\n\n - Simplification of the APIs to remove a redundant block parameter\n\n - Rename of the APIs and macros from ab4500_* to ab8500_*\n\n - Rename of the files from ab4500* to ab8500*\n\n - Change of the driver name from ab4500 to ab8500\n\nAcked-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nAcked-by: Srinidhi Kasagar \u003csrinidhi.kasagar@stericsson.com\u003e\nSigned-off-by: Rabin Vincent \u003crabin.vincent@stericsson.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@linux.intel.com\u003e\n"
    },
    {
      "commit": "fa661258a27aa74aaf741882053d195291cefb75",
      "tree": "73b6e0c7156088f660de465555ee13226ac78242",
      "parents": [
        "812f9e9d424dde9ccb35975c0281edb6f8543735"
      ],
      "author": {
        "name": "Mattias Wallin",
        "email": "mattias.wallin@stericsson.com",
        "time": "Sat May 01 18:26:20 2010 +0200"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "sameo@linux.intel.com",
        "time": "Fri May 28 01:37:45 2010 +0200"
      },
      "message": "mfd: AB3100 register access change to abx500 API\n\nThe interface for the AB3100 is changed to make way for the\nABX500 family of chips: AB3550, AB5500 and future ST-Ericsson\nAnalog Baseband chips. The register access functions are moved\nout to a separate struct abx500_ops. In this way the interface\nis moved from the implementation and the sub functionality drivers\ncan keep their interface intact when chip infrastructure and\ncommunication mechanisms changes. We also define the AB3550\ndevice IDs and the AB3550 platform data struct and convert\nthe catenated 32bit event to an array of 3 x 8bits.\n\nSigned-off-by: Mattias Wallin \u003cmattias.wallin@stericsson.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@linux.intel.com\u003e\n"
    },
    {
      "commit": "812f9e9d424dde9ccb35975c0281edb6f8543735",
      "tree": "6c86267a32459639801f6f169a953f691f6eaac7",
      "parents": [
        "d88b25be3584138e53076ea3eea3d886c870470e"
      ],
      "author": {
        "name": "Linus Walleij",
        "email": "linus.walleij@stericsson.com",
        "time": "Sat May 01 18:26:07 2010 +0200"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "sameo@linux.intel.com",
        "time": "Fri May 28 01:37:44 2010 +0200"
      },
      "message": "mfd: Renamed ab3100.h to abx500.h\n\nThe goal here is to make way for a more general interface for the\nanalog baseband chips ab3100 ab3550 ab550 and future chips.\n\nThis patch have been divided into two parts since both changing name\nand content of a file is not recommended in git.\n\nSigned-off-by: Mattias Wallin \u003cmattias.wallin@stericsson.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@linux.intel.com\u003e\n"
    },
    {
      "commit": "b4ecd326b789f1029c5d4a5239d9bd12ecac353d",
      "tree": "387b115b1a911c38a70b8d6c40bacb983bc613d5",
      "parents": [
        "68e488d965a9055c63c0eac4ad1e6568b07e8ee1"
      ],
      "author": {
        "name": "Rabin Vincent",
        "email": "rabin.vincent@stericsson.com",
        "time": "Mon May 10 23:39:47 2010 +0200"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "sameo@linux.intel.com",
        "time": "Fri May 28 01:37:42 2010 +0200"
      },
      "message": "mfd: Add Toshiba\u0027s TC35892 MFD core\n\nThe TC35892 I/O Expander provides 24 GPIOs, a keypad controller, timers,\nand a rotator wheel interface.  This patch adds the MFD core.\n\nAcked-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nSigned-off-by: Rabin Vincent \u003crabin.vincent@stericsson.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@linux.intel.com\u003e\n"
    },
    {
      "commit": "b03b4d7cdd8f18395494478634707c6f132080d6",
      "tree": "61f306b5b2842fa65c2813be85ccbbdf867aaddc",
      "parents": [
        "0d7e0e399d7fcd5ddc3313a1aa2135fab3226d8f"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Apr 08 10:02:39 2010 +0200"
      },
      "committer": {
        "name": "Samuel Ortiz",
        "email": "sameo@linux.intel.com",
        "time": "Fri May 28 01:37:39 2010 +0200"
      },
      "message": "mfd: Ensure WM831x charger interrupts are acknowledged when suspending\n\nThe charger interrupts on the WM831x are unconditionally a wake source\nfor the system. If the power driver is not able to monitor them (for\nexample, due to the IRQ line not having been wired up on the system)\nthen any charger interrupt will prevent the system suspending for any\nmeaningful amount of time since nothing will ack them.\n\nAvoid this issue by manually acknowledging these interrupts when we\nsuspend the WM831x core device if they are masked. If software is\nactually using the interrupts then they will be unmasked and this\nchange will have no effect.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Samuel Ortiz \u003csameo@linux.intel.com\u003e\n"
    }
  ],
  "next": "752599667048898b6969e06e4637f906b04ec752"
}
