)]}'
{
  "log": [
    {
      "commit": "3af968e066d593bc4dacc021715f3e95ddf0996f",
      "tree": "37851a67d855e228d503a569973469b067ef218a",
      "parents": [
        "46056be71c37378f518711da651e4bb76d650ee9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 08 12:31:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 08 12:31:53 2009 -0700"
      },
      "message": "async: Fix lack of boot-time console due to insufficient synchronization\n\nOur async work synchronization was broken by \"async: make sure\nindependent async domains can\u0027t accidentally entangle\" (commit\nd5a877e8dd409d8c702986d06485c374b705d340), because it would report\nthe wrong lowest active async ID when there was both running and\npending async work.\n\nThis caused things like no being able to read the root filesystem,\nresulting in missing console devices and inability to run \u0027init\u0027,\ncausing a boot-time panic.\n\nThis fixes it by properly returning the lowest pending async ID: if\nthere is any running async work, that will have a lower ID than any\npending work, and we should _not_ look at the pending work list.\n\nThere were alternative patches from Jaswinder and James, but this one\nalso cleans up the code by removing the pointless \u0027ret\u0027 variable and\nthe unnecesary testing for an empty list around \u0027for_each_entry()\u0027 (if\nthe list is empty, the for_each_entry() thing just won\u0027t execute).\n\nFixes-bug: http://bugzilla.kernel.org/show_bug.cgi?id\u003d13474\nReported-and-tested-by: Chris Clayton \u003cchris2553@googlemail.com\u003e\nCc: Jaswinder Singh Rajput \u003cjaswinder@kernel.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5a877e8dd409d8c702986d06485c374b705d340",
      "tree": "ece6d685c074c6823d31b7db99a52134866fd1a7",
      "parents": [
        "657cafa6b0f5296424d6f43f6f6eeb4a3222117e"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Sun May 24 13:03:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 24 13:38:41 2009 -0700"
      },
      "message": "async: make sure independent async domains can\u0027t accidentally entangle\n\nThe problem occurs when async_synchronize_full_domain() is called when\nthe async_pending list is not empty.  This will cause lowest_running()\nto return the cookie of the first entry on the async_pending list, which\nmight be nothing at all to do with the domain being asked for and thus\ncause the domain synchronization to wait for an unrelated domain.   This\ncan cause a deadlock if domain synchronization is used from one domain\nto wait for another.\n\nFix by running over the async_pending list to see if any pending items\nactually belong to our domain (and return their cookies if they do).\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9710794383ee5008d67f1a6613a4717bf6de47bc",
      "tree": "9917f2f1a345a6de6b957c308acc6b6b8813c697",
      "parents": [
        "5d80f8e5a9dc9c9a94d4aeaa567e219a808b8a4a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Mar 15 11:11:44 2009 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Mar 28 13:05:30 2009 -0700"
      },
      "message": "async: remove the temporary (2.6.29) \"async is off by default\" code\n\nNow that everyone has been able to test the async code (and it\u0027s being used\nin the Moblin betas by default), we can enable it by default.\nThe various fixes needed have gone into 2.6.29 already.\n\n[With an important bugfix from Stefan Richter]\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "f7de7621f07495ad14fb23a812003bcf8f6af65a",
      "tree": "56eee689f5bbc2cac09c08fcdf897e9366dafbf8",
      "parents": [
        "766ccb9ed406c230d13c145def08ebea1b932982"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Mon Feb 02 13:24:34 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 10:00:26 2009 -0800"
      },
      "message": "async: use list_move_tail\n\nlist.h provides a dedicated primitive for\n\"list_del followed by list_add_tail\"... list_move_tail.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\n"
    },
    {
      "commit": "766ccb9ed406c230d13c145def08ebea1b932982",
      "tree": "952f74260d8baa66063fd8efa1b29d2dddb45c2b",
      "parents": [
        "f30d5b307c694e03368ab55f2f96b0ca4131e775"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Tue Jan 20 15:31:31 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 09:56:11 2009 -0800"
      },
      "message": "async: Rename _special -\u003e _domain for clarity.\n\nRename the async_*_special() functions to async_*_domain(), which\ndescribes the purpose of these functions much better.\n[Broke up long lines to silence checkpatch]\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "f30d5b307c694e03368ab55f2f96b0ca4131e775",
      "tree": "86f1ceb849bc186e4fa9b64fd8459668f4133390",
      "parents": [
        "86532d8b167e71e24da8b564348b52977b76d15f"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Jan 19 13:45:33 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 09:56:11 2009 -0800"
      },
      "message": "async: Add some documentation.\n\nAdd some kerneldoc to the async interface.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "86532d8b167e71e24da8b564348b52977b76d15f",
      "tree": "86cfa88409db2867ddfc45322f7cd3175b6accad",
      "parents": [
        "7a89bbc74937cd74a6bcf109cfc7c032109639be"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Jan 19 13:45:31 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 09:56:10 2009 -0800"
      },
      "message": "async: Handle kthread_run() return codes.\n\nIf we fail to create the manager thread, fall back to non-fastboot.\nIf we fail to create an async thread, try again after waiting for\na bit.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "7a89bbc74937cd74a6bcf109cfc7c032109639be",
      "tree": "2b542e7f48c53cf1ef462524ecdf93b4d8a03f58",
      "parents": [
        "e83102cab0fd95d4508361b061146c978b3abd60"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Mon Jan 19 13:45:28 2009 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 09:56:10 2009 -0800"
      },
      "message": "async: Fix running list handling.\n\nasync_schedule() should pass in async_running as the running\nlist, and run_one_entry() should put the entry to be run on\nthe provided running list instead of always on the generic one.\n\nReported-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "58763a297405024d23d8f1d0bba3e6603660c4b6",
      "tree": "2ccbddc449bb704326070e373c5b10a8ae35e07a",
      "parents": [
        "647802d6db5f2e62e53f44bfdc61416547ba7f5b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Feb 04 15:11:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 05 12:56:46 2009 -0800"
      },
      "message": "kernel/async.c: fix printk warnings\n\nalpha:\n\nkernel/async.c: In function \u0027run_one_entry\u0027:\nkernel/async.c:141: warning: format \u0027%lli\u0027 expects type \u0027long long int\u0027, but argument 2 has type \u0027async_cookie_t\u0027\nkernel/async.c:149: warning: format \u0027%lli\u0027 expects type \u0027long long int\u0027, but argument 2 has type \u0027async_cookie_t\u0027\nkernel/async.c:149: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 4 has type \u0027s64\u0027\nkernel/async.c: In function \u0027async_synchronize_cookie_special\u0027:\nkernel/async.c:250: warning: format \u0027%lli\u0027 expects type \u0027long long int\u0027, but argument 3 has type \u0027s64\u0027\n\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37a76bd4f1b716949fc38a6842e89f0ccb8384d0",
      "tree": "6537cab6fb0e1a9508d34ca95b25808866bf04af",
      "parents": [
        "d32ad102c6d748b510fd89f1af4232eac1be8732"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Jan 11 15:35:01 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 12 16:39:58 2009 -0800"
      },
      "message": "async: fix __lowest_in_progress()\n\nAt 37000 feet somewhere near Greenland I woke up from a half-sleep with the\nrealisation that __lowest_in_progress() is buggy. After landing I checked\nand there were indeed 2 problems with it; this patch fixes both:\n* The order of the list checks was wrong\n* The locking was not correct.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdb80f630be5cbc23d82331f24dc4704f75b64f4",
      "tree": "537545e474b5906e4887aaa28e4e832134a97fa3",
      "parents": [
        "b32714ba29358a688ef337d5297bf4bdc9f596dc"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 09 13:23:45 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 09 13:23:45 2009 -0800"
      },
      "message": "async: make async a command line option for now\n\n... and have it default off.\nThis does allow people to work with it for testing.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "33b04b9308959af7febc1c111c766fa3fd8b1934",
      "tree": "3438b08d90973cee03f8e37e41c93c774aad5c85",
      "parents": [
        "85da1fb545e5fe51c35e0576f71780cc557f4277"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Jan 08 12:35:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 12:58:09 2009 -0800"
      },
      "message": "async: make async_synchronize_full() more serializing\n\nturns out that there are real problems with allowing async\ntasks that are scheduled from async tasks to run after\nthe async_synchronize_full() returns.\n\nThis patch makes the _full more strict and a complete\nsynchronization. Later I might need to add back a lighter\nform of synchronization for other uses.. but not right now.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad160d23198193135cb2bcc75222e0816b5838c0",
      "tree": "ba7cc0e98494d63a02b10ab22f896e07efa6f509",
      "parents": [
        "24b0ecad07ac4d7ef74cb6f7da08c449fa9f6a4f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 09:28:53 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 09:31:49 2009 -0800"
      },
      "message": "async: don\u0027t do the initcall stuff post boot\n\nwhile tracking the asynchronous calls during boot using the initcall_debug\nconvention is useful, doing it once the kernel is done is actually\nbad now that we use asynchronous operations post boot as well...\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "22a9d645677feefd402befd02edd59b122289ef1",
      "tree": "9f1215cc8f7f0e1c36b03882b2926cc26ccfa5ff",
      "parents": [
        "ede6f5aea054d3fb67c78857f7abdee602302043"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:45:46 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:45:46 2009 -0800"
      },
      "message": "async: Asynchronous function calls to speed up kernel boot\n\nRight now, most of the kernel boot is strictly synchronous, such that\nvarious hardware delays are done sequentially.\n\nIn order to make the kernel boot faster, this patch introduces\ninfrastructure to allow doing some of the initialization steps\nasynchronously, which will hide significant portions of the hardware delays\nin practice.\n\nIn order to not change device order and other similar observables, this\npatch does NOT do full parallel initialization.\n\nRather, it operates more in the way an out of order CPU does; the work may\nbe done out of order and asynchronous, but the observable effects\n(instruction retiring for the CPU) are still done in the original sequence.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    }
  ]
}
