)]}'
{
  "log": [
    {
      "commit": "8b759b84c8b3c27ccc8dd787294636297b3ebb40",
      "tree": "c80ae791c342d242fb97434c26be2b63764da77a",
      "parents": [
        "a9d7052363a6e06bb623ed1876c56c7ca5b2c6d8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jun 10 01:27:49 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:33 2009 +0200"
      },
      "message": "PM/Hibernate: Rename disk.c to hibernate.c\n\nChange the name of kernel/power/disk.c to kernel/power/hibernate.c\nin analogy with the file names introduced by the changes that\nseparated the suspend to RAM and standby funtionality from the\ncommon PM functions.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\n"
    },
    {
      "commit": "a9d7052363a6e06bb623ed1876c56c7ca5b2c6d8",
      "tree": "c4ec7fb30dc4510596ffc9ddffe308ef34837af2",
      "parents": [
        "783ea7d4eeefe895f2731fe73ac951e94418927b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jun 10 01:27:12 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:33 2009 +0200"
      },
      "message": "PM: Separate suspend to RAM functionality from core\n\nMove the suspend to RAM and standby code from kernel/power/main.c\nto two separate files, kernel/power/suspend.c containing the basic\nfunctions and kernel/power/suspend_test.c containing the automatic\nsuspend test facility based on the RTC clock alarm.\n\nThere are no changes in functionality related to these modifications.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\n"
    },
    {
      "commit": "783ea7d4eeefe895f2731fe73ac951e94418927b",
      "tree": "175b7ec1684d55710a7a921d4bd81e549ae4ed52",
      "parents": [
        "00725787511e20dbd1fdc1fb233606120ae5c8cf"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Jun 04 22:13:33 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:32 2009 +0200"
      },
      "message": "Driver Core: Rework platform suspend/resume, print warning\n\nThis patch reworks the platform driver code for legacy\nsuspend and resume to avoid installing callbacks in\nstruct device_driver. A warning is also added telling\nusers to update the platform driver to use dev_pm_ops.\n\nThe functions platform_legacy_suspend()/resume() directly\ncall suspend and resume callbacks in struct platform_driver\ninstead of wrapping things in platform_drv_suspend()/resume().\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "00725787511e20dbd1fdc1fb233606120ae5c8cf",
      "tree": "82fa3c48aca074a993a122751a2333000e1668a3",
      "parents": [
        "fe419535d82724314bbf1244a0e740e4ea1bd3ae"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Thu Jun 04 22:13:25 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:32 2009 +0200"
      },
      "message": "PM: Remove device_type suspend()/resume()\n\nThis patch removes the legacy callbacks -\u003esuspend() and\n-\u003eresume() from struct device_type. These callbacks seem\nunused, and new code should instead make use of struct\ndev_pm_ops.\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "fe419535d82724314bbf1244a0e740e4ea1bd3ae",
      "tree": "ceefd93df91b6325a99d481e79411dc310e3d27e",
      "parents": [
        "c6f37f12197ac3bd2e5a35f2f0e195ae63d437de"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jun 11 23:11:17 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:32 2009 +0200"
      },
      "message": "PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2)\n\nA future patch is going to modify the memory shrinking code so that\nit will make memory allocations to free memory instead of using an\nartificial memory shrinking mechanism for that.  For this purpose it\nis convenient to move swsusp_shrink_memory() from\nkernel/power/swsusp.c to kernel/power/snapshot.c, because the new\nmemory-shrinking code is going to use things that are local to\nkernel/power/snapshot.c .\n\n[rev. 2: Make some functions static and remove their headers from\n kernel/power/power.h]\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "c6f37f12197ac3bd2e5a35f2f0e195ae63d437de",
      "tree": "e9609ca63d211911582afcc4b8314887b85a6c46",
      "parents": [
        "e240b58c79144708530138e05f17c6d0d8d744a8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 24 22:16:31 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:32 2009 +0200"
      },
      "message": "PM/Suspend: Do not shrink memory before suspend\n\nRemove the shrinking of memory from the suspend-to-RAM code, where\nit is not really necessary.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Nigel Cunningham \u003cnigel@tuxonice.net\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "e240b58c79144708530138e05f17c6d0d8d744a8",
      "tree": "c42553ae8ffb034a767cebb0b4876db3528a2e11",
      "parents": [
        "d161630297a20802d01c55847bfcba85d2118a9f"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Sun May 24 22:05:54 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:31 2009 +0200"
      },
      "message": "PM: Remove bus_type suspend_late()/resume_early() V2\n\nRemove the -\u003esuspend_late() and -\u003eresume_early() callbacks\nfrom struct bus_type V2. These callbacks are legacy stuff\nat this point and since there seem to be no in-tree users\nwe may as well remove them. New users should use dev_pm_ops.\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "d161630297a20802d01c55847bfcba85d2118a9f",
      "tree": "51685c169319400b6da4dc6c56b69e731c45f297",
      "parents": [
        "e39a71ef80877f4e30d808af9acceec80f4d2f7c"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Sun May 24 22:05:42 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:31 2009 +0200"
      },
      "message": "PM core: rename suspend and resume functions\n\nThis patch (as1241) renames a bunch of functions in the PM core.\nRather than go through a boring list of name changes, suffice it to\nsay that in the end we have a bunch of pairs of functions:\n\n\tdevice_resume_noirq\tdpm_resume_noirq\n\tdevice_resume\t\tdpm_resume\n\tdevice_complete\t\tdpm_complete\n\tdevice_suspend_noirq\tdpm_suspend_noirq\n\tdevice_suspend\t\tdpm_suspend\n\tdevice_prepare\t\tdpm_prepare\n\nin which device_X does the X operation on a single device and dpm_X\ninvokes device_X for all devices in the dpm_list.\n\nIn addition, the old dpm_power_up and device_resume_noirq have been\ncombined into a single function (dpm_resume_noirq).\n\nLastly, dpm_suspend_start and dpm_resume_end are the renamed versions\nof the former top-level device_suspend and device_resume routines.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "e39a71ef80877f4e30d808af9acceec80f4d2f7c",
      "tree": "e9d4ff1618328cf3a3fafee04621b9776ca169de",
      "parents": [
        "1380a37e3da5d9e14ea5c2a4c6ab2b307a2798ea"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Fri May 15 00:53:26 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:31 2009 +0200"
      },
      "message": "PM: Rename device_power_down/up()\n\nRename the functions performing \"_noirq\" dev_pm_ops\noperations from device_power_down() and device_power_up()\nto device_suspend_noirq() and device_resume_noirq().\n\nThe new function names are chosen to show that the functions\nare responsible for calling the _noirq() versions to finalize\nthe suspend/resume operation. The current function names do\nnot perform power down/up anymore so the names may be misleading.\n\nGlobal function renames:\n- device_power_down() -\u003e device_suspend_noirq()\n- device_power_up() -\u003e device_resume_noirq()\n\nStatic function renames:\n- suspend_device_noirq() -\u003e __device_suspend_noirq()\n- resume_device_noirq() -\u003e __device_resume_noirq()\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Len Brown \u003clenb@kernel.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "1380a37e3da5d9e14ea5c2a4c6ab2b307a2798ea",
      "tree": "d3f29c303e4b10180d18b2159b9e04e3b4354d55",
      "parents": [
        "08687aec71bc9134fe336e561f6877bacf74fc0a"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Fri May 15 00:52:00 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:31 2009 +0200"
      },
      "message": "PM: Remove unused asm/suspend.h\n\nThis patch removes unused asm/suspend.h files for\nthe following architectures:\n\n alpha, arm, ia64, m68k, mips, s390, um\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "08687aec71bc9134fe336e561f6877bacf74fc0a",
      "tree": "e9fb4942f9b17b218d9093f5041805e597be6b6c",
      "parents": [
        "6d48becd33a7921694ba1955ba91604d648020f1"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:27:22 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:31 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64).c\n\nThis is the last unification step. Here we do remove one of the files\nand rename the left one as cpu.c, as both are now the same.\nAlso update power/Makefile, telling it to build cpu.o, instead of\ncpu_(32|64).o\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "6d48becd33a7921694ba1955ba91604d648020f1",
      "tree": "2ffd1b1615b667717f44884b88b9b222659be6da",
      "parents": [
        "3134d04b7790f7239b221f16c2d97db4d96ac3c0"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:27:18 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:30 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64) copyright notes\n\nIn this step, we do unify the copyright notes for both files\ncpu_32.c and cpu_64.c, making such files exactly the same.\nIt\u0027s the last step before the actual unification, that will\nrename one of them to cpu.c and remove the other one.\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "3134d04b7790f7239b221f16c2d97db4d96ac3c0",
      "tree": "45cb28131345c0556098c8b77c552cb8a9de64e3",
      "parents": [
        "f9ebbe53e79c5978d0e8ead0843a3717b41ad3d5"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:27:05 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:30 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64) regarding restoring processor state\n\nIn this step we do unify cpu_32.c and cpu_64.c functions that\nwork on restoring the saved processor state. Also, we do\neliminate the forward declaration of fix_processor_context()\nfor X86_64, as it\u0027s not needed anymore.\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "f9ebbe53e79c5978d0e8ead0843a3717b41ad3d5",
      "tree": "bceb57f37200a72cbca2ffd15881306fecffd649",
      "parents": [
        "833b2ca0795526898a66c7b6770273bb16567e19"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:27:00 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:30 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64) regarding saving processor state\n\nIn this step we do unify cpu_32.c and cpu_64.c functions that\nwork on saving the processor state.\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "833b2ca0795526898a66c7b6770273bb16567e19",
      "tree": "acc8ab4f3d352717a45fc1ee7a2923ef1b99ff79",
      "parents": [
        "f6783d20d4b85b360b4a6f86bdbd9282a4a7004c"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:26:50 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:30 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64) global variables\n\nAiming total unification of cpu_32.c and cpu_64.c, in this step\nwe do unify the global variables and existing forward declarations\nfor such files.\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "f6783d20d4b85b360b4a6f86bdbd9282a4a7004c",
      "tree": "be697adb8ccf61fda9341d43bc85da93c8c34a36",
      "parents": [
        "62b0124761b9c2e304ee07dcf4db46c4a3dfec11"
      ],
      "author": {
        "name": "Sergio Luis",
        "email": "sergio@larces.uece.br",
        "time": "Tue Apr 28 00:26:22 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:29 2009 +0200"
      },
      "message": "x86: unify power/cpu_(32|64) headers\n\nFirst step towards the unification of cpu_32.c and cpu_64.c.\nThis commit unifies the headers of such files, making both\nof them use the same header files. It also remove the uneeded\n\u003cmodule.h\u003e.\n\nSigned-off-by: Sergio Luis \u003csergio@larces.uece.br\u003e\nSigned-off-by: Lauro Salmito \u003claurosalmito@gmail.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "62b0124761b9c2e304ee07dcf4db46c4a3dfec11",
      "tree": "81f27bb0e7eb92cd2d14a3ae3088ef3fa90a3cc2",
      "parents": [
        "ce4b3c55475e451cb489e857640396c37ca88974"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sat Apr 18 13:45:13 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:29 2009 +0200"
      },
      "message": "PM: Warn if interrupts are enabled during suspend-resume of sysdevs\n\nSysdevs have to be suspended and resumed with interrupts disabled and\nthings usually break in a way that\u0027s difficult to debug if one of\nsysdev drivers enables interrupts by mistake during suspend or\nresume.  Add extra checks that will generate warnings in such cases.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "ce4b3c55475e451cb489e857640396c37ca88974",
      "tree": "af906466da35c20c24f1bf841596fe414bf8683f",
      "parents": [
        "e349792a385ed47390d156155b1a1e19af1bf163"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Sat Apr 18 13:44:57 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:29 2009 +0200"
      },
      "message": "PM/ACPI/x86: Fix sparse warning in arch/x86/kernel/acpi/sleep.c\n\nOne of the numbers in arch/x86/kernel/acpi/sleep.c is long, but it is\nnot annotated appropriately, so sparese warns about it.  Fix that.\n\n[rjw: added the changelog.]\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "e349792a385ed47390d156155b1a1e19af1bf163",
      "tree": "f9dc4e3e42769950230eaa58ecdd056eb27b23e8",
      "parents": [
        "6d21491838a2a9f22843c7530b118596ee9f4d77",
        "e3f86d3d3ce350144562d9bd035dc8a274fce58e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 11:16:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 11:16:27 2009 -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: (290 commits)\n  ALSA: pcm - Update document about xrun_debug proc file\n  ALSA: lx6464es - support standard alsa module parameters\n  ALSA: snd_usb_caiaq: set mixername\n  ALSA: hda - add quirk for STAC92xx (SigmaTel STAC9205)\n  ALSA: use card device as parent for jack input-devices\n  ALSA: sound/ps3: Correct existing and add missing annotations\n  ALSA: sound/ps3: Restructure driver source\n  ALSA: sound/ps3: Fix checkpatch issues\n  ASoC: Fix lm4857 control\n  ALSA: ctxfi - Clear PCM resources at hw_params and hw_free\n  ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacks\n  ALSA: ctxfi - Add missing start check in atc_pcm_playback_start()\n  ALSA: ctxfi - Add use_system_timer module option\n  ALSA: usb - Add boot quirk for C-Media 6206 USB Audio\n  ALSA: ctxfi - Fix wrong model id for UAA\n  ALSA: ctxfi - Clean up probe routines\n  ALSA: hda - Fix the previous tagra-8ch patch\n  ALSA: hda - Add 7.1 support for MSI GX620\n  ALSA: pcm - A helper function to compose PCM stream name for debug prints\n  ALSA: emu10k1 - Fix minimum periods for efx playback\n  ...\n"
    },
    {
      "commit": "e3f86d3d3ce350144562d9bd035dc8a274fce58e",
      "tree": "6d31842f5d8598ea377c09556e455402a06a64fe",
      "parents": [
        "056c1ebf1121ca6c16652d0c3fa306622ee338ac",
        "2233123f2776f29d3ac31df1fd1dc40c44d337a5"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:16 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:16 2009 +0200"
      },
      "message": "Merge branch \u0027topic/ps3\u0027 into for-linus\n\n* topic/ps3:\n  ALSA: sound/ps3: Correct existing and add missing annotations\n  ALSA: sound/ps3: Restructure driver source\n  ALSA: sound/ps3: Fix checkpatch issues\n"
    },
    {
      "commit": "056c1ebf1121ca6c16652d0c3fa306622ee338ac",
      "tree": "45b1950e81f1d9ffddee28c42bc29936fcbb43a0",
      "parents": [
        "be914cf91086ca7be9216a894cba0999ddbf541d",
        "4f64e150191bfddc7f5c0768f325f747dbca1913"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:15 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:15 2009 +0200"
      },
      "message": "Merge branch \u0027topic/pcm-jiffies-check\u0027 into for-linus\n\n* topic/pcm-jiffies-check:\n  ALSA: pcm - Update document about xrun_debug proc file\n"
    },
    {
      "commit": "be914cf91086ca7be9216a894cba0999ddbf541d",
      "tree": "f4bc2f8d71dbe702c55aa3dd0c45d01ca61b6d21",
      "parents": [
        "31d496aaee1dad6ac63770035793032f2062e336",
        "1f3fff7bda95b75a6be5a02c2a6902573d8c18e6"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:13 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:13 2009 +0200"
      },
      "message": "Merge branch \u0027topic/misc\u0027 into for-linus\n\n* topic/misc:\n  ALSA: use card device as parent for jack input-devices\n"
    },
    {
      "commit": "31d496aaee1dad6ac63770035793032f2062e336",
      "tree": "30e897fb3cbf823ab803656d006f94e09630db56",
      "parents": [
        "f8be792d515045a4ecfec0bc9cd883d1b070f132",
        "de0525ca34aa7a65faf6902e3e00956ab80d2ede"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:11 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:11 2009 +0200"
      },
      "message": "Merge branch \u0027topic/lx6464es\u0027 into for-linus\n\n* topic/lx6464es:\n  ALSA: lx6464es - support standard alsa module parameters\n"
    },
    {
      "commit": "f8be792d515045a4ecfec0bc9cd883d1b070f132",
      "tree": "497570bf0564503a08bfa6058a435506f39b509f",
      "parents": [
        "80986be4864239dde9bb69e90be7707344f03725",
        "a5c0f88678cd2fb1f649f7d366d756f2b2f97f0c"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:09 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:09 2009 +0200"
      },
      "message": "Merge branch \u0027topic/hda\u0027 into for-linus\n\n* topic/hda:\n  ALSA: hda - add quirk for STAC92xx (SigmaTel STAC9205)\n"
    },
    {
      "commit": "80986be4864239dde9bb69e90be7707344f03725",
      "tree": "66fccfbed173e556d77d6b4297b41846dc862a15",
      "parents": [
        "a6093a24bc7da25ce851d22ce3a7bcf1eaca4a95",
        "955f2d966534803ec32411086a1698170f17f962"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:06 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:06 2009 +0200"
      },
      "message": "Merge branch \u0027topic/caiaq\u0027 into for-linus\n\n* topic/caiaq:\n  ALSA: snd_usb_caiaq: set mixername\n"
    },
    {
      "commit": "a6093a24bc7da25ce851d22ce3a7bcf1eaca4a95",
      "tree": "608cf7ec7ece949810d7a1bb680b8b52864d6608",
      "parents": [
        "85e013a18acfad98473a4432bb7082d1fcc74a25",
        "236e6723bedb483b2ebf73ada01e2c853c5cac01"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:04 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Fri Jun 12 20:03:04 2009 +0200"
      },
      "message": "Merge branch \u0027topic/asoc\u0027 into for-linus\n\n* topic/asoc:\n  ASoC: Fix lm4857 control\n"
    },
    {
      "commit": "6d21491838a2a9f22843c7530b118596ee9f4d77",
      "tree": "9dcd7a4009d219092c391454efc3dd29b23f52d7",
      "parents": [
        "c9b8af00ff71f86ff3d092cc60ca673e1d0eae5b",
        "8429db5c6336083594036c30f49401405d536911"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:52:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:52:30 2009 -0700"
      },
      "message": "Merge branch \u0027topic/slab/earlyboot-v2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027topic/slab/earlyboot-v2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slab: setup cpu caches later on when interrupts are enabled\n  slab,slub: don\u0027t enable interrupts during early boot\n  slab: fix gfp flag in setup_cpu_cache()\n  x86: make zap_low_mapping could be used early\n  irq: slab alloc for default irq_affinity\n  memcg: fix page_cgroup fatal error in FLATMEM\n"
    },
    {
      "commit": "c9b8af00ff71f86ff3d092cc60ca673e1d0eae5b",
      "tree": "25cc016481cc693552bebb4040041817280c2ccf",
      "parents": [
        "c59a264c9e932c828d533497e286b89e43c8d1be",
        "82681a318f9f028ea64e61f24bbd9ac535531921"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:50:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:50:42 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (154 commits)\n  [SCSI] osd: Remove out-of-tree left overs\n  [SCSI] libosd: Use REQ_QUIET requests.\n  [SCSI] osduld: use filp_open() when looking up an osd-device\n  [SCSI] libosd: Define an osd_dev wrapper to retrieve the request_queue\n  [SCSI] libosd: osd_req_{read,write} takes a length parameter\n  [SCSI] libosd: Let _osd_req_finalize_data_integrity receive number of out_bytes\n  [SCSI] libosd: osd_req_{read,write}_kern new API\n  [SCSI] libosd: Better printout of OSD target system information\n  [SCSI] libosd: OSD2r05: Attribute definitions\n  [SCSI] libosd: OSD2r05: Additional command enums\n  [SCSI] mpt fusion: fix up doc book comments\n  [SCSI] mpt fusion: Added support for Broadcast primitives Event handling\n  [SCSI] mpt fusion: Queue full event handling\n  [SCSI] mpt fusion: RAID device handling and Dual port Raid support is added\n  [SCSI] mpt fusion: Put IOC into ready state if it not already in ready state\n  [SCSI] mpt fusion: Code Cleanup patch\n  [SCSI] mpt fusion: Rescan SAS topology added\n  [SCSI] mpt fusion: SAS topology scan changes, expander events\n  [SCSI] mpt fusion: Firmware event implementation using seperate WorkQueue\n  [SCSI] mpt fusion: rewrite of ioctl_cmds internal generated function\n  ...\n"
    },
    {
      "commit": "c59a264c9e932c828d533497e286b89e43c8d1be",
      "tree": "ccbc50e44e5b6142bd17519829f12d8e7cf57cc6",
      "parents": [
        "6cb8a911745616eee0bdd97a2e82eb9723e9599a",
        "6e03a201bbe8137487f340d26aa662110e324b20"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:44:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:44:30 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/~dwmw2/firmware-2.6\n\n* git://git.infradead.org/~dwmw2/firmware-2.6:\n  firmware: speed up request_firmware(), v3\n"
    },
    {
      "commit": "6cb8a911745616eee0bdd97a2e82eb9723e9599a",
      "tree": "f5a95d10443653009ee0db290657b938c5215695",
      "parents": [
        "7f3591cfacf2d79c4f42238e46c7d053da8e020d",
        "3ea400581f2b595afd91207bbd79c11cb38598e0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:43:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:43:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:\n  GFS2: Remove lock_kernel from gfs2_put_super()\n  GFS2: Add tracepoints\n"
    },
    {
      "commit": "7f3591cfacf2d79c4f42238e46c7d053da8e020d",
      "tree": "f2e9ed7b6b0bc176facaa49846734790023a6b16",
      "parents": [
        "16ffc3eeaa00d513b0076b7b2b96419f28acc912",
        "d1f0132e76a11b05167313c606a853953f416081"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:32:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:32:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest: (31 commits)\n  lguest: add support for indirect ring entries\n  lguest: suppress notifications in example Launcher\n  lguest: try to batch interrupts on network receive\n  lguest: avoid sending interrupts to Guest when no activity occurs.\n  lguest: implement deferred interrupts in example Launcher\n  lguest: remove obsolete LHREQ_BREAK call\n  lguest: have example Launcher service all devices in separate threads\n  lguest: use eventfds for device notification\n  eventfd: export eventfd_signal and eventfd_fget for lguest\n  lguest: allow any process to send interrupts\n  lguest: PAE fixes\n  lguest: PAE support\n  lguest: Add support for kvm_hypercall4()\n  lguest: replace hypercall name LHCALL_SET_PMD with LHCALL_SET_PGD\n  lguest: use native_set_* macros, which properly handle 64-bit entries when PAE is activated\n  lguest: map switcher with executable page table entries\n  lguest: fix writev returning short on console output\n  lguest: clean up length-used value in example launcher\n  lguest: Segment selectors are 16-bit long. Fix lg_cpu.ss1 definition.\n  lguest: beyond ARRAY_SIZE of cpu-\u003earch.gdt\n  ...\n"
    },
    {
      "commit": "16ffc3eeaa00d513b0076b7b2b96419f28acc912",
      "tree": "82503d25fb9091fc6628961d953ffc0d305adf27",
      "parents": [
        "c34752bc8b3196aee3115d1aa41972604ab0aea8",
        "e3353853730eb99c56b7b0aed1667d51c0e3699a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:31:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:31:52 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-virtio\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-virtio:\n  virtio: enhance id_matching for virtio drivers\n  virtio: fix id_matching for virtio drivers\n  virtio: handle short buffers in virtio_rng.\n  virtio_blk: add missing __dev{init,exit} markings\n  virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)\n  virtio: teach virtio_has_feature() about transport features\n  virtio: expose features in sysfs\n  virtio_pci: optional MSI-X support\n  virtio_pci: split up vp_interrupt\n  virtio: find_vqs/del_vqs virtio operations\n  virtio: add names to virtqueue struct, mapping from devices to queues.\n  virtio: meet virtio spec by finalizing features before using device\n  virtio: fix obsolete documentation on probe function\n"
    },
    {
      "commit": "c34752bc8b3196aee3115d1aa41972604ab0aea8",
      "tree": "db93341ab4043e1c21d83f0b7dfdbc1798b88845",
      "parents": [
        "65d52cc9d47975f4fbd0a50e62f4a49be2c0514a",
        "151060ac13144208bd7601d17e4c92c59b98072f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:31:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:31:20 2009 -0700"
      },
      "message": "Merge branch \u0027cuse\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027cuse\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  CUSE: implement CUSE - Character device in Userspace\n  fuse: export symbols to be used by CUSE\n  fuse: update fuse_conn_init() and separate out fuse_conn_kill()\n  fuse: don\u0027t use inode in fuse_file_poll\n  fuse: don\u0027t use inode in fuse_do_ioctl() helper\n  fuse: don\u0027t use inode in fuse_sync_release()\n  fuse: create fuse_do_open() helper for CUSE\n  fuse: clean up args in fuse_finish_open() and fuse_release_fill()\n  fuse: don\u0027t use inode in helpers called by fuse_direct_io()\n  fuse: add members to struct fuse_file\n  fuse: prepare fuse_direct_io() for CUSE\n  fuse: clean up fuse_write_fill()\n  fuse: use struct path in release structure\n  fuse: misc cleanups\n"
    },
    {
      "commit": "65d52cc9d47975f4fbd0a50e62f4a49be2c0514a",
      "tree": "01f8eccc8ffac28112a58e397d96e8eba2de5ebf",
      "parents": [
        "d614aec4752f8c61b2e7cb77806b6bd59aa50836",
        "5933048c69edb546f1e93c26dc93816f0be9f754"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:30:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:30:36 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param:\n  module: cleanup FIXME comments about trimming exception table entries.\n  module: trim exception table on init free.\n  module: merge module_alloc() finally\n  uml module: fix uml build process due to this merge\n  x86 module: merge the rest functions with macros\n  x86 module: merge the same functions in module_32.c and module_64.c\n  uvesafb: improve parameter handling.\n  module_param: allow \u0027bool\u0027 module_params to be bool, not just int.\n  module_param: add __same_type convenience wrapper for __builtin_types_compatible_p\n  module_param: split perm field into flags and perm\n  module_param: invbool should take a \u0027bool\u0027, not an \u0027int\u0027\n  cyber2000fb.c: use proper method for stopping unload if CONFIG_ARCH_SHARK\n"
    },
    {
      "commit": "d614aec4752f8c61b2e7cb77806b6bd59aa50836",
      "tree": "3b0cfb3085c43415931dbf18666d582fb8ae3c75",
      "parents": [
        "db8e7f10ed67933ca272f4030eb7057b7f13de07",
        "ad7c52d0988a8965989dc06d630c52a5bde849d5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (29 commits)\n  ide: re-implement ide_pci_init_one() on top of ide_pci_init_two()\n  ide: unexport ide_find_dma_mode()\n  ide: fix PowerMac bootup oops\n  ide: skip probe if there are no devices on the port (v2)\n  sl82c105: add printk() logging facility\n  ide-tape: fix proc warning\n  ide: add IDE_DFLAG_NIEN_QUIRK device flag\n  ide: respect quirk_drives[] list on all controllers\n  hpt366: enable all quirks for devices on quirk_drives[] list\n  hpt366: sync quirk_drives[] list with pdc202xx_{new,old}.c\n  ide: remove superfluous SELECT_MASK() call from do_rw_taskfile()\n  ide: remove superfluous SELECT_MASK() call from ide_driveid_update()\n  icside: remove superfluous -\u003emaskproc method\n  ide-tape: fix IDE_AFLAG_* atomic accesses\n  ide-tape: change IDE_AFLAG_IGNORE_DSC non-atomically\n  pdc202xx_old: kill resetproc() method\n  pdc202xx_old: don\u0027t call pdc202xx_reset() on IRQ timeout\n  pdc202xx_old: use ide_dma_test_irq()\n  ide: preserve Host Protected Area by default (v2)\n  ide-gd: implement block device -\u003eset_capacity method (v2)\n  ...\n"
    },
    {
      "commit": "db8e7f10ed67933ca272f4030eb7057b7f13de07",
      "tree": "0e0ef8b5fc4357fc91d34b75ee4603468439d348",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086",
        "1260866a271abc84274345580f3d613d3bceff87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:26:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:26:32 2009 -0700"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86: Provide _sdata in the vmlinux.lds.S file\n  x86: handle initrd that extends into unusable memory\n"
    },
    {
      "commit": "8429db5c6336083594036c30f49401405d536911",
      "tree": "00ab1aa8e222f384bac0e66b7da195279b1c7698",
      "parents": [
        "7e85ee0c1d15ca5f8bff0f514f158eba1742dd87"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 15:58:59 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 18:53:58 2009 +0300"
      },
      "message": "slab: setup cpu caches later on when interrupts are enabled\n\nFixes the following boot-time warning:\n\n  [    0.000000] ------------[ cut here ]------------\n  [    0.000000] WARNING: at kernel/smp.c:369 smp_call_function_many+0x56/0x1bc()\n  [    0.000000] Hardware name:\n  [    0.000000] Modules linked in:\n  [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30 #492\n  [    0.000000] Call Trace:\n  [    0.000000]  [\u003cffffffff8149e021\u003e] ? _spin_unlock+0x4f/0x5c\n  [    0.000000]  [\u003cffffffff8108f11b\u003e] ? smp_call_function_many+0x56/0x1bc\n  [    0.000000]  [\u003cffffffff81061764\u003e] warn_slowpath_common+0x7c/0xa9\n  [    0.000000]  [\u003cffffffff810617a5\u003e] warn_slowpath_null+0x14/0x16\n  [    0.000000]  [\u003cffffffff8108f11b\u003e] smp_call_function_many+0x56/0x1bc\n  [    0.000000]  [\u003cffffffff810f3e00\u003e] ? do_ccupdate_local+0x0/0x54\n  [    0.000000]  [\u003cffffffff810f3e00\u003e] ? do_ccupdate_local+0x0/0x54\n  [    0.000000]  [\u003cffffffff8108f2be\u003e] smp_call_function+0x3d/0x68\n  [    0.000000]  [\u003cffffffff810f3e00\u003e] ? do_ccupdate_local+0x0/0x54\n  [    0.000000]  [\u003cffffffff81066fd8\u003e] on_each_cpu+0x31/0x7c\n  [    0.000000]  [\u003cffffffff810f64f5\u003e] do_tune_cpucache+0x119/0x454\n  [    0.000000]  [\u003cffffffff81087080\u003e] ? lockdep_init_map+0x94/0x10b\n  [    0.000000]  [\u003cffffffff818133b0\u003e] ? kmem_cache_init+0x421/0x593\n  [    0.000000]  [\u003cffffffff810f69cf\u003e] enable_cpucache+0x68/0xad\n  [    0.000000]  [\u003cffffffff818133c3\u003e] kmem_cache_init+0x434/0x593\n  [    0.000000]  [\u003cffffffff8180987c\u003e] ? mem_init+0x156/0x161\n  [    0.000000]  [\u003cffffffff817f8aae\u003e] start_kernel+0x1cc/0x3b9\n  [    0.000000]  [\u003cffffffff817f829a\u003e] x86_64_start_reservations+0xaa/0xae\n  [    0.000000]  [\u003cffffffff817f837f\u003e] x86_64_start_kernel+0xe1/0xe8\n  [    0.000000] ---[ end trace 4eaa2a86a8e2da22 ]---\n\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "7e85ee0c1d15ca5f8bff0f514f158eba1742dd87",
      "tree": "8f9c21f0df6bea88740d7dd48834ac9ffc238e93",
      "parents": [
        "eb91f1d0a531289e18f5587dc197d12a251c66a3"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 14:03:06 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 18:53:33 2009 +0300"
      },
      "message": "slab,slub: don\u0027t enable interrupts during early boot\n\nAs explained by Benjamin Herrenschmidt:\n\n  Oh and btw, your patch alone doesn\u0027t fix powerpc, because it\u0027s missing\n  a whole bunch of GFP_KERNEL\u0027s in the arch code... You would have to\n  grep the entire kernel for things that check slab_is_available() and\n  even then you\u0027ll be missing some.\n\n  For example, slab_is_available() didn\u0027t always exist, and so in the\n  early days on powerpc, we used a mem_init_done global that is set form\n  mem_init() (not perfect but works in practice). And we still have code\n  using that to do the test.\n\nTherefore, mask out __GFP_WAIT, __GFP_IO, and __GFP_FS in the slab allocators\nin early boot code to avoid enabling interrupts.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "eb91f1d0a531289e18f5587dc197d12a251c66a3",
      "tree": "1f790559b312d7481aecad90a7fd4ccf47ccdfa2",
      "parents": [
        "55cd63676e0c5710fbe1ea86dfd9f8ea9aaa90f2"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 14:56:09 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 18:34:32 2009 +0300"
      },
      "message": "slab: fix gfp flag in setup_cpu_cache()\n\nFixes the following warning during bootup when compiling with CONFIG_SLAB:\n\n  [    0.000000] ------------[ cut here ]------------\n  [    0.000000] WARNING: at kernel/lockdep.c:2282 lockdep_trace_alloc+0x91/0xb9()\n  [    0.000000] Hardware name:\n  [    0.000000] Modules linked in:\n  [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30 #491\n  [    0.000000] Call Trace:\n  [    0.000000]  [\u003cffffffff81087d84\u003e] ? lockdep_trace_alloc+0x91/0xb9\n  [    0.000000]  [\u003cffffffff81061764\u003e] warn_slowpath_common+0x7c/0xa9\n  [    0.000000]  [\u003cffffffff810617a5\u003e] warn_slowpath_null+0x14/0x16\n  [    0.000000]  [\u003cffffffff81087d84\u003e] lockdep_trace_alloc+0x91/0xb9\n  [    0.000000]  [\u003cffffffff810f5b03\u003e] kmem_cache_alloc_node_notrace+0x26/0xdf\n  [    0.000000]  [\u003cffffffff81487f4e\u003e] ? setup_cpu_cache+0x7e/0x210\n  [    0.000000]  [\u003cffffffff81487fe3\u003e] setup_cpu_cache+0x113/0x210\n  [    0.000000]  [\u003cffffffff810f73ff\u003e] kmem_cache_create+0x409/0x486\n  [    0.000000]  [\u003cffffffff818131c1\u003e] kmem_cache_init+0x232/0x593\n  [    0.000000]  [\u003cffffffff8180987c\u003e] ? mem_init+0x156/0x161\n  [    0.000000]  [\u003cffffffff817f8aae\u003e] start_kernel+0x1cc/0x3b9\n  [    0.000000]  [\u003cffffffff817f829a\u003e] x86_64_start_reservations+0xaa/0xae\n  [    0.000000]  [\u003cffffffff817f837f\u003e] x86_64_start_kernel+0xe1/0xe8\n  [    0.000000] ---[ end trace 4eaa2a86a8e2da22 ]---\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "82681a318f9f028ea64e61f24bbd9ac535531921",
      "tree": "529b6a5b4fd040fb54b7672b1a224ebd47445876",
      "parents": [
        "3860c97bd60a4525bb62eb90e3e7d2f02662ac59",
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jun 12 10:02:03 2009 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jun 12 10:02:03 2009 -0500"
      },
      "message": "[SCSI] Merge branch \u0027linus\u0027\n\nConflicts:\n\tdrivers/message/fusion/mptsas.c\n\nfixed up conflict between req-\u003edata_len accessors and mptsas driver updates.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "d1f0132e76a11b05167313c606a853953f416081",
      "tree": "abd06f91d578b1927249f6a467910da88b3ec910",
      "parents": [
        "b60da13fc7bbf99d3c68578bd3fbcf66e1cb5f41"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Mon May 11 18:11:46 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:13 2009 +0930"
      },
      "message": "lguest: add support for indirect ring entries\n\nSupport the VIRTIO_RING_F_INDIRECT_DESC feature.\n\nThis is a simple matter of changing the descriptor walking\ncode to operate on a struct vring_desc* and supplying it\nwith an indirect table if detected.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b60da13fc7bbf99d3c68578bd3fbcf66e1cb5f41",
      "tree": "6ae96583da3212755d867fdff30b2f9ae58609e8",
      "parents": [
        "4a8962e21bc505c714fc2508494d4c7dd3fe2d29"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:13 2009 +0930"
      },
      "message": "lguest: suppress notifications in example Launcher\n\nThe Guest only really needs to tell us about activity when we\u0027re going\nto listen to the eventfd: normally, we don\u0027t want to know.\n\nSo if there are no available buffers, turn on notifications, re-check,\nthen wait for the Guest to notify us via the eventfd, then turn\nnotifications off again.\n\nThere\u0027s enough else going on that the differences are in the noise.\n\nBefore:\t\t\t\tSecs\tRxKicks\tTxKicks\n 1G TCP Guest-\u003eHost:\t\t3.94\t  4686\t  32815\n 1M normal pings:\t\t104\t142862\t1000010\n 1M 1k pings (-l 120):\t\t57\t142026\t1000007\n\nAfter:\n 1G TCP Guest-\u003eHost:\t\t3.76\t  4691\t  32811\n 1M normal pings:\t\t111\t142859\t 997467\n 1M 1k pings (-l 120):\t\t55\t 19648\t 501549\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4a8962e21bc505c714fc2508494d4c7dd3fe2d29",
      "tree": "55afdb7bc1f7e03bc910e59a17962e671a031ebc",
      "parents": [
        "95c517c09bad31a03e22f2fdb5f0aa26a490a92d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 +0930"
      },
      "message": "lguest: try to batch interrupts on network receive\n\nRather than triggering an interrupt every time, we only trigger an\ninterrupt when there are no more incoming packets (or the recv queue\nis full).\n\nHowever, the overhead of doing the select to figure this out is\nmeasurable: 1M pings goes from 98 to 104 seconds, and 1G Guest-\u003eHost\nTCP goes from 3.69 to 3.94 seconds.  It\u0027s close to the noise though.\n\nI tested various timeouts, including reducing it as the number of\npending packets increased, timing a 1 gigabyte TCP send from Guest -\u003e\nHost and Host -\u003e Guest (GSO disabled, to increase packet rate).\n\n// time tcpblast -o -s 65536 -c 16k 192.168.2.1:9999 \u003e /dev/null\n\nTimeout\t\tGuest-\u003eHost\tPkts/irq\tHost-\u003eGuest\tPkts/irq\nBefore\t\t11.3s\t\t1.0\t\t6.3s\t\t1.0\n0\t\t11.7s\t\t1.0\t\t6.6s\t\t23.5\n1\t\t17.1s\t\t8.8\t\t8.6s\t\t26.0\n1/pending\t13.4s\t\t1.9\t\t6.6s\t\t23.8\n2/pending\t13.6s\t\t2.8\t\t6.6s\t\t24.1\n5/pending\t14.1s\t\t5.0\t\t6.6s\t\t24.4\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "95c517c09bad31a03e22f2fdb5f0aa26a490a92d",
      "tree": "aa34fdb7ca3a6b7575a2ac7639c157995d334bc3",
      "parents": [
        "38bc2b8c56a2e212bbd19de7cf9976dcc7bf9953"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 +0930"
      },
      "message": "lguest: avoid sending interrupts to Guest when no activity occurs.\n\nIf we track how many buffers we\u0027ve used, we can tell whether we really\nneed to interrupt the Guest.  This happens as a side effect of\nspurious notifications.\n\nSpurious notifications happen because it can take a while before the\nHost thread wakes up and sets the VRING_USED_F_NO_NOTIFY flag, and\nmeanwhile the Guest can more notifications.\n\nA real fix would be to use wake counts, rather than a suppression\nflag, but the practical difference is generally in the noise: the\ninterrupt is usually coalesced into a pending one anyway so we just\nsave a system call which isn\u0027t clearly measurable.\n\n\t\t\t\tSecs\tSpurious IRQS\n1G TCP Guest-\u003eHost:\t\t3.93\t58\n1M normal pings:\t\t100\t72\n1M 1k pings (-l 120):\t\t57\t492904\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "38bc2b8c56a2e212bbd19de7cf9976dcc7bf9953",
      "tree": "26071dbb540926c329ece0ab4d4425807021b5c8",
      "parents": [
        "5dac051bc6030963181b69faddd9e0ad04f85fa8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 +0930"
      },
      "message": "lguest: implement deferred interrupts in example Launcher\n\nRather than sending an interrupt on every buffer, we only send an interrupt\nwhen we\u0027re about to wait for the Guest to send us a new one.  The console\ninput and network input still send interrupts manually, but the block device,\nnetwork and console output queues can simply rely on this logic to send\ninterrupts to the Guest at the right time.\n\nThe patch is cluttered by moving trigger_irq() higher in the code.\n\nIn practice, two factors make this optimization less interesting:\n(1) we often only get one input at a time, even for networking,\n(2) triggering an interrupt rapidly tends to get coalesced anyway.\n\nBefore:\t\t\t\tSecs\tRxIRQS\tTxIRQs\n 1G TCP Guest-\u003eHost:\t\t3.72\t32784\t32771\n 1M normal pings:\t\t99\t1000004\t995541\n 100,000 1k pings (-l 120):\t5\t49510\t49058\n\nAfter:\n 1G TCP Guest-\u003eHost:\t\t3.69\t32809\t32769\n 1M normal pings:\t\t99\t1000004\t996196\n 100,000 1k pings (-l 120):\t5\t52435\t52361\n\n(Note the interrupt count on 100k pings goes *up*: see next patch).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5dac051bc6030963181b69faddd9e0ad04f85fa8",
      "tree": "4a0456e1d971bbe9f68f4ac13d31716c12fbb618",
      "parents": [
        "659a0e6633567246edcb7bd400c7e2bece9237d9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 +0930"
      },
      "message": "lguest: remove obsolete LHREQ_BREAK call\n\nWe no longer need an efficient mechanism to force the Guest back into\nhost userspace, as each device is serviced without bothering the main\nGuest process (aka. the Launcher).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "659a0e6633567246edcb7bd400c7e2bece9237d9",
      "tree": "2ece97564e432b837389e166d9b61773d34b1063",
      "parents": [
        "df60aeef4f4fe0645d9a195a7689005520422de5"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 +0930"
      },
      "message": "lguest: have example Launcher service all devices in separate threads\n\nCurrently lguest has three threads: the main Launcher thread, a Waker\nthread, and a thread for the block device (because synchronous block\nwas simply too painful to bear).\n\nThe Waker selects() on all the input file descriptors (eg. stdin, net\ndevices, pipe to the block thread) and when one becomes readable it calls\ninto the kernel to kick the Launcher thread out into userspace, which\nrepeats the poll, services the device(s), and then tells the kernel to\nrelease the Waker before re-entering the kernel to run the Guest.\n\nAlso, to make a slightly-decent network transmit routine, the Launcher\nwould suppress further network interrupts while it set a timer: that\nsignal handler would write to a pipe, which would rouse the Waker\nwhich would prod the Launcher out of the kernel to check the network\ndevice again.\n\nNow we can convert all our virtqueues to separate threads: each one has\na separate eventfd for when the Guest pokes the device, and can trigger\ninterrupts in the Guest directly.\n\nThe linecount shows how much this simplifies, but to really bring it\nhome, here\u0027s an strace analysis of single Guest-\u003eHost ping before:\n\n* Guest sends packet, notifies xmit vq, return control to Launcher\n* Launcher clears notification flag on xmit ring\n* Launcher writes packet to TUN device\n\twritev(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"\\366\\r\\224`\\2058\\272m\\224vf\\274\\10\\0E\\0\\0T\\0\\0@\\0@\\1\\265\"..., 98}], 2) \u003d 108\n* Launcher sets up interrupt for Guest (xmit ring is empty)\n\twrite(10, \"\\2\\0\\0\\0\\3\\0\\0\\0\", 8) \u003d 0\n* Launcher sets up timer for interrupt mitigation\n\tsetitimer(ITIMER_REAL, {it_interval\u003d{0, 0}, it_value\u003d{0, 505}}, NULL) \u003d 0\n* Launcher re-runs guest\n\tpread64(10, 0xbfa5f4d4, 4, 0) ...\n* Waker notices reply packet in tun device (it was in select)\n\tselect(12, [0 3 4 6 11], NULL, NULL, NULL) \u003d 1 (in [4])\n* Waker kicks Launcher out of guest:\n\tpwrite64(10, \"\\3\\0\\0\\0\\1\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher returns from running guest:\n\t... \u003d -1 EAGAIN (Resource temporarily unavailable)\n* Launcher looks at input fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 1 (in [4], left {0, 0})\n* Launcher reads pong from tun device:\n\treadv(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"\\272m\\224vf\\274\\366\\r\\224`\\2058\\10\\0E\\0\\0T\\364\\26\\0\\0@\"..., 1518}], 2) \u003d 108\n* Launcher injects guest notification:\n\twrite(10, \"\\2\\0\\0\\0\\2\\0\\0\\0\", 8) \u003d 0\n* Launcher rechecks fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 0 (Timeout)\n* Launcher clears Waker:\n\tpwrite64(10, \"\\3\\0\\0\\0\\0\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher reruns Guest:\n\tpread64(10, 0xbfa5f4d4, 4, 0) \u003d ? ERESTARTSYS (To be restarted)\n* Signal comes in, uses pipe to wake up Launcher:\n\t--- SIGALRM (Alarm clock) @ 0 (0) ---\n\twrite(8, \"\\0\", 1)       \u003d 1\n\tsigreturn()             \u003d ? (mask now [])\n* Waker sees write on pipe:\n\tselect(12, [0 3 4 6 11], NULL, NULL, NULL) \u003d 1 (in [6])\n* Waker kicks Launcher out of Guest:\n\tpwrite64(10, \"\\3\\0\\0\\0\\1\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher exits from kernel:\n\tpread64(10, 0xbfa5f4d4, 4, 0) \u003d -1 EAGAIN (Resource temporarily unavailable)\n* Launcher looks to see what fd woke it:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 1 (in [6], left {0, 0})\n* Launcher reads timeout fd, sets notification flag on xmit ring\n\tread(6, \"\\0\", 32)       \u003d 1\n* Launcher rechecks fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 0 (Timeout)\n* Launcher clears Waker:\n\tpwrite64(10, \"\\3\\0\\0\\0\\0\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher resumes Guest:\n\tpread64(10, \"\\0p\\0\\4\", 4, 0) ....\n\nstrace analysis of single Guest-\u003eHost ping after:\n\n* Guest sends packet, notifies xmit vq, creates event on eventfd.\n* Network xmit thread wakes from read on eventfd:\n\tread(7, \"\\1\\0\\0\\0\\0\\0\\0\\0\", 8)          \u003d 8\n* Network xmit thread writes packet to TUN device\n\twritev(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"J\\217\\232FI\\37j\\27\\375\\276\\0\\304\\10\\0E\\0\\0T\\0\\0@\\0@\\1\\265\"..., 98}], 2) \u003d 108\n* Network recv thread wakes up from read on tunfd:\n\treadv(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"j\\27\\375\\276\\0\\304J\\217\\232FI\\37\\10\\0E\\0\\0TiO\\0\\0@\\1\\214\"..., 1518}], 2) \u003d 108\n* Network recv thread sets up interrupt for the Guest\n\twrite(6, \"\\2\\0\\0\\0\\2\\0\\0\\0\", 8) \u003d 0\n* Network recv thread goes back to reading tunfd\n\t13:39:42.460285 readv(4,  \u003cunfinished ...\u003e\n* Network xmit thread sets up interrupt for Guest (xmit ring is empty)\n\twrite(6, \"\\2\\0\\0\\0\\3\\0\\0\\0\", 8) \u003d 0\n* Network xmit thread goes back to reading from eventfd\n\tread(7, \u003cunfinished ...\u003e\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "df60aeef4f4fe0645d9a195a7689005520422de5",
      "tree": "3cfa3c4a986436c8accd5f0a57d5a6f70f1b7965",
      "parents": [
        "5718607bb670c721f45f0dbb1cc7d6c64969aab1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 +0930"
      },
      "message": "lguest: use eventfds for device notification\n\nCurrently, when a Guest wants to perform I/O it calls LHCALL_NOTIFY with\nan address: the main Launcher process returns with this address, and figures\nout what device to run.\n\nA far nicer model is to let processes bind an eventfd to an address: if we\nfind one, we simply signal the eventfd.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n"
    },
    {
      "commit": "5718607bb670c721f45f0dbb1cc7d6c64969aab1",
      "tree": "9b595af2cd4649bea4c130b9dc223a5f886c34d2",
      "parents": [
        "9f155a9b3d5a5444bcc5e049ec2547bb5107150e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 +0930"
      },
      "message": "eventfd: export eventfd_signal and eventfd_fget for lguest\n\nlguest wants to attach eventfds to guest notifications, and lguest is\nusually a module.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nTo: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n"
    },
    {
      "commit": "9f155a9b3d5a5444bcc5e049ec2547bb5107150e",
      "tree": "ef8fe2d5a319abb3bb1c89374f9d2fef1b0881c3",
      "parents": [
        "92b4d8df8436cdd74d22a2a5b6b23b9abc737a3e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:09 2009 +0930"
      },
      "message": "lguest: allow any process to send interrupts\n\nWe currently only allow the Launcher process to send interrupts, but it\nas we already send interrupts from the hrtimer, it\u0027s a simple matter of\nextracting that code into a common set_interrupt routine.\n\nAs we switch to a thread per virtqueue, this avoids a bottleneck through the\nmain Launcher process.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "92b4d8df8436cdd74d22a2a5b6b23b9abc737a3e",
      "tree": "bba0dce08d1fde432f370b7ef2845e0ae195a34d",
      "parents": [
        "acdd0b6292b282c4511897ac2691a47befbf1c6a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 +0930"
      },
      "message": "lguest: PAE fixes\n\n1) j wasn\u0027t initialized in setup_pagetables, so they weren\u0027t set up for me\n   causing immediate guest crashes.\n\n2) gpte_addr should not re-read the pmd from the Guest.  Especially\n   not BUG_ON() based on the value.  If we ever supported SMP guests,\n   they could trigger that.  And the Launcher could also trigger it\n   (tho currently root-only).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "acdd0b6292b282c4511897ac2691a47befbf1c6a",
      "tree": "1bfcfc32b11d35e99fec5bbf52b19d6ee038f25e",
      "parents": [
        "cefcad1773197523e11e18b669f245e6a8d32058"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:07 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 +0930"
      },
      "message": "lguest: PAE support\n\nThis version requires that host and guest have the same PAE status.\nNX cap is not offered to the guest, yet.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "cefcad1773197523e11e18b669f245e6a8d32058",
      "tree": "2d94e3df551b3ee58c1ac89ed4872e2153496c05",
      "parents": [
        "ebe0ba84f55950a89cb7af94c7ffc35ee3992f9e"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:07 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:07 2009 +0930"
      },
      "message": "lguest: Add support for kvm_hypercall4()\n\nAdd support for kvm_hypercall4(); PAE wants it.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui at gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ebe0ba84f55950a89cb7af94c7ffc35ee3992f9e",
      "tree": "df1c3373274846b4998ea75c56f347a264b2c8ad",
      "parents": [
        "90603d15fa95605d1d08235b73e220d766f04bb0"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Sat May 30 15:48:08 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:07 2009 +0930"
      },
      "message": "lguest: replace hypercall name LHCALL_SET_PMD with LHCALL_SET_PGD\n\nreplace LHCALL_SET_PMD with LHCALL_SET_PGD hypercall name\n(That\u0027s really what it is, and the confusion gets worse with PAE support)\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nReported-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\n"
    },
    {
      "commit": "90603d15fa95605d1d08235b73e220d766f04bb0",
      "tree": "669b5a41ebdb368e578898409d8a48021074746a",
      "parents": [
        "ed1dc77810159a733240ba6751c1b31023bf8dd7"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:06 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:06 2009 +0930"
      },
      "message": "lguest: use native_set_* macros, which properly handle 64-bit entries when PAE is activated\n\nSome cleanups and replace direct assignment with native_set_* macros which properly handle 64-bit entries when PAE is activated\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ed1dc77810159a733240ba6751c1b31023bf8dd7",
      "tree": "d77ed52cd56e2cf3f5eac9d5db22ad1196e694d8",
      "parents": [
        "7b5c806c35f6ff76b2e36a8b5b1513c8a83fcff7"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Sat May 30 15:35:49 2009 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:06 2009 +0930"
      },
      "message": "lguest: map switcher with executable page table entries\n\nMap switcher with executable page table entries.\n(This bug didn\u0027t matter before PAE and hence NX support -- RR)\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7b5c806c35f6ff76b2e36a8b5b1513c8a83fcff7",
      "tree": "382e194aadcae193229c121c60c0d4838255c327",
      "parents": [
        "e606490c440900e50ccf73a54f6fc6150ff40815"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 +0930"
      },
      "message": "lguest: fix writev returning short on console output\n\nI\u0027ve never seen it here, but I can\u0027t find anywhere that says writev\nwill write everything.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e606490c440900e50ccf73a54f6fc6150ff40815",
      "tree": "43a660399ee81b3926789bd1644513e83c605d50",
      "parents": [
        "f086122bb6e885f926f935b1418fca3b293375f0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 +0930"
      },
      "message": "lguest: clean up length-used value in example launcher\n\nThe \"len\" field in the used ring for virtio indicates the number of\nbytes *written* to the buffer.  This means the guest doesn\u0027t have to\nzero the buffers in advance as it always knows the used length.\n\nErroneously, the console and network example code puts the length\n*read* into that field.  The guest ignores it, but it\u0027s wrong.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f086122bb6e885f926f935b1418fca3b293375f0",
      "tree": "21f14d50489380e609ecffb61cdc4f5b2f624694",
      "parents": [
        "81b79b01d057f8c5a378c38d2f738775b972934a"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:04 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 +0930"
      },
      "message": "lguest: Segment selectors are 16-bit long. Fix lg_cpu.ss1 definition.\n\nIf GDT_ENTRIES were every \u003e 256, this could become a problem.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui at gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "81b79b01d057f8c5a378c38d2f738775b972934a",
      "tree": "0e2c295109568916e187a65e6d93a3319bbb51a9",
      "parents": [
        "2644f17d6c932929fd68cfec95691490947e0fd1"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Wed May 20 01:45:45 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 +0930"
      },
      "message": "lguest: beyond ARRAY_SIZE of cpu-\u003earch.gdt\n\nDo not go beyond ARRAY_SIZE of cpu-\u003earch.gdt\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2644f17d6c932929fd68cfec95691490947e0fd1",
      "tree": "82e3c567fec2c48aa4d5a053da2563e4a2fdcf5a",
      "parents": [
        "61f4bc83fea248a3092beb7ba43daa5629615513"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 +0930"
      },
      "message": "lguest: clean up example launcher compile flags.\n\n18 months ago 5bbf89fc260830f3f58b331d946a16b39ad1ca2d changed to loading\nbzImages directly, and no longer manually ungzipping them, so we no longer\nneed libz.\n\nAlso, -m32 is useful for those on 64-bit platforms (and harmless on\n32-bit).\n\nReported-by: Ron Minnich \u003crminnich@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "61f4bc83fea248a3092beb7ba43daa5629615513",
      "tree": "5ce12fc0676f93a49f743dab1c60f8e1ca991ec3",
      "parents": [
        "a32a8813d0173163ba44d8f9556e0d89fdc4fb46"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 +0930"
      },
      "message": "lguest: optimize by coding restore_flags and irq_enable in assembler.\n\nThe downside of the last patch which made restore_flags and irq_enable\ncheck interrupts is that they are now too big to be patched directly\ninto the callsites, so the C versions are always used.\n\nBut the C versions go via PV_CALLEE_SAVE_REGS_THUNK which saves all\nthe registers.  In fact, we don\u0027t need any registers in the fast path,\nso we can do better than this if we actually code them in assembler.\n\nThe results are in the noise, but since it\u0027s about the same amount of\ncode, it\u0027s worth applying.\n\n1GB Guest-\u003eHost: input(suppressed),output(suppressed)\nBefore:\n\tSeconds: 0:16.53\n\tPackets: 377268,753673\n\tInterrupts: 22461,24297\n\tNotifications: 1(5245),21303(732370)\n\tNet IRQs triggered: 377023(245),42578(711095)\n\nAfter:\n\tSeconds: 0:16.48\n\tPackets: 377289,753673\n\tInterrupts: 22281,24465\n\tNotifications: 1(5245),21296(732377)\n\tNet IRQs triggered: 377060(229),42564(711109)\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a32a8813d0173163ba44d8f9556e0d89fdc4fb46",
      "tree": "fddb6742338047d0219e8c2536cd39b04e643b16",
      "parents": [
        "abd41f037e1a64543000ed73b42f616d04d92700"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 +0930"
      },
      "message": "lguest: improve interrupt handling, speed up stream networking\n\nlguest never checked for pending interrupts when enabling interrupts, and\nthings still worked.  However, it makes a significant difference to TCP\nperformance, so it\u0027s time we fixed it by introducing a pending_irq flag\nand checking it on irq_restore and irq_enable.\n\nThese two routines are now too big to patch into the 8/10 bytes\npatch space, so we drop that code.\n\nNote: The high latency on interrupt delivery had a very curious\neffect: once everything else was optimized, networking without GSO was\nfaster than networking with GSO, since more interrupts were sent and\nhence a greater chance of one getting through to the Guest!\n\nNote2: (Almost) Closing the same loophole for iret doesn\u0027t have any\nmeasurable effect, so I\u0027m leaving that patch for the moment.\n\nBefore:\n\t1GB tcpblast Guest-\u003eHost:\t\t30.7 seconds\n\t1GB tcpblast Guest-\u003eHost (no GSO):\t76.0 seconds\n\nAfter:\n\t1GB tcpblast Guest-\u003eHost:\t\t6.8 seconds\n\t1GB tcpblast Guest-\u003eHost (no GSO):\t27.8 seconds\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "abd41f037e1a64543000ed73b42f616d04d92700",
      "tree": "d9013e66f4d8fc66fc92ce0587f8d126e156b253",
      "parents": [
        "ebf9a5a99c1a464afe0b4dfa64416fc8b273bc5c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 +0930"
      },
      "message": "lguest: fix race in halt code\n\nWhen the Guest does the LHCALL_HALT hypercall, we go to sleep, expecting\nthat a timer or the Waker will wake_up_process() us.\n\nBut we do it in a stupid way, leaving a classic missing wakeup race.\n\nSo split maybe_do_interrupt() into interrupt_pending() and\ntry_deliver_interrupt(), and check maybe_do_interrupt() and the\n\"break_out\" flag before calling schedule.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ebf9a5a99c1a464afe0b4dfa64416fc8b273bc5c",
      "tree": "b5f0631172db5d97e0a5c6b8a6bc0f83c4a4eed5",
      "parents": [
        "a6c372de6e4b9a8188b66badcee3e3792eccdd26"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 +0930"
      },
      "message": "lguest: remove invalid interrupt forcing logic.\n\n20887611523e749d99cc7d64ff6c97d27529fbae (lguest: notify on empty) introduced\nlguest support for the VIRTIO_F_NOTIFY_ON_EMPTY flag, but in fact it turned on\ninterrupts all the time.\n\nBecause we always process one buffer at a time, the inflight count is always 0\nwhen call trigger_irq and so we always ignore VRING_AVAIL_F_NO_INTERRUPT from\nthe Guest.\n\nIt should be looking to see if there are more buffers in the Guest\u0027s queue:\nif it\u0027s empty, then we force an interrupt.\n\nThis makes little difference, since we usually have an empty queue; but\nthat\u0027s the subject of another patch.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a6c372de6e4b9a8188b66badcee3e3792eccdd26",
      "tree": "b6b67f4cc447cc0ee8ae617bb503ef7d7f6e4958",
      "parents": [
        "b43e352139f51216a8c56b0bd5fc3d4e05c65619"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 +0930"
      },
      "message": "lguest: fix lguest wake on guest clock tick, or fd activity\n\nThe Launcher could be inside the Guest on another CPU; wake_up_process\nwill do nothing because it is \"running\".  kick_process will knock it\nback into our kernel in this case, otherwise we\u0027ll miss it until the\nnext guest exit.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b43e352139f51216a8c56b0bd5fc3d4e05c65619",
      "tree": "f7766a7d5dc21e424bc914c99e03a4816a35d78a",
      "parents": [
        "f7027c6387d0c3acf569845165ec7947e2083c82"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 +0930"
      },
      "message": "sched: export kick_process\n\nlguest needs kick_process: wake_up_process() does nothing if a process\nis running, which isn\u0027t sufficient (we need it in the kernel).\n\nAnd lguest support is usually modular.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f7027c6387d0c3acf569845165ec7947e2083c82",
      "tree": "306f36650d615491d468e040d7055b07053d2fb6",
      "parents": [
        "1028375e93a7aa4dbe466947d1c65f368b1f61c1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 +0930"
      },
      "message": "lguest: get more serious about wmb() in example Launcher code\n\nSince the Launcher process runs the Guest, it doesn\u0027t have to be very\nserious about its barriers: the Guest isn\u0027t running while we are (Guest\nis UP).\n\nBefore we change to use threads to service devices, we need to fix this.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1028375e93a7aa4dbe466947d1c65f368b1f61c1",
      "tree": "33199b0bb9c79fded3159b880d8ad9e0e6bcb28c",
      "parents": [
        "56739c802ca845435f60e909104637880e14c769"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 +0930"
      },
      "message": "lguest: clean up lguest_init_IRQ\n\nCopy from arch/x86/kernel/irqinit_32.c: we don\u0027t use the vectors beyond\nLGUEST_IRQS (if any), but we might as well set them all.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "56739c802ca845435f60e909104637880e14c769",
      "tree": "3831f2b7e2c973b11e2f9823002340420fbc327b",
      "parents": [
        "713b15b3781240653d2b38414da3f4567dcbcf91"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 +0930"
      },
      "message": "lguest: cleanup passing of /dev/lguest fd around example launcher.\n\nWe hand the /dev/lguest fd everywhere; it\u0027s far neater to just make it\na global (it already is, in fact, hidden in the waker_fds struct).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "713b15b3781240653d2b38414da3f4567dcbcf91",
      "tree": "9b6a01f00bf4aee60548d8b8cf38458863888564",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:58 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 +0930"
      },
      "message": "lguest: be paranoid about guest playing with device descriptors.\n\nWe can\u0027t trust the values in the device descriptor table once the\nguest has booted, so keep local copies.  They could set them to\nstrange values then cause us to segv (they\u0027re 8 bit values, so they\ncan\u0027t make our pointers go too wild).\n\nThis becomes more important with the following patches which read them.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e3353853730eb99c56b7b0aed1667d51c0e3699a",
      "tree": "d0da26c34a8ca12a57662830fd698ca6696f3805",
      "parents": [
        "c89e80168ba1ed37627fe03116b0cf8474dcb7e0"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Tue May 26 15:46:10 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:40 2009 +0930"
      },
      "message": "virtio: enhance id_matching for virtio drivers\n\nThis patch allows a virtio driver to use VIRTIO_DEV_ANY_ID for the\ndevice id. This will be used by a test module that can be bound to\nany virtio device.\n\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c89e80168ba1ed37627fe03116b0cf8474dcb7e0",
      "tree": "3314d284cca77dc81913877d1cf58838186e7e85",
      "parents": [
        "594de1dd6449f79c99e1ba4577ea0e4e06e2b405"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Tue May 26 15:46:09 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:40 2009 +0930"
      },
      "message": "virtio: fix id_matching for virtio drivers\n\nThis bug never appeared, since all current virtio drivers use\nVIRTIO_DEV_ANY_ID for the vendor field. If a real vendor would be used,\nthe check in virtio_id_match is wrong - it returns 0 if\nid-\u003evendor \u003d\u003d dev-\u003eid.vendor.\n\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "594de1dd6449f79c99e1ba4577ea0e4e06e2b405",
      "tree": "eeaa70736d1aa2b40433d5dc5c98195406591d85",
      "parents": [
        "98e94444748e9af93423d1fab90543e75569a58c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:39 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:40 2009 +0930"
      },
      "message": "virtio: handle short buffers in virtio_rng.\n\nIf the device fills less than 4 bytes of our random buffer, we\u0027ll\nBUG_ON.  It\u0027s nicer to handle the case where it partially fills the\nbuffer (the protocol doesn\u0027t explicitly bad that).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "98e94444748e9af93423d1fab90543e75569a58c",
      "tree": "d775c68462a2f9d478a45f2f7de916dfe2e6833f",
      "parents": [
        "9fa29b9df32ba4db055f3977933cd0c1b8fe67cd"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Mon May 18 03:39:09 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:39 2009 +0930"
      },
      "message": "virtio_blk: add missing __dev{init,exit} markings\n\nThe remove member of the virtio_driver structure uses __devexit_p(), so\nthe remove function itself should be marked with __devexit.  And where\nthere be __devexit on the remove, so is there __devinit on the probe.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9fa29b9df32ba4db055f3977933cd0c1b8fe67cd",
      "tree": "c44177d2d352f74300fe9124decc6462c8804bbe",
      "parents": [
        "ee006b353f1ca8c9a8470b72b462beb011d62e32"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Mon May 11 18:11:45 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:39 2009 +0930"
      },
      "message": "virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)\n\nAdd a new feature flag for indirect ring entries. These are ring\nentries which point to a table of buffer descriptors.\n\nThe idea here is to increase the ring capacity by allowing a larger\neffective ring size whereby the ring size dictates the number of\nrequests that may be outstanding, rather than the size of those\nrequests.\n\nThis should be most effective in the case of block I/O where we can\npotentially benefit by concurrently dispatching a large number of\nlarge requests. Even in the simple case of single segment block\nrequests, this results in a threefold increase in ring capacity.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ee006b353f1ca8c9a8470b72b462beb011d62e32",
      "tree": "205cb0ba2a4e08377effe7a2d10432047e82c1c9",
      "parents": [
        "a92892825a122a74ddad1d408fa27132e28b05ae"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Mon May 11 18:11:44 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:38 2009 +0930"
      },
      "message": "virtio: teach virtio_has_feature() about transport features\n\nDrivers don\u0027t add transport features to their table, so we\nshouldn\u0027t check these with virtio_check_driver_offered_feature().\n\nWe could perhaps add an -\u003eoffered_feature() virtio_config_op,\nbut that perhaps that would be overkill for a consitency check\nlike this.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a92892825a122a74ddad1d408fa27132e28b05ae",
      "tree": "c8dad18eb7842a10a33cdf632b5e0a0aa8fdf778",
      "parents": [
        "82af8ce84ed65d2fb6d8c017d3f2bbbf161061fb"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:37 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:38 2009 +0930"
      },
      "message": "virtio: expose features in sysfs\n\nEach device negotiates feature bits; expose these in sysfs to help\ndiagnostics and debugging.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "82af8ce84ed65d2fb6d8c017d3f2bbbf161061fb",
      "tree": "aed59c86724c7d3f565d1c60b38d25a7bf20985b",
      "parents": [
        "77cf524654a886e0fbbf03b16b44f048deef7b0c"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 14 13:55:41 2009 +0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:37 2009 +0930"
      },
      "message": "virtio_pci: optional MSI-X support\n\nThis implements optional MSI-X support in virtio_pci.\nMSI-X is used whenever the host supports at least 2 MSI-X\nvectors: 1 for configuration changes and 1 for virtqueues.\nPer-virtqueue vectors are allocated if enough vectors\navailable.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (+ whitespace, style)\n"
    },
    {
      "commit": "77cf524654a886e0fbbf03b16b44f048deef7b0c",
      "tree": "4b55884ceade70463c53517eae382f0412cc317c",
      "parents": [
        "d2a7ddda9ffb1c8961abff6714b0f1eb925c120f"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 14 13:55:31 2009 +0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:37 2009 +0930"
      },
      "message": "virtio_pci: split up vp_interrupt\n\nThis reorganizes virtio-pci code in vp_interrupt slightly, so that\nit\u0027s easier to add per-vq MSI support on top.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d2a7ddda9ffb1c8961abff6714b0f1eb925c120f",
      "tree": "1090884fd260d042255255467367e4e6b6193e5d",
      "parents": [
        "9499f5e7ed5224c40706f0cec6542a9916bc7606"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Fri Jun 12 22:16:36 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:36 2009 +0930"
      },
      "message": "virtio: find_vqs/del_vqs virtio operations\n\nThis replaces find_vq/del_vq with find_vqs/del_vqs virtio operations,\nand updates all drivers. This is needed for MSI support, because MSI\nneeds to know the total number of vectors upfront.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (+ lguest/9p compile fixes)\n"
    },
    {
      "commit": "9499f5e7ed5224c40706f0cec6542a9916bc7606",
      "tree": "3e4e1b36d3d549ea356e88e6e44359a887c6ee01",
      "parents": [
        "ef688e151c00e5d529703be9a04fd506df8bc54e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:35 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:36 2009 +0930"
      },
      "message": "virtio: add names to virtqueue struct, mapping from devices to queues.\n\nAdd a linked list of all virtqueues for a virtio device: this helps for\ndebugging and is also needed for upcoming interface change.\n\nAlso, add a \"name\" field for clearer debug messages.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ef688e151c00e5d529703be9a04fd506df8bc54e",
      "tree": "841d0b0bcd8a5f72f8d8bdc455672d9a6e7468ca",
      "parents": [
        "20f77f5654042cf484d8964b618faf9d620f639b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:35 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:35 2009 +0930"
      },
      "message": "virtio: meet virtio spec by finalizing features before using device\n\nVirtio devices are supposed to negotiate features before they start using\nthe device, but the current code doesn\u0027t do this.  This is because the\ndriver\u0027s probe() function invariably has to add buffers to a virtqueue,\nor probe the disk (virtio_blk).\n\nThis currently doesn\u0027t matter since no existing backend is strict about\nthe feature negotiation.  But it\u0027s possible to imagine a future feature\nwhich completely changes how a device operates: in this case, we\u0027d need\nto acknowledge it before using the device.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "20f77f5654042cf484d8964b618faf9d620f639b",
      "tree": "d5007f2e5ec72062532b7930ef0a6f68708d9658",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:33 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:16:35 2009 +0930"
      },
      "message": "virtio: fix obsolete documentation on probe function\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3ea400581f2b595afd91207bbd79c11cb38598e0",
      "tree": "c8d1095b2cb4b516c91f93646fea4d7cb14db92f",
      "parents": [
        "63997775b795f97ef51f3e56bc3abc9edc04bbb0"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jun 12 13:40:47 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jun 12 13:40:47 2009 +0100"
      },
      "message": "GFS2: Remove lock_kernel from gfs2_put_super()\n\nIt is not required here.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat,com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "5933048c69edb546f1e93c26dc93816f0be9f754",
      "tree": "a051310933342efea5ae64a0bb490aad1e5f1d0f",
      "parents": [
        "ad6561dffa17f17bb68d7207d422c26c381c4313"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:04 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:05 2009 +0930"
      },
      "message": "module: cleanup FIXME comments about trimming exception table entries.\n\nEveryone cut and paste this comment from my original one.  We now do\nit generically, so cut the comments.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Amerigo Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "ad6561dffa17f17bb68d7207d422c26c381c4313",
      "tree": "04cf6480ccd6732ab0ffe3d552bd32599390ff65",
      "parents": [
        "c398df30d5caad626ac72bfab0361a7b0f67a661"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:03 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:04 2009 +0930"
      },
      "message": "module: trim exception table on init free.\n\nIt\u0027s theoretically possible that there are exception table entries\nwhich point into the (freed) init text of modules.  These could cause\nfuture problems if other modules get loaded into that memory and cause\nan exception as we\u0027d see the wrong fixup.  The only case I know of is\nkvm-intel.ko (when CONFIG_CC_OPTIMIZE_FOR_SIZE\u003dn).\n\nAmerigo fixed this long-standing FIXME in the x86 version, but this\npatch is more general.\n\nThis implements trim_init_extable(); most archs are simple since they\nuse the standard lib/extable.c sort code.  Alpha and IA64 use relative\naddresses in their fixups, so thier trimming is a slight variation.\n\nSparc32 is unique; it doesn\u0027t seem to define ARCH_HAS_SORT_EXTABLE,\nyet it defines its own sort_extable() which overrides the one in lib.\nIt doesn\u0027t sort, so we have to mark deleted entries instead of\nactually trimming them.\n\nInspired-by: Amerigo Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: linux-alpha@vger.kernel.org\nCc: sparclinux@vger.kernel.org\nCc: linux-ia64@vger.kernel.org\n"
    },
    {
      "commit": "c398df30d5caad626ac72bfab0361a7b0f67a661",
      "tree": "aec470204a0770d138f5d1e2a44ba5921e99bc02",
      "parents": [
        "c0e5e10bf380c7a7c4e8c8b7d42e0aba623e76a6"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jun 03 21:46:46 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:03 2009 +0930"
      },
      "message": "module: merge module_alloc() finally\n\nAs Christoph Hellwig suggested, module_alloc() actually can be\nunified for i386 and x86_64 (of course, also UML).\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: \u0027Ingo Molnar\u0027 \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c0e5e10bf380c7a7c4e8c8b7d42e0aba623e76a6",
      "tree": "504bfe55e61424ad86cee429714922a39c084923",
      "parents": [
        "0fdc83b950df9e2eb45db6fca9c3d92c66fd5028"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jun 03 21:46:28 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:02 2009 +0930"
      },
      "message": "uml module: fix uml build process due to this merge\n\nDue to the previous merge, uml needs to be fixed.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "0fdc83b950df9e2eb45db6fca9c3d92c66fd5028",
      "tree": "5ee9b81828c90a9aa8072cd68d7e0a5edbbc4032",
      "parents": [
        "2d5bf28fb9e3c178db4f5536e2fe38d3a5ed7f40"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jun 03 21:46:19 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:01 2009 +0930"
      },
      "message": "x86 module: merge the rest functions with macros\n\nMerge the rest functions together, with proper preprocessing directives.\nFinally remove module_{32|64}.c.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2d5bf28fb9e3c178db4f5536e2fe38d3a5ed7f40",
      "tree": "30997ca66fea0b95f82b546ecbcd91e249223fb3",
      "parents": [
        "2ead9439f0c6ed03faafe27abe8bc1dd256d117b"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jun 03 21:46:09 2009 -0400"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:47:00 2009 +0930"
      },
      "message": "x86 module: merge the same functions in module_32.c and module_64.c\n\nMerge the same functions both in module_32.c and module_64.c into\nmodule.c.\n\nThis is the first step to merge both of them finally.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2ead9439f0c6ed03faafe27abe8bc1dd256d117b",
      "tree": "373004102baf74b539dae01edbdabe13e341c310",
      "parents": [
        "fddd520122953550ec2c8b60e7ca0d0f0d115d97"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:58 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:59 2009 +0930"
      },
      "message": "uvesafb: improve parameter handling.\n\n1) Now module_param(..., invbool, ...) requires a bool, and similarly\n   module_param(..., bool, ...) allows it, change pmi_setpal to a bool.\n2) #define param_get_scroll to NULL, since it can never be called (perm\n   argument to module_param_named is 0).\n3) Return -EINVAL from param_set_scroll if the value is bad, so it\u0027s\n   reported.\n\nNote that I don\u0027t think the old fb_get_options() is required for new\ndrivers: the parameters automatically work as uvesafb.XXX\u003d... anyway.\n\nAcked-by: Michał Januszewski \u003cspock@gentoo.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "fddd520122953550ec2c8b60e7ca0d0f0d115d97",
      "tree": "d0c45f94bc0054661ee9af41b607815c24a36cff",
      "parents": [
        "d2c123c27db841c6c11a63de9c144823d2b1ba76"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:57 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:58 2009 +0930"
      },
      "message": "module_param: allow \u0027bool\u0027 module_params to be bool, not just int.\n\nImpact: API cleanup\n\nFor historical reasons, \u0027bool\u0027 parameters must be an int, not a bool.\nBut there are around 600 users, so a conversion seems like useless churn.\n\nSo we use __same_type() to distinguish, and handle both cases.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d2c123c27db841c6c11a63de9c144823d2b1ba76",
      "tree": "ee9de1ca10681c1f632020783e8a31ec61f35c4e",
      "parents": [
        "45fcc70c0b6ee0c508e1fdb5fef735c3546803f4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:56 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:57 2009 +0930"
      },
      "message": "module_param: add __same_type convenience wrapper for __builtin_types_compatible_p\n\nImpact: new API\n\n__builtin_types_compatible_p() is a little awkward to use: it takes two\ntypes rather than types or variables, and it\u0027s just damn long.\n\n(typeof(type) \u003d\u003d type, so this works on types as well as vars).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "45fcc70c0b6ee0c508e1fdb5fef735c3546803f4",
      "tree": "15ea34cf77ecd9bbd4f78259ced012f18a26e01b",
      "parents": [
        "9a71af2c3627b379b7c31917a7f6ee0d29bc559b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:56 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:56 2009 +0930"
      },
      "message": "module_param: split perm field into flags and perm\n\nImpact: cleanup\n\nRather than hack KPARAM_KMALLOCED into the perm field, separate it out.\nSince the perm field was 32 bits and only needs 16, we don\u0027t add bloat.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9a71af2c3627b379b7c31917a7f6ee0d29bc559b",
      "tree": "c09049a6a4458be91844500d7d5034b63a1cdcc7",
      "parents": [
        "ab8e2eb722f1e5fcbd8181e3e9ef4e95c52124df"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:53 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:56 2009 +0930"
      },
      "message": "module_param: invbool should take a \u0027bool\u0027, not an \u0027int\u0027\n\nIt takes an \u0027int\u0027 for historical reasons, and there are only two\nusers: simply switch it over to bool.\n\nThe other user (uvesafb.c) will get a (harmless-on-x86) warning until\nthe next patch is applied.\n\nCc: Brad Douglas \u003cbrad@neruo.com\u003e\nCc: Michal Januszewski \u003cspock@gentoo.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ab8e2eb722f1e5fcbd8181e3e9ef4e95c52124df",
      "tree": "41db45ac5411221c6e581952f7842004e6db48a5",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:50 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 21:46:53 2009 +0930"
      },
      "message": "cyber2000fb.c: use proper method for stopping unload if CONFIG_ARCH_SHARK\n\nRussell explains the __module_get():\n\u003e cyber2000fb.c does it in its module initialization function\n\u003e to prevent the module (when built for Shark) from being unloaded.  It\n\u003e does this because it\u0027s from the days of 2.2 kernels and no one bothered\n\u003e writing the module unload support for Shark.\n\nSince 2.4, the correct answer has been to not define an unload fn.\n\nCc: Russell King \u003crmk+lkml@arm.linux.org.uk\u003e\nCc: alex@shark-linux.de\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "55cd63676e0c5710fbe1ea86dfd9f8ea9aaa90f2",
      "tree": "1154bbd5e720ce4300c0cf11dd168b665b802878",
      "parents": [
        "28be225b23b115573e0ecc8ef9996f42a1652f74"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Fri Jun 12 11:36:52 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 13:50:24 2009 +0300"
      },
      "message": "x86: make zap_low_mapping could be used early\n\nOnly one cpu is there, just call __flush_tlb for it. Fixes the following boot\nwarning on x86:\n\n  [    0.000000] Memory: 885032k/915540k available (5993k kernel code, 29844k reserved, 3842k data, 428k init, 0k highmem)\n  [    0.000000] virtual kernel memory layout:\n  [    0.000000]     fixmap  : 0xffe17000 - 0xfffff000   (1952 kB)\n  [    0.000000]     vmalloc : 0xf8615000 - 0xffe15000   ( 120 MB)\n  [    0.000000]     lowmem  : 0xc0000000 - 0xf7e15000   ( 894 MB)\n  [    0.000000]       .init : 0xc19a5000 - 0xc1a10000   ( 428 kB)\n  [    0.000000]       .data : 0xc15da4bb - 0xc199af6c   (3842 kB)\n  [    0.000000]       .text : 0xc1000000 - 0xc15da4bb   (5993 kB)\n  [    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.\n  [    0.000000] ------------[ cut here ]------------\n  [    0.000000] WARNING: at kernel/smp.c:369 smp_call_function_many+0x50/0x1b0()\n  [    0.000000] Hardware name: System Product Name\n  [    0.000000] Modules linked in:\n  [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30-tip #52504\n  [    0.000000] Call Trace:\n  [    0.000000]  [\u003cc104aa16\u003e] warn_slowpath_common+0x65/0x95\n  [    0.000000]  [\u003cc104aa58\u003e] warn_slowpath_null+0x12/0x15\n  [    0.000000]  [\u003cc1073bbe\u003e] smp_call_function_many+0x50/0x1b0\n  [    0.000000]  [\u003cc1037615\u003e] ? do_flush_tlb_all+0x0/0x41\n  [    0.000000]  [\u003cc1037615\u003e] ? do_flush_tlb_all+0x0/0x41\n  [    0.000000]  [\u003cc1073d4f\u003e] smp_call_function+0x31/0x58\n  [    0.000000]  [\u003cc1037615\u003e] ? do_flush_tlb_all+0x0/0x41\n  [    0.000000]  [\u003cc104f635\u003e] on_each_cpu+0x26/0x65\n  [    0.000000]  [\u003cc10374b5\u003e] flush_tlb_all+0x19/0x1b\n  [    0.000000]  [\u003cc1032ab3\u003e] zap_low_mappings+0x4d/0x56\n  [    0.000000]  [\u003cc15d64b5\u003e] ? printk+0x14/0x17\n  [    0.000000]  [\u003cc19b42a8\u003e] mem_init+0x23d/0x245\n  [    0.000000]  [\u003cc19a56a1\u003e] start_kernel+0x17a/0x2d5\n  [    0.000000]  [\u003cc19a5347\u003e] ? unknown_bootoption+0x0/0x19a\n  [    0.000000]  [\u003cc19a5039\u003e] __init_begin+0x39/0x41\n  [    0.000000] ---[ end trace 4eaa2a86a8e2da22 ]---\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "28be225b23b115573e0ecc8ef9996f42a1652f74",
      "tree": "01cc74b96307caa3abbda36baf268c2541a3a8e1",
      "parents": [
        "ca371c0d7e23d0d0afae65fc83a0e91cf7399573"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Fri Jun 12 11:33:02 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 13:50:23 2009 +0300"
      },
      "message": "irq: slab alloc for default irq_affinity\n\nIngo had\n\n[    0.000000] ------------[ cut here ]------------\n[    0.000000] WARNING: at mm/bootmem.c:537 alloc_arch_preferred_bootmem+0x2b/0x71()\n[    0.000000] Hardware name: System Product Name\n[    0.000000] Modules linked in:\n[    0.000000] Pid: 0, comm: swapper Tainted: G        W  2.6.30-tip-03087-g0bb2618-dirty #52506\n[    0.000000] Call Trace:\n[    0.000000]  [\u003c81032588\u003e] warn_slowpath_common+0x60/0x90\n[    0.000000]  [\u003c810325c5\u003e] warn_slowpath_null+0xd/0x10\n[    0.000000]  [\u003c819d1bc0\u003e] alloc_arch_preferred_bootmem+0x2b/0x71\n[    0.000000]  [\u003c819d1c31\u003e] ___alloc_bootmem_nopanic+0x2b/0x9a\n[    0.000000]  [\u003c81050a0a\u003e] ? lock_release+0xac/0xb2\n[    0.000000]  [\u003c819d1d4c\u003e] ___alloc_bootmem+0xe/0x2d\n[    0.000000]  [\u003c819d1e9f\u003e] __alloc_bootmem+0xa/0xc\n[    0.000000]  [\u003c819d7c63\u003e] alloc_bootmem_cpumask_var+0x21/0x26\n[    0.000000]  [\u003c819d0cc8\u003e] early_irq_init+0x15/0x10d\n[    0.000000]  [\u003c819bb75a\u003e] start_kernel+0x167/0x326\n[    0.000000]  [\u003c819bb06b\u003e] __init_begin+0x6b/0x70\n[    0.000000] ---[ end trace 4eaa2a86a8e2da23 ]---\n[    0.000000] NR_IRQS:2304 nr_irqs:424\n[    0.000000] CPU 0 irqstacks, hard\u003d821e6000 soft\u003d821e7000\n\nwe need to update init_irq_default_affinity\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "ca371c0d7e23d0d0afae65fc83a0e91cf7399573",
      "tree": "20ca26fbdceefe25d1c362dc23a2152c1aac8b4c",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jun 12 10:33:53 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 11:00:54 2009 +0300"
      },
      "message": "memcg: fix page_cgroup fatal error in FLATMEM\n\nNow, SLAB is configured in very early stage and it can be used in\ninit routine now.\n\nBut replacing alloc_bootmem() in FLAT/DISCONTIGMEM\u0027s page_cgroup()\ninitialization breaks the allocation, now.\n(Works well in SPARSEMEM case...it supports MEMORY_HOTPLUG and\n size of page_cgroup is in reasonable size (\u003c 1 \u003c\u003c MAX_ORDER.)\n\nThis patch revive FLATMEM+memory cgroup by using alloc_bootmem.\n\nIn future,\nWe stop to support FLATMEM (if no users) or rewrite codes for flatmem\ncompletely.But this will adds more messy codes and overheads.\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    }
  ],
  "next": "63997775b795f97ef51f3e56bc3abc9edc04bbb0"
}
