)]}'
{
  "log": [
    {
      "commit": "340481a36498bf3fe404bcecb2e2d6188e950bff",
      "tree": "d5e8cc4dd7bb7d111f29170642170ea921017b00",
      "parents": [
        "8616e0fc1e27295316f9821a883f0e9fa6f8200f"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Jun 11 10:27:29 2009 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Sat Jun 13 08:17:30 2009 +0000"
      },
      "message": "cifs: have cifs_show_options show forceuid/forcegid options\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "8616e0fc1e27295316f9821a883f0e9fa6f8200f",
      "tree": "99b3b5c887cb8d4ba244c51fdc9d5ba95102f6b3",
      "parents": [
        "f3ad116588151b3371ae4e092290e4f48e62b8bb"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Jun 11 10:27:28 2009 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Sat Jun 13 08:17:30 2009 +0000"
      },
      "message": "cifs: remove unneeded NULL checks from cifs_show_options\n\nshow_options is always called with the namespace_sem held. Therefore we\ndon\u0027t need to worry about the vfsmount being NULL, or it vanishing while\nthe function is running. By the same token, there\u0027s no need to worry\nabout the superblock, tcon, smb or tcp sessions being NULL on entry.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "f3ad116588151b3371ae4e092290e4f48e62b8bb",
      "tree": "d652861a54132e35de2a80631f671cd7be0b26f6",
      "parents": [
        "d645727bdc2aed8e2e0e9496248f735481b5049a",
        "420118caa32c8ccdf9fce5a623b9de3f951573c5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:21:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:21:19 2009 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs:\n  configfs: Rework configfs_depend_item() locking and make lockdep happy\n  configfs: Silence lockdep on mkdir() and rmdir()\n"
    },
    {
      "commit": "d645727bdc2aed8e2e0e9496248f735481b5049a",
      "tree": "079fa3cf369dbf0dc0663fe1b0a62460c522a8e9",
      "parents": [
        "cd166bd0dde265a97dd9aa8e3451a2646d96d04b",
        "310d6b671588dd7695cbc0d09d02e41d94a42bed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:18:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:18:05 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git390.marist.edu/pub/scm/linux-2.6\n\n* \u0027for-linus\u0027 of git://git390.marist.edu/pub/scm/linux-2.6: (30 commits)\n  [S390] wire up sys_perf_counter_open\n  [S390] wire up sys_rt_tgsigqueueinfo\n  [S390] ftrace: add system call tracer support\n  [S390] ftrace: add function graph tracer support\n  [S390] ftrace: add function trace mcount test support\n  [S390] ftrace: add dynamic ftrace support\n  [S390] kprobes: use probe_kernel_write\n  [S390] maccess: arch specific probe_kernel_write() implementation\n  [S390] maccess: add weak attribute to probe_kernel_write\n  [S390] profile_tick called twice\n  [S390] dasd: forward internal errors to dasd_sleep_on caller\n  [S390] dasd: sync after async probe\n  [S390] dasd: check_characteristics cleanup\n  [S390] dasd: no High Performance FICON in 31-bit mode\n  [S390] dcssblk: revert devt conversion\n  [S390] qdio: fix access beyond ARRAY_SIZE of irq_ptr-\u003e{in,out}put_qs\n  [S390] vmalloc: add vmalloc kernel parameter support\n  [S390] uaccess: use might_fault() instead of might_sleep()\n  [S390] 3270: lock dependency fixes\n  [S390] 3270: do not register with tty_register_device\n  ...\n"
    },
    {
      "commit": "cd166bd0dde265a97dd9aa8e3451a2646d96d04b",
      "tree": "3a7fb5b8bb8d7676e804845b75977be380b8dcff",
      "parents": [
        "6b702462cbe5b6f372966a53f4465d745d86b65c",
        "5b02ee3d219f9e01b6e9146e25613822cfc2e5ce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:15:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:15:51 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:\n  add generic lib/checksum.c\n  asm-generic: add a generic uaccess.h\n  asm-generic: add generic NOMMU versions of some headers\n  asm-generic: add generic atomic.h and io.h\n  asm-generic: add legacy I/O header files\n  asm-generic: add generic versions of common headers\n  asm-generic: make bitops.h usable\n  asm-generic: make pci.h usable directly\n  asm-generic: make get_rtc_time overridable\n  asm-generic: rename page.h and uaccess.h\n  asm-generic: rename atomic.h to atomic-long.h\n  asm-generic: add a generic unistd.h\n  asm-generic: add generic ABI headers\n  asm-generic: add generic sysv ipc headers\n  asm-generic: introduce asm/bitsperlong.h\n  asm-generic: rename termios.h, signal.h and mman.h\n"
    },
    {
      "commit": "6b702462cbe5b6f372966a53f4465d745d86b65c",
      "tree": "19a8d090b284bb804e8a2ffa38fa51b58118db6a",
      "parents": [
        "947ec0b0c1e7e80eef4fe64f7763a06d0cf04d2e",
        "3c24475c1e4e8d10e50df161d8c4f1d382997a7c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:09:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 18:09:18 2009 -0700"
      },
      "message": "Merge branch \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (50 commits)\n  drm: include kernel list header file in hashtab header\n  drm: Export hash table functionality.\n  drm: Split out the mm declarations in a separate header. Add atomic operations.\n  drm/radeon: add support for RV790.\n  drm/radeon: add rv740 drm support.\n  drm_calloc_large: check right size, check integer overflow, use GFP_ZERO\n  drm: Eliminate magic I2C frobbing when reading EDID\n  drm/i915: duplicate desired mode for use by fbcon.\n  drm/via: vfree() no need checking before calling it\n  drm: Replace DRM_DEBUG with DRM_DEBUG_DRIVER in i915 driver\n  drm: Replace DRM_DEBUG with DRM_DEBUG_MODE in drm_mode\n  drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in intel_sdvo\n  drm/i915: replace DRM_DEBUG with DRM_DEBUG_KMS in intel_lvds\n  drm: add separate drm debugging levels\n  radeon: remove _DRM_DRIVER from the preadded sarea map\n  drm: don\u0027t associate _DRM_DRIVER maps with a master\n  drm: simplify kcalloc() call to kzalloc().\n  intelfb: fix spelling of \"CLOCK\"\n  drm: fix LOCK_TEST_WITH_RETURN macro\n  drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect)\n  ...\n"
    },
    {
      "commit": "947ec0b0c1e7e80eef4fe64f7763a06d0cf04d2e",
      "tree": "29547b6975d58c3b252f08dc6c2dbda3b9adfa88",
      "parents": [
        "c53567ad4528b6efefc3fc22a354d20f6226a098",
        "5818a6e2519b34cd6d0220d89f5729ab2725e1bf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:17:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:17:27 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:\n  PM: Add empty suspend/resume device irq functions\n  PM/Hibernate: Move NVS routines into a seperate file (v2).\n  PM/Hibernate: Rename disk.c to hibernate.c\n  PM: Separate suspend to RAM functionality from core\n  Driver Core: Rework platform suspend/resume, print warning\n  PM: Remove device_type suspend()/resume()\n  PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2)\n  PM/Suspend: Do not shrink memory before suspend\n  PM: Remove bus_type suspend_late()/resume_early() V2\n  PM core: rename suspend and resume functions\n  PM: Rename device_power_down/up()\n  PM: Remove unused asm/suspend.h\n  x86: unify power/cpu_(32|64).c\n  x86: unify power/cpu_(32|64) copyright notes\n  x86: unify power/cpu_(32|64) regarding restoring processor state\n  x86: unify power/cpu_(32|64) regarding saving processor state\n  x86: unify power/cpu_(32|64) global variables\n  x86: unify power/cpu_(32|64) headers\n  PM: Warn if interrupts are enabled during suspend-resume of sysdevs\n  PM/ACPI/x86: Fix sparse warning in arch/x86/kernel/acpi/sleep.c\n"
    },
    {
      "commit": "c53567ad4528b6efefc3fc22a354d20f6226a098",
      "tree": "faa289a41715e0a9a174623a76c7d52b10d4a6df",
      "parents": [
        "4ddbac98980fe0a42cf57af5d1032e024aced6a1",
        "748285ccf7ea76d3d76d0d5f2945ad6fb91f5329"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:17:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:17:12 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:\n  dlm: use more NOFS allocation\n  dlm: connect to nodes earlier\n  dlm: fix use count with multiple joins\n  dlm: Make name input parameter of {,dlm_}new_lockspace() const\n"
    },
    {
      "commit": "4ddbac98980fe0a42cf57af5d1032e024aced6a1",
      "tree": "341d152dc1f9427d70d5b1fadafca61d22baacbb",
      "parents": [
        "02a99ed6207e9a1d787bb360ef97de023c7edf4a",
        "018df72dd01576ab199c6129233cdeaf1409958b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:16:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:16:52 2009 -0700"
      },
      "message": "Merge branch \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf_counter: Start documenting HAVE_PERF_COUNTERS requirements\n  perf_counter: Add forward/backward attribute ABI compatibility\n  perf record: Explicity program a default counter\n  perf_counter: Remove PERF_TYPE_RAW special casing\n  perf_counter: PERF_TYPE_HW_CACHE is a hardware counter too\n  powerpc, perf_counter: Fix performance counter event types\n  perf_counter/x86: Add a quirk for Atom processors\n  perf_counter tools: Remove one L1-data alias\n"
    },
    {
      "commit": "02a99ed6207e9a1d787bb360ef97de023c7edf4a",
      "tree": "f5818df7dd3f3741d02afbdd4271deed48c41f3d",
      "parents": [
        "2b10dc45d15150434d7f206264e912eacbff734b",
        "3447ef29a7f3b1fd0d8d58376950e695e04f6f8b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:15:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:15:17 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.monstr.eu/linux-2.6-microblaze\n\n* \u0027for-linus\u0027 of git://git.monstr.eu/linux-2.6-microblaze: (55 commits)\n  microblaze: Don\u0027t use access_ok for unaligned\n  microblaze: remove unused flat_stack_align() definition\n  microblaze: Fix problem with early_printk in startup\n  microblaze_mmu_v2: Makefiles\n  microblaze_mmu_v2: Kconfig update\n  microblaze_mmu_v2: stat.h MMU update\n  microblaze_mmu_v2: Elf update\n  microblaze_mmu_v2: Update dma.h for MMU\n  microblaze_mmu_v2: Update cacheflush.h\n  microblaze_mmu_v2: Update signal returning address\n  microblaze_mmu_v2: Traps MMU update\n  microblaze_mmu_v2: Enable fork syscall for MMU and add fork as vfork for noMMU\n  microblaze_mmu_v2: Update linker script for MMU\n  microblaze_mmu_v2: Add MMU related exceptions handling\n  microblaze_mmu_v2: uaccess MMU update\n  microblaze_mmu_v2: Update exception handling - MMU exception\n  microblaze_mmu_v2: entry.S, entry.h\n  microblaze_mmu_v2: Add CURRENT_TASK for entry.S\n  microblaze_mmu_v2: MMU asm offset update\n  microblaze_mmu_v2: Update tlb.h and tlbflush.h\n  ...\n"
    },
    {
      "commit": "2b10dc45d15150434d7f206264e912eacbff734b",
      "tree": "fc0ec778fbb563a62e573ad1ec76428ce1223c01",
      "parents": [
        "47ea421af7479b90c481c94826f1c716fcf672cf",
        "bf664c0a3a42683b78d74aca2d7cfb6ccc2aa2c3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:14:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:14:30 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (62 commits)\n  Blackfin: fix sparseirq/kstat_irqs fallout\n  Blackfin: fix unused warnings after nommu update\n  Blackfin: export the last exception cause via debugfs\n  Blackfin: fix length checking in kgdb_ebin2mem\n  Blackfin: kgdb: fix up error return values\n  Blackfin: push access_ok() L1 attribute down\n  Blackfin: punt duplicated search_exception_table() prototype\n  Blackfin: add missing access_ok() checks to user functions\n  Blackfin: convert early_printk EVT init to a loop\n  Blackfin: document the lsl variants of the L1 allocator\n  Blackfin: rename Blackfin relocs according to the toolchain\n  Blackfin: check SIC defines rather than variant names\n  Blackfin: add SSYNC to set_dma_sg() for descriptor fetching\n  Blackfin: convert SMP to only use generic time framework\n  Blackfin: bf548-ezkit/bf537-stamp: add resources for ADXL345/346\n  Blackfin: override default uClinux MTD addr/size\n  Blackfin: fix command line corruption with DEBUG_DOUBLEFAULT\n  Blackfin: fix handling of initial L1 reservation\n  Blackfin: merge sram init functions\n  Blackfin: drop unused reserve_pda() function\n  ...\n"
    },
    {
      "commit": "47ea421af7479b90c481c94826f1c716fcf672cf",
      "tree": "ba0b1b6a7019bf61ea2ca48ac6812af4a3d99647",
      "parents": [
        "e349792a385ed47390d156155b1a1e19af1bf163",
        "c3bb4d24ab4b74e11992ccb9828569583166a87d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:14:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 13:14:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://linux-arm.org/linux-2.6\n\n* \u0027for-linus\u0027 of git://linux-arm.org/linux-2.6:\n  kmemleak: Add more info to the MAINTAINERS entry\n  kmemleak: Remove the kmemleak.h include in drivers/char/vt.c\n"
    },
    {
      "commit": "5818a6e2519b34cd6d0220d89f5729ab2725e1bf",
      "tree": "e6928374858c50bf8c1d10c904550e76c5dae982",
      "parents": [
        "fce2b111fae9151a53dabb36513b398d03337a19"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Jun 11 21:59:21 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:33 2009 +0200"
      },
      "message": "PM: Add empty suspend/resume device irq functions\n\ngit commit 0a0c5168 \"PM: Introduce functions for suspending and resuming\ndevice interrupts\" introduced some helper functions. However these\nfunctions are only available for architectures which support\nGENERIC_HARDIRQS.\n\nOther architectures will see this build error:\n\ndrivers/built-in.o: In function `sysdev_suspend\u0027:\n(.text+0x15138): undefined reference to `check_wakeup_irqs\u0027\ndrivers/built-in.o: In function `device_power_up\u0027:\n(.text+0x1cb66): undefined reference to `resume_device_irqs\u0027\ndrivers/built-in.o: In function `device_power_down\u0027:\n(.text+0x1cb92): undefined reference to `suspend_device_irqs\u0027\n\nTo fix this add some empty inline functions for !GENERIC_HARDIRQS.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "fce2b111fae9151a53dabb36513b398d03337a19",
      "tree": "9349fce23fca0e2d90780e40aac2a6535f820c32",
      "parents": [
        "8b759b84c8b3c27ccc8dd787294636297b3ebb40"
      ],
      "author": {
        "name": "Cornelia Huck",
        "email": "cornelia.huck@de.ibm.com",
        "time": "Wed Jun 10 01:28:19 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jun 12 21:32:33 2009 +0200"
      },
      "message": "PM/Hibernate: Move NVS routines into a seperate file (v2).\n\nThe *_nvs_* routines in swsusp.c make use of the io*map()\nfunctions, which are only provided for HAS_IOMEM, thus\nbreaking compilation if HAS_IOMEM is not set. Fix this\nby moving the *_nvs_* routines into hibernate_nvs.c, which\nis only compiled if HAS_IOMEM is set.\n\n[rjw: Change the name of the new file to hibernate_nvs.c, add the\n license line to the header comment.]\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "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": "018df72dd01576ab199c6129233cdeaf1409958b",
      "tree": "1561017056cc1289e373b094d72ba41a4382308b",
      "parents": [
        "974802eaa1afdc87e00821df7020a2b3c6fee623"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Fri Jun 12 13:17:43 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 12 19:37:30 2009 +0200"
      },
      "message": "perf_counter: Start documenting HAVE_PERF_COUNTERS requirements\n\nHelp out arch porters who want to support perf counters by listing some\nbasic requirements.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nLKML-Reference: \u003c1244827063-24046-1-git-send-email-vapier@gentoo.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\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"
    }
  ],
  "next": "974802eaa1afdc87e00821df7020a2b3c6fee623"
}
