From acbc4a5d3aa65e9bed90486afbe056a5ca275911 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 5 Nov 2013 19:42:39 -0500 Subject: [PATCH] Reduce CPU usage when audio is playing (bz #1017644) Base on qemu 1.6.1 tarball ksmtuned: Fix matching qemu w/o set_process_name (bz #1012604) ksmtuned: Fix committed_memory when no qemu running (bz #1012610) Make sure bridge helper is setuid (bz #1017660) --- .gitignore | 1 + ... => 0001-Fix-migration-from-qemu-kvm.patch | 0 ...v_drain_all-works-during-bdrv_delete.patch | 36 ---- ...register_coprocessor-register-counti.patch | 96 --------- ...patch => 0002-isapc-disable-kvmvapic.patch | 0 ...0003-pci-do-not-export-pci_bus_reset.patch | 0 ...-fix-bit-extraction-for-FPBF-and-FPL.patch | 40 ---- ...pre-and-post-order-vists-in-qdev-wal.patch | 0 0004-rdma-silly-ipv6-bugfix.patch | 37 ---- ...0005-qdev-switch-reset-to-post-order.patch | 0 ...Avoid-syntax-not-supported-by-Python.patch | 32 --- ...fied-usb-tablet-category-from-Misc-t.patch | 35 ---- ...=> 0006-virtio-bus-remove-vdev-field.patch | 0 ...s_legacy_add_drive-scsi-generic-with.patch | 49 ----- ...=> 0007-virtio-pci-remove-vdev-field.patch | 0 ...fix-regression-for-64-bit-PCI-memory.patch | 116 ----------- ...=> 0008-virtio-ccw-remove-vdev-field.patch | 0 ...stalls-on-hypervisor-virtual-console.patch | 45 ----- ...io-bus-cleanup-plug-unplug-interface.patch | 0 ...h-exit-callback-to-VirtioDeviceClass.patch | 0 ..._get_avail_bytes-fix-desc_pa-when-lo.patch | 41 ---- ...itch-exit-callback-to-VirtioDeviceCl.patch | 0 ...ci-fix-endpoint-interval-calculation.patch | 27 --- ...-hub-report-status-changes-only-once.patch | 48 ----- ...h-exit-callback-to-VirtioDeviceClass.patch | 0 ...ect-errors-from-bdrv_co_is_allocated.patch | 149 -------------- ...ch-exit-callback-to-VirtioDeviceClas.patch | 0 ...i386-fix-disassembly-with-PAE-1-PG-0.patch | 76 -------- ...witch-exit-callback-to-VirtioDeviceC.patch | 0 ...-sort-offsets-in-portio-registration.patch | 35 ---- ...h-exit-callback-to-VirtioDeviceClass.patch | 0 ...-to-MMIO-area-with-non-power-of-two-.patch | 37 ---- ...io-pci-add-device_unplugged-callback.patch | 0 ..._pci-fix-level-interrupts-with-irqfd.patch | 38 ---- 0018-exec-always-use-MADV_DONTFORK.patch | 43 ----- ...-xhci-reset-port-when-disabling-slot.patch | 26 --- 0020-usb-parallelize-usb3-streams.patch | 52 ----- ...ix-access-to-host-devices-regression.patch | 86 --------- ...eparate-handling-of-unassigned-io-po.patch | 78 -------- ...turn-1-again-on-reads-from-unsigned-.patch | 34 ---- ...t_within_address_space-for-register-.patch | 40 ---- 0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch | 35 ---- ...hci-save-device-pointer-in-EHCIState.patch | 67 ------- 0027-qxl-fix-local-renderer.patch | 67 ------- ...pc-Initializing-ram_memory-under-Xen.patch | 107 ---------- 0029-pc_q35-Initialize-Xen.patch | 31 --- ...pes.py-Fix-enum-struct-sizes-on-i686.patch | 44 ----- ...i-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch | 45 ----- 0032-chardev-fix-pty_chr_timer.patch | 52 ----- 0033-kvmvapic-Catch-invalid-ROM-size.patch | 59 ------ ...ter-inactive-state-on-hardware-reset.patch | 34 ---- ...lso-physical-ROM-address-when-enteri.patch | 39 ---- ...pha-on-32-bit-hosts-wrong-assertions.patch | 125 ------------ ...o-not-default-cache.no-flush-to-true.patch | 33 ---- ...t-relay-a-previous-driver-s-WCE-conf.patch | 111 ----------- ...te-intr-endpoint-intervals-correctly.patch | 131 ------------- ..._len-may-be-used-unitialized-warning.patch | 37 ---- ...ered-tap-tun-devices-on-all-BSD-OS-s.patch | 47 ----- ...void-qemu_rbd_snap_list-memory-leaks.patch | 43 ----- ...-cluster-size-check-for-flat-extents.patch | 64 ------ 0044-piix4-disable-io-on-reset.patch | 33 ---- ...d-.-configure-disable-coroutine-pool.patch | 163 ---------------- 0046-qemu-Adjust-qemu-wakeup.patch | 123 ------------ ...qemu-xen-logic-for-Xen-HVM-S3-resume.patch | 53 ----- ...cate-SCSITargetReq-r-buf-dynamically.patch | 154 --------------- 0049-Update-VERSION-for-1.6.1-release.patch | 17 -- ...scard-type-to-qcow2_discard_clusters.patch | 0 ...-state-in-active-L1-after-creating-s.patch | 0 ...-Fix-errno-value-for-xattr-functions.patch | 0 ... 0104-Fix-pc-migration-from-qemu-1.5.patch | 9 +- ..._AUDIO_TIMER_PERIOD-instead-of-wakin.patch | 42 ++++ ksmtuned | 4 +- qemu.spec | 182 +++++------------- sources | 2 +- 74 files changed, 96 insertions(+), 3154 deletions(-) rename 0101-Fix-migration-from-qemu-kvm.patch => 0001-Fix-migration-from-qemu-kvm.patch (100%) delete mode 100644 0001-block-ensure-bdrv_drain_all-works-during-bdrv_delete.patch delete mode 100644 0002-gdbstub-Fix-gdb_register_coprocessor-register-counti.patch rename 0102-isapc-disable-kvmvapic.patch => 0002-isapc-disable-kvmvapic.patch (100%) rename 0103-pci-do-not-export-pci_bus_reset.patch => 0003-pci-do-not-export-pci_bus_reset.patch (100%) delete mode 100644 0003-target-ppc-fix-bit-extraction-for-FPBF-and-FPL.patch rename 0104-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch => 0004-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch (100%) delete mode 100644 0004-rdma-silly-ipv6-bugfix.patch rename 0105-qdev-switch-reset-to-post-order.patch => 0005-qdev-switch-reset-to-post-order.patch (100%) delete mode 100644 0005-scripts-qapi.py-Avoid-syntax-not-supported-by-Python.patch delete mode 100644 0006-usb-dev-hid-Modified-usb-tablet-category-from-Misc-t.patch rename 0106-virtio-bus-remove-vdev-field.patch => 0006-virtio-bus-remove-vdev-field.patch (100%) delete mode 100644 0007-scsi-Fix-scsi_bus_legacy_add_drive-scsi-generic-with.patch rename 0107-virtio-pci-remove-vdev-field.patch => 0007-virtio-pci-remove-vdev-field.patch (100%) delete mode 100644 0008-pc-fix-regression-for-64-bit-PCI-memory.patch rename 0108-virtio-ccw-remove-vdev-field.patch => 0008-virtio-ccw-remove-vdev-field.patch (100%) delete mode 100644 0009-pseries-Fix-stalls-on-hypervisor-virtual-console.patch rename 0109-virtio-bus-cleanup-plug-unplug-interface.patch => 0009-virtio-bus-cleanup-plug-unplug-interface.patch (100%) rename 0110-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch => 0010-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch (100%) delete mode 100644 0010-virtio-virtqueue_get_avail_bytes-fix-desc_pa-when-lo.patch rename 0111-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch => 0011-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch (100%) delete mode 100644 0011-xhci-fix-endpoint-interval-calculation.patch delete mode 100644 0012-Revert-usb-hub-report-status-changes-only-once.patch rename 0112-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch => 0012-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch (100%) delete mode 100644 0013-block-expect-errors-from-bdrv_co_is_allocated.patch rename 0113-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch => 0013-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch (100%) delete mode 100644 0014-target-i386-fix-disassembly-with-PAE-1-PG-0.patch rename 0114-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch => 0014-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch (100%) delete mode 100644 0015-adlib-sort-offsets-in-portio-registration.patch rename 0115-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch => 0015-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch (100%) delete mode 100644 0016-exec-fix-writing-to-MMIO-area-with-non-power-of-two-.patch rename 0116-virtio-pci-add-device_unplugged-callback.patch => 0016-virtio-pci-add-device_unplugged-callback.patch (100%) delete mode 100644 0017-virtio_pci-fix-level-interrupts-with-irqfd.patch delete mode 100644 0018-exec-always-use-MADV_DONTFORK.patch delete mode 100644 0019-xhci-reset-port-when-disabling-slot.patch delete mode 100644 0020-usb-parallelize-usb3-streams.patch delete mode 100644 0021-w32-Fix-access-to-host-devices-regression.patch delete mode 100644 0022-memory-Provide-separate-handling-of-unassigned-io-po.patch delete mode 100644 0023-Revert-memory-Return-1-again-on-reads-from-unsigned-.patch delete mode 100644 0024-exec-check-offset_within_address_space-for-register-.patch delete mode 100644 0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch delete mode 100644 0026-ehci-save-device-pointer-in-EHCIState.patch delete mode 100644 0027-qxl-fix-local-renderer.patch delete mode 100644 0028-pc-Initializing-ram_memory-under-Xen.patch delete mode 100644 0029-pc_q35-Initialize-Xen.patch delete mode 100644 0030-qapi-types.py-Fix-enum-struct-sizes-on-i686.patch delete mode 100644 0031-pcnet-pci-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch delete mode 100644 0032-chardev-fix-pty_chr_timer.patch delete mode 100644 0033-kvmvapic-Catch-invalid-ROM-size.patch delete mode 100644 0034-kvmvapic-Enter-inactive-state-on-hardware-reset.patch delete mode 100644 0035-kvmvapic-Clear-also-physical-ROM-address-when-enteri.patch delete mode 100644 0036-tci-Fix-qemu-alpha-on-32-bit-hosts-wrong-assertions.patch delete mode 100644 0037-blockdev-do-not-default-cache.no-flush-to-true.patch delete mode 100644 0038-virtio-blk-do-not-relay-a-previous-driver-s-WCE-conf.patch delete mode 100644 0039-xhci-emulate-intr-endpoint-intervals-correctly.patch delete mode 100644 0040-iov-avoid-orig_len-may-be-used-unitialized-warning.patch delete mode 100644 0041-tap-Use-numbered-tap-tun-devices-on-all-BSD-OS-s.patch delete mode 100644 0042-rbd-avoid-qemu_rbd_snap_list-memory-leaks.patch delete mode 100644 0043-vmdk-fix-cluster-size-check-for-flat-extents.patch delete mode 100644 0044-piix4-disable-io-on-reset.patch delete mode 100644 0045-coroutine-add-.-configure-disable-coroutine-pool.patch delete mode 100644 0046-qemu-Adjust-qemu-wakeup.patch delete mode 100644 0047-qemu-Add-qemu-xen-logic-for-Xen-HVM-S3-resume.patch delete mode 100644 0048-scsi-Allocate-SCSITargetReq-r-buf-dynamically.patch delete mode 100644 0049-Update-VERSION-for-1.6.1-release.patch rename 0201-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch => 0101-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch (100%) rename 0202-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch => 0102-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch (100%) rename 0203-hw-9pfs-Fix-errno-value-for-xattr-functions.patch => 0103-hw-9pfs-Fix-errno-value-for-xattr-functions.patch (100%) rename 0204-Fix-pc-migration-from-qemu-1.5.patch => 0104-Fix-pc-migration-from-qemu-1.5.patch (96%) create mode 100644 0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch diff --git a/.gitignore b/.gitignore index 1ac9888..a119815 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ qemu-kvm-0.13.0-25fdf4a.tar.gz /qemu-1.5.1.tar.bz2 /qemu-1.5.2.tar.bz2 /qemu-1.6.0.tar.bz2 +/qemu-1.6.1.tar.bz2 diff --git a/0101-Fix-migration-from-qemu-kvm.patch b/0001-Fix-migration-from-qemu-kvm.patch similarity index 100% rename from 0101-Fix-migration-from-qemu-kvm.patch rename to 0001-Fix-migration-from-qemu-kvm.patch diff --git a/0001-block-ensure-bdrv_drain_all-works-during-bdrv_delete.patch b/0001-block-ensure-bdrv_drain_all-works-during-bdrv_delete.patch deleted file mode 100644 index 7268607..0000000 --- a/0001-block-ensure-bdrv_drain_all-works-during-bdrv_delete.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 670599a08c052f6ef841743731a8f06d4b50ec99 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Thu, 27 Jun 2013 15:32:26 +0200 -Subject: [PATCH] block: ensure bdrv_drain_all() works during bdrv_delete() - -In bdrv_delete() make sure to call bdrv_make_anon() *after* bdrv_close() -so that the device is still seen by bdrv_drain_all() when iterating -bdrv_states. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit e1b5c52e04d04bb93546c6e37e8884889d047cb1) - -Signed-off-by: Michael Roth ---- - block.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/block.c b/block.c -index 01b66d8..d5ce8d3 100644 ---- a/block.c -+++ b/block.c -@@ -1606,11 +1606,11 @@ void bdrv_delete(BlockDriverState *bs) - assert(!bs->job); - assert(!bs->in_use); - -+ bdrv_close(bs); -+ - /* remove from list, if necessary */ - bdrv_make_anon(bs); - -- bdrv_close(bs); -- - g_free(bs); - } - diff --git a/0002-gdbstub-Fix-gdb_register_coprocessor-register-counti.patch b/0002-gdbstub-Fix-gdb_register_coprocessor-register-counti.patch deleted file mode 100644 index 46cb0d9..0000000 --- a/0002-gdbstub-Fix-gdb_register_coprocessor-register-counti.patch +++ /dev/null @@ -1,96 +0,0 @@ -From c0c080c5d1ce6c236ba8ab5db3a17043c665d0f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20F=C3=A4rber?= -Date: Mon, 12 Aug 2013 18:09:47 +0200 -Subject: [PATCH] gdbstub: Fix gdb_register_coprocessor() register counting -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Commit a0e372f0c49ac01faeaeb73a6e8f50e8ac615f34 reorganized the register -counting for GDB. While it seems correct not to let the total number of -registers skyrocket in an SMP scenario through a static variable, the -distinction between total register count and 'g' packet register count -(last_reg vs. num_g_regs) got lost among the way. - -Fix this by introducing CPUState::gdb_num_g_regs and using that in -gdb_handle_packet(). - -Reported-by: Aneesh Kumar K.V -Cc: qemu-stable@nongnu.org (stable-1.6) -Tested-by: Aneesh Kumar K.V -Tested-by: Max Filippov -Tested-by: Peter Maydell -Signed-off-by: Andreas Färber -(cherry picked from commit 35143f0164e6933a85c7c2b8a89a040d881a9151) - -Signed-off-by: Michael Roth ---- - gdbstub.c | 6 ++++-- - include/qom/cpu.h | 2 ++ - qom/cpu.c | 2 +- - 3 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/gdbstub.c b/gdbstub.c -index 1af25a6..9d067d6 100644 ---- a/gdbstub.c -+++ b/gdbstub.c -@@ -621,6 +621,8 @@ void gdb_register_coprocessor(CPUState *cpu, - if (g_pos != s->base_reg) { - fprintf(stderr, "Error: Bad gdb register numbering for '%s'\n" - "Expected %d got %d\n", xml, g_pos, s->base_reg); -+ } else { -+ cpu->gdb_num_g_regs = cpu->gdb_num_regs; - } - } - } -@@ -902,7 +904,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) - case 'g': - cpu_synchronize_state(s->g_cpu); - len = 0; -- for (addr = 0; addr < s->g_cpu->gdb_num_regs; addr++) { -+ for (addr = 0; addr < s->g_cpu->gdb_num_g_regs; addr++) { - reg_size = gdb_read_register(s->g_cpu, mem_buf + len, addr); - len += reg_size; - } -@@ -914,7 +916,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) - registers = mem_buf; - len = strlen(p) / 2; - hextomem((uint8_t *)registers, p, len); -- for (addr = 0; addr < s->g_cpu->gdb_num_regs && len > 0; addr++) { -+ for (addr = 0; addr < s->g_cpu->gdb_num_g_regs && len > 0; addr++) { - reg_size = gdb_write_register(s->g_cpu, registers, addr); - len -= reg_size; - registers += reg_size; -diff --git a/include/qom/cpu.h b/include/qom/cpu.h -index 0d6e95c..3e49936 100644 ---- a/include/qom/cpu.h -+++ b/include/qom/cpu.h -@@ -152,6 +152,7 @@ struct kvm_run; - * @current_tb: Currently executing TB. - * @gdb_regs: Additional GDB registers. - * @gdb_num_regs: Number of total registers accessible to GDB. -+ * @gdb_num_g_regs: Number of registers in GDB 'g' packets. - * @next_cpu: Next CPU sharing TB cache. - * @kvm_fd: vCPU file descriptor for KVM. - * -@@ -188,6 +189,7 @@ struct CPUState { - struct TranslationBlock *current_tb; - struct GDBRegisterState *gdb_regs; - int gdb_num_regs; -+ int gdb_num_g_regs; - CPUState *next_cpu; - - int kvm_fd; -diff --git a/qom/cpu.c b/qom/cpu.c -index aa95108..e71e57b 100644 ---- a/qom/cpu.c -+++ b/qom/cpu.c -@@ -240,7 +240,7 @@ static void cpu_common_initfn(Object *obj) - CPUState *cpu = CPU(obj); - CPUClass *cc = CPU_GET_CLASS(obj); - -- cpu->gdb_num_regs = cc->gdb_num_core_regs; -+ cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs; - } - - static int64_t cpu_common_get_arch_id(CPUState *cpu) diff --git a/0102-isapc-disable-kvmvapic.patch b/0002-isapc-disable-kvmvapic.patch similarity index 100% rename from 0102-isapc-disable-kvmvapic.patch rename to 0002-isapc-disable-kvmvapic.patch diff --git a/0103-pci-do-not-export-pci_bus_reset.patch b/0003-pci-do-not-export-pci_bus_reset.patch similarity index 100% rename from 0103-pci-do-not-export-pci_bus_reset.patch rename to 0003-pci-do-not-export-pci_bus_reset.patch diff --git a/0003-target-ppc-fix-bit-extraction-for-FPBF-and-FPL.patch b/0003-target-ppc-fix-bit-extraction-for-FPBF-and-FPL.patch deleted file mode 100644 index faf651b..0000000 --- a/0003-target-ppc-fix-bit-extraction-for-FPBF-and-FPL.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 52f99b02e5ff1004fb3b41846d2c34f190127456 Mon Sep 17 00:00:00 2001 -From: Aurelien Jarno -Date: Thu, 15 Aug 2013 13:32:38 +0200 -Subject: [PATCH] target-ppc: fix bit extraction for FPBF and FPL - -Bit extraction for the FP BF and L field of the MTFSFI and MTFSF -instructions is wrong and doesn't match the reference manual (which -explain the bit number in big endian format). It has been broken in -commit 7d08d85645def18eac2a9d672c1868a35e0bcf79. - -This patch fixes this, which in turn fixes the problem reported by -Khem Raj about the floor() function of libm. - -Reported-by: Khem Raj -Signed-off-by: Aurelien Jarno -CC: qemu-stable@nongnu.org (1.6) -Signed-off-by: Alexander Graf -(cherry picked from commit 779f659021d1754117bce1aab9370dc22f37ae07) - -Signed-off-by: Michael Roth ---- - target-ppc/translate.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/target-ppc/translate.c b/target-ppc/translate.c -index f07d70d..41f4048 100644 ---- a/target-ppc/translate.c -+++ b/target-ppc/translate.c -@@ -428,9 +428,9 @@ EXTRACT_HELPER(CRM, 12, 8); - EXTRACT_HELPER(SR, 16, 4); - - /* mtfsf/mtfsfi */ --EXTRACT_HELPER(FPBF, 19, 3); -+EXTRACT_HELPER(FPBF, 23, 3); - EXTRACT_HELPER(FPIMM, 12, 4); --EXTRACT_HELPER(FPL, 21, 1); -+EXTRACT_HELPER(FPL, 25, 1); - EXTRACT_HELPER(FPFLM, 17, 8); - EXTRACT_HELPER(FPW, 16, 1); - diff --git a/0104-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch b/0004-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch similarity index 100% rename from 0104-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch rename to 0004-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch diff --git a/0004-rdma-silly-ipv6-bugfix.patch b/0004-rdma-silly-ipv6-bugfix.patch deleted file mode 100644 index 6ee6865..0000000 --- a/0004-rdma-silly-ipv6-bugfix.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 260790645e95891cb264c2d657648f43401ac915 Mon Sep 17 00:00:00 2001 -From: "Michael R. Hines" -Date: Sun, 18 Aug 2013 22:27:08 -0400 -Subject: [PATCH] rdma: silly ipv6 bugfix - -My bad - but it's very important for us to warn the user that -IPv6 is broken on RoCE in linux right now, until linux releases -a fixed version. - -Signed-off-by: Michael R. Hines -Signed-off-by: Michael Tokarev -(cherry picked from commit c89aa2f1851b08c3efa8a1070c0a6b9a36e1227f) - -Signed-off-by: Michael Roth ---- - migration-rdma.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/migration-rdma.c b/migration-rdma.c -index 3d1266f..f5e75d6 100644 ---- a/migration-rdma.c -+++ b/migration-rdma.c -@@ -920,9 +920,11 @@ static int qemu_rdma_resolve_host(RDMAContext *rdma, Error **errp) - ret = rdma_resolve_addr(rdma->cm_id, NULL, e->ai_dst_addr, - RDMA_RESOLVE_TIMEOUT_MS); - if (!ret) { -- ret = qemu_rdma_broken_ipv6_kernel(errp, rdma->cm_id->verbs); -- if (ret) { -- continue; -+ if (e->ai_family == AF_INET6) { -+ ret = qemu_rdma_broken_ipv6_kernel(errp, rdma->cm_id->verbs); -+ if (ret) { -+ continue; -+ } - } - goto route; - } diff --git a/0105-qdev-switch-reset-to-post-order.patch b/0005-qdev-switch-reset-to-post-order.patch similarity index 100% rename from 0105-qdev-switch-reset-to-post-order.patch rename to 0005-qdev-switch-reset-to-post-order.patch diff --git a/0005-scripts-qapi.py-Avoid-syntax-not-supported-by-Python.patch b/0005-scripts-qapi.py-Avoid-syntax-not-supported-by-Python.patch deleted file mode 100644 index 292328e..0000000 --- a/0005-scripts-qapi.py-Avoid-syntax-not-supported-by-Python.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d6dcfd69f8b2aa2cad79486bbadef7d51f7f4e7d Mon Sep 17 00:00:00 2001 -From: Peter Maydell -Date: Tue, 20 Aug 2013 15:50:15 +0100 -Subject: [PATCH] scripts/qapi.py: Avoid syntax not supported by Python 2.4 - -The Python "except Foo as x" syntax was only introduced in -Python 2.6, but we aim to support Python 2.4 and later. -Use the old-style "except Foo, x" syntax instead, thus -fixing configure/compile on systems with older Python. - -Signed-off-by: Peter Maydell -Signed-off-by: Luiz Capitulino -(cherry picked from commit 21e0043bada1a24ae2ba6cd0051e104c0cbf9634) - -Signed-off-by: Michael Roth ---- - scripts/qapi.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/scripts/qapi.py b/scripts/qapi.py -index 0ebea94..1069310 100644 ---- a/scripts/qapi.py -+++ b/scripts/qapi.py -@@ -161,7 +161,7 @@ class QAPISchema: - def parse_schema(fp): - try: - schema = QAPISchema(fp) -- except QAPISchemaError as e: -+ except QAPISchemaError, e: - print >>sys.stderr, e - exit(1) - diff --git a/0006-usb-dev-hid-Modified-usb-tablet-category-from-Misc-t.patch b/0006-usb-dev-hid-Modified-usb-tablet-category-from-Misc-t.patch deleted file mode 100644 index ed4a84b..0000000 --- a/0006-usb-dev-hid-Modified-usb-tablet-category-from-Misc-t.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 11b0ab70a58e3e6c06dc1fd1ea318b1c5806d955 Mon Sep 17 00:00:00 2001 -From: Marcel Apfelbaum -Date: Thu, 22 Aug 2013 20:11:36 +0300 -Subject: [PATCH] usb/dev-hid: Modified usb-tablet category from Misc to Input -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -usb-tablet device was wrongly assigned to Misc category - -Reported-by: Markus Armbruster -Cc: qemu-stable@nongnu.org -Signed-off-by: Marcel Apfelbaum -Reviewed-by: Andreas Färber -Signed-off-by: Gerd Hoffmann -(cherry picked from commit 31efd2e883018b4c079ad082105bc161fbb3fef8) - -Signed-off-by: Michael Roth ---- - hw/usb/dev-hid.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c -index 66c6331..5956720 100644 ---- a/hw/usb/dev-hid.c -+++ b/hw/usb/dev-hid.c -@@ -658,7 +658,7 @@ static void usb_tablet_class_initfn(ObjectClass *klass, void *data) - uc->product_desc = "QEMU USB Tablet"; - dc->vmsd = &vmstate_usb_ptr; - dc->props = usb_tablet_properties; -- set_bit(DEVICE_CATEGORY_MISC, dc->categories); -+ set_bit(DEVICE_CATEGORY_INPUT, dc->categories); - } - - static const TypeInfo usb_tablet_info = { diff --git a/0106-virtio-bus-remove-vdev-field.patch b/0006-virtio-bus-remove-vdev-field.patch similarity index 100% rename from 0106-virtio-bus-remove-vdev-field.patch rename to 0006-virtio-bus-remove-vdev-field.patch diff --git a/0007-scsi-Fix-scsi_bus_legacy_add_drive-scsi-generic-with.patch b/0007-scsi-Fix-scsi_bus_legacy_add_drive-scsi-generic-with.patch deleted file mode 100644 index 868951b..0000000 --- a/0007-scsi-Fix-scsi_bus_legacy_add_drive-scsi-generic-with.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 964e0d4ec52ea7400ccc69de69b05ac913bbfff8 Mon Sep 17 00:00:00 2001 -From: Markus Armbruster -Date: Fri, 23 Aug 2013 18:01:58 +0200 -Subject: [PATCH] scsi: Fix scsi_bus_legacy_add_drive() scsi-generic with - serial -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -scsi_bus_legacy_add_drive() creates either a scsi-disk or a -scsi-generic device. It sets property "serial" to argument serial -unless null. Crashes with scsi-generic, because it doesn't have such -the property. - -Only usb_msd_initfn_storage() passes non-null serial. Reproducer: - - $ qemu-system-x86_64 -nodefaults -display none -S -usb \ - -drive if=none,file=/dev/sg1,id=usb-drv0 \ - -device usb-storage,id=usb-msd0,drive=usb-drv0,serial=123 - qemu-system-x86_64: -device usb-storage,id=usb-msd0,drive=usb-drv0,serial=123: Property '.serial' not found - Aborted (core dumped) - -Fix by handling exactly like "removable": set the property only when -it exists. - -Cc: qemu-stable@nongnu.org -Reviewed-by: Andreas Färber -Signed-off-by: Markus Armbruster -Signed-off-by: Paolo Bonzini -(cherry picked from commit c24e7517ee4a98e90eee5f0f07708a1fa12326b3) - -Signed-off-by: Michael Roth ---- - hw/scsi/scsi-bus.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c -index fbf9173..8fe4f4c 100644 ---- a/hw/scsi/scsi-bus.c -+++ b/hw/scsi/scsi-bus.c -@@ -224,7 +224,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockDriverState *bdrv, - if (object_property_find(OBJECT(dev), "removable", NULL)) { - qdev_prop_set_bit(dev, "removable", removable); - } -- if (serial) { -+ if (serial && object_property_find(OBJECT(dev), "serial", NULL)) { - qdev_prop_set_string(dev, "serial", serial); - } - if (qdev_prop_set_drive(dev, "drive", bdrv) < 0) { diff --git a/0107-virtio-pci-remove-vdev-field.patch b/0007-virtio-pci-remove-vdev-field.patch similarity index 100% rename from 0107-virtio-pci-remove-vdev-field.patch rename to 0007-virtio-pci-remove-vdev-field.patch diff --git a/0008-pc-fix-regression-for-64-bit-PCI-memory.patch b/0008-pc-fix-regression-for-64-bit-PCI-memory.patch deleted file mode 100644 index c2a1152..0000000 --- a/0008-pc-fix-regression-for-64-bit-PCI-memory.patch +++ /dev/null @@ -1,116 +0,0 @@ -From a73c74f63aa8f977ece88c97280a03ea9b1ca395 Mon Sep 17 00:00:00 2001 -From: "Michael S. Tsirkin" -Date: Tue, 27 Aug 2013 08:37:26 +0300 -Subject: [PATCH] pc: fix regression for 64 bit PCI memory - -commit 398489018183d613306ab022653552247d93919f - pc: limit 64 bit hole to 2G by default -introduced a way for management to control -the window allocated to the 64 bit PCI hole. - -This is useful, but existing management tools do not know how to set -this property. As a result, e.g. specifying a large ivshmem device with -size > 4G is broken by default. For example this configuration no -longer works: - --device ivshmem,size=4294967296,chardev=cfoo --chardev socket,path=/tmp/sock,id=cfoo,server,nowait - -Fix this by detecting that hole size was not specified -and defaulting to the backwards-compatible value of 1 << 62. - -Cc: qemu-stable@nongnu.org -Cc: Igor Mammedov -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 1466cef32dd5e7ef3c6477e96d85d92302ad02e3) - -Signed-off-by: Michael Roth ---- - hw/pci-host/piix.c | 9 ++++++--- - hw/pci-host/q35.c | 8 +++++--- - include/hw/i386/pc.h | 11 ++++++++++- - 3 files changed, 21 insertions(+), 7 deletions(-) - -diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c -index dc1718f..221d82b 100644 ---- a/hw/pci-host/piix.c -+++ b/hw/pci-host/piix.c -@@ -320,6 +320,7 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, - PCII440FXState *f; - unsigned i; - I440FXState *i440fx; -+ uint64_t pci_hole64_size; - - dev = qdev_create(NULL, TYPE_I440FX_PCI_HOST_BRIDGE); - s = PCI_HOST_BRIDGE(dev); -@@ -351,13 +352,15 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, - pci_hole_start, pci_hole_size); - memory_region_add_subregion(f->system_memory, pci_hole_start, &f->pci_hole); - -+ pci_hole64_size = pci_host_get_hole64_size(i440fx->pci_hole64_size); -+ - pc_init_pci64_hole(&i440fx->pci_info, 0x100000000ULL + above_4g_mem_size, -- i440fx->pci_hole64_size); -+ pci_hole64_size); - memory_region_init_alias(&f->pci_hole_64bit, OBJECT(d), "pci-hole64", - f->pci_address_space, - i440fx->pci_info.w64.begin, -- i440fx->pci_hole64_size); -- if (i440fx->pci_hole64_size) { -+ pci_hole64_size); -+ if (pci_hole64_size) { - memory_region_add_subregion(f->system_memory, - i440fx->pci_info.w64.begin, - &f->pci_hole_64bit); -diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c -index 12314d8..4febd24 100644 ---- a/hw/pci-host/q35.c -+++ b/hw/pci-host/q35.c -@@ -320,6 +320,7 @@ static int mch_init(PCIDevice *d) - { - int i; - MCHPCIState *mch = MCH_PCI_DEVICE(d); -+ uint64_t pci_hole64_size; - - /* setup pci memory regions */ - memory_region_init_alias(&mch->pci_hole, OBJECT(mch), "pci-hole", -@@ -329,13 +330,14 @@ static int mch_init(PCIDevice *d) - memory_region_add_subregion(mch->system_memory, mch->below_4g_mem_size, - &mch->pci_hole); - -+ pci_hole64_size = pci_host_get_hole64_size(mch->pci_hole64_size); - pc_init_pci64_hole(&mch->pci_info, 0x100000000ULL + mch->above_4g_mem_size, -- mch->pci_hole64_size); -+ pci_hole64_size); - memory_region_init_alias(&mch->pci_hole_64bit, OBJECT(mch), "pci-hole64", - mch->pci_address_space, - mch->pci_info.w64.begin, -- mch->pci_hole64_size); -- if (mch->pci_hole64_size) { -+ pci_hole64_size); -+ if (pci_hole64_size) { - memory_region_add_subregion(mch->system_memory, - mch->pci_info.w64.begin, - &mch->pci_hole_64bit); -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index f79d478..475ba9e 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -106,7 +106,16 @@ PcGuestInfo *pc_guest_info_init(ram_addr_t below_4g_mem_size, - #define PCI_HOST_PROP_PCI_HOLE64_START "pci-hole64-start" - #define PCI_HOST_PROP_PCI_HOLE64_END "pci-hole64-end" - #define PCI_HOST_PROP_PCI_HOLE64_SIZE "pci-hole64-size" --#define DEFAULT_PCI_HOLE64_SIZE (1ULL << 31) -+#define DEFAULT_PCI_HOLE64_SIZE (~0x0ULL) -+ -+static inline uint64_t pci_host_get_hole64_size(uint64_t pci_hole64_size) -+{ -+ if (pci_hole64_size == DEFAULT_PCI_HOLE64_SIZE) { -+ return 1ULL << 62; -+ } else { -+ return pci_hole64_size; -+ } -+} - - void pc_init_pci64_hole(PcPciInfo *pci_info, uint64_t pci_hole64_start, - uint64_t pci_hole64_size); diff --git a/0108-virtio-ccw-remove-vdev-field.patch b/0008-virtio-ccw-remove-vdev-field.patch similarity index 100% rename from 0108-virtio-ccw-remove-vdev-field.patch rename to 0008-virtio-ccw-remove-vdev-field.patch diff --git a/0009-pseries-Fix-stalls-on-hypervisor-virtual-console.patch b/0009-pseries-Fix-stalls-on-hypervisor-virtual-console.patch deleted file mode 100644 index 28878e7..0000000 --- a/0009-pseries-Fix-stalls-on-hypervisor-virtual-console.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 3fe494efc5eb107c4c90e96df3e6131f9960f4b9 Mon Sep 17 00:00:00 2001 -From: Anton Blanchard -Date: Tue, 13 Aug 2013 14:10:04 +1000 -Subject: [PATCH] pseries: Fix stalls on hypervisor virtual console - -A number of users are reporting stalls when using the pseries -hypervisor virtual console. - -A simple test case is to paste 15 or 17 characters at a time -into the console. Pasting 15 characters at a time works fine -but pasting 17 characters hangs for a random amount of time. -Other activity (network, qemu monitor etc) unblocks it. - -If qemu-char tries to send more than 16 characters at once, -vty_can_receive returns false. At this point we have to -wait for the guest to consume that output. Everything is good -so far. - -The problem occurs when the the guest does consume the output. -We need to signal back to the qemu-char layer that we are -ready for more input. Without this we block until something -else kicks us (eg network activity). - -Signed-off-by: Anton Blanchard -Signed-off-by: Alexander Graf -(cherry picked from commit 7770b6f78a2d655e03852a5de238f5926c92be6a) - -Signed-off-by: Michael Roth ---- - hw/char/spapr_vty.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c -index a799721..9c2aef8 100644 ---- a/hw/char/spapr_vty.c -+++ b/hw/char/spapr_vty.c -@@ -47,6 +47,8 @@ static int vty_getchars(VIOsPAPRDevice *sdev, uint8_t *buf, int max) - buf[n++] = dev->buf[dev->out++ % VTERM_BUFSIZE]; - } - -+ qemu_chr_accept_input(dev->chardev); -+ - return n; - } - diff --git a/0109-virtio-bus-cleanup-plug-unplug-interface.patch b/0009-virtio-bus-cleanup-plug-unplug-interface.patch similarity index 100% rename from 0109-virtio-bus-cleanup-plug-unplug-interface.patch rename to 0009-virtio-bus-cleanup-plug-unplug-interface.patch diff --git a/0110-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch b/0010-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch similarity index 100% rename from 0110-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch rename to 0010-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch diff --git a/0010-virtio-virtqueue_get_avail_bytes-fix-desc_pa-when-lo.patch b/0010-virtio-virtqueue_get_avail_bytes-fix-desc_pa-when-lo.patch deleted file mode 100644 index ed450ab..0000000 --- a/0010-virtio-virtqueue_get_avail_bytes-fix-desc_pa-when-lo.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 358bb0daa1ce332a18cc996fcd078a3989f77d36 Mon Sep 17 00:00:00 2001 -From: yinyin -Date: Thu, 22 Aug 2013 14:47:16 +0800 -Subject: [PATCH] virtio: virtqueue_get_avail_bytes: fix desc_pa when loop over - the indirect descriptor table - -virtqueue_get_avail_bytes: when found a indirect desc, we need loop over it. - /* loop over the indirect descriptor table */ - indirect = 1; - max = vring_desc_len(desc_pa, i) / sizeof(VRingDesc); - num_bufs = i = 0; - desc_pa = vring_desc_addr(desc_pa, i); -But, It init i to 0, then use i to update desc_pa. so we will always get: -desc_pa = vring_desc_addr(desc_pa, 0); -the last two line should swap. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Yin Yin -Reviewed-by: Stefan Hajnoczi -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 1ae2757c6c4525c9b42f408c86818f843bad7418) - -Signed-off-by: Michael Roth ---- - hw/virtio/virtio.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c -index f03c45d..2f1e73b 100644 ---- a/hw/virtio/virtio.c -+++ b/hw/virtio/virtio.c -@@ -377,8 +377,8 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes, - /* loop over the indirect descriptor table */ - indirect = 1; - max = vring_desc_len(desc_pa, i) / sizeof(VRingDesc); -- num_bufs = i = 0; - desc_pa = vring_desc_addr(desc_pa, i); -+ num_bufs = i = 0; - } - - do { diff --git a/0111-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch b/0011-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch similarity index 100% rename from 0111-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch rename to 0011-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch diff --git a/0011-xhci-fix-endpoint-interval-calculation.patch b/0011-xhci-fix-endpoint-interval-calculation.patch deleted file mode 100644 index f408884..0000000 --- a/0011-xhci-fix-endpoint-interval-calculation.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c0a5eb81b43e56569cfdb9c86fd78930b2765b96 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Wed, 28 Aug 2013 11:39:02 +0200 -Subject: [PATCH] xhci: fix endpoint interval calculation - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann -(cherry picked from commit ca7162782a293f525633e5816470498dd86a51cf) - -Signed-off-by: Michael Roth ---- - hw/usb/hcd-xhci.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c -index 58c88b8..3c0ba8e 100644 ---- a/hw/usb/hcd-xhci.c -+++ b/hw/usb/hcd-xhci.c -@@ -1257,7 +1257,7 @@ static void xhci_init_epctx(XHCIEPContext *epctx, - epctx->ring.ccs = ctx[2] & 1; - } - -- epctx->interval = 1 << (ctx[0] >> 16) & 0xff; -+ epctx->interval = 1 << ((ctx[0] >> 16) & 0xff); - } - - static TRBCCode xhci_enable_ep(XHCIState *xhci, unsigned int slotid, diff --git a/0012-Revert-usb-hub-report-status-changes-only-once.patch b/0012-Revert-usb-hub-report-status-changes-only-once.patch deleted file mode 100644 index 04842a9..0000000 --- a/0012-Revert-usb-hub-report-status-changes-only-once.patch +++ /dev/null @@ -1,48 +0,0 @@ -From c09a4634d945df5d7e1fbc394646e78d7d713c67 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Tue, 27 Aug 2013 17:00:04 +0200 -Subject: [PATCH] Revert "usb-hub: report status changes only once" - -This reverts commit a309ee6e0a256f690760abfba44fceaa52a7c2f3. - -This isn't in line with the usb specification and adds regressions, -win7 fails to drive the usb hub for example. - -Was added because it "solved" the issue of hubs interacting badly -with the xhci host controller. Now with the root cause being fixed -in xhci (commit ) we can revert this one. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann -(cherry picked from commit bdebd6ee81f4d849aa8541c289203e3992450db0) - -Signed-off-by: Michael Roth ---- - hw/usb/dev-hub.c | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c -index e865a98..4188a3c 100644 ---- a/hw/usb/dev-hub.c -+++ b/hw/usb/dev-hub.c -@@ -33,7 +33,6 @@ typedef struct USBHubPort { - USBPort port; - uint16_t wPortStatus; - uint16_t wPortChange; -- uint16_t wPortChange_reported; - } USBHubPort; - - typedef struct USBHubState { -@@ -468,11 +467,8 @@ static void usb_hub_handle_data(USBDevice *dev, USBPacket *p) - status = 0; - for(i = 0; i < NUM_PORTS; i++) { - port = &s->ports[i]; -- if (port->wPortChange && -- port->wPortChange_reported != port->wPortChange) { -+ if (port->wPortChange) - status |= (1 << (i + 1)); -- } -- port->wPortChange_reported = port->wPortChange; - } - if (status != 0) { - for(i = 0; i < n; i++) { diff --git a/0112-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch b/0012-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch similarity index 100% rename from 0112-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch rename to 0012-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch diff --git a/0013-block-expect-errors-from-bdrv_co_is_allocated.patch b/0013-block-expect-errors-from-bdrv_co_is_allocated.patch deleted file mode 100644 index 85d0820..0000000 --- a/0013-block-expect-errors-from-bdrv_co_is_allocated.patch +++ /dev/null @@ -1,149 +0,0 @@ -From da4e203efa76f2d2ee0a17670c241881963d033d Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Wed, 4 Sep 2013 19:00:25 +0200 -Subject: [PATCH] block: expect errors from bdrv_co_is_allocated - -Some bdrv_is_allocated callers do not expect errors, but the fallback -in qcow2.c might make other callers trip on assertion failures or -infinite loops. - -Fix the callers to always look for errors. - -Cc: qemu-stable@nongnu.org -Reviewed-by: Eric Blake -Signed-off-by: Paolo Bonzini -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit d663640c04f2aab810915c556390211d75457704) - -Conflicts: - - block/cow.c - -*modified to avoid dependency on upstream's e641c1e8 - -Signed-off-by: Michael Roth ---- - block.c | 7 +++++-- - block/cow.c | 6 +++++- - block/qcow2.c | 4 +--- - block/stream.c | 2 +- - qemu-img.c | 16 ++++++++++++++-- - qemu-io-cmds.c | 4 ++++ - 6 files changed, 30 insertions(+), 9 deletions(-) - -diff --git a/block.c b/block.c -index d5ce8d3..8ce8b91 100644 ---- a/block.c -+++ b/block.c -@@ -1803,8 +1803,11 @@ int bdrv_commit(BlockDriverState *bs) - buf = g_malloc(COMMIT_BUF_SECTORS * BDRV_SECTOR_SIZE); - - for (sector = 0; sector < total_sectors; sector += n) { -- if (bdrv_is_allocated(bs, sector, COMMIT_BUF_SECTORS, &n)) { -- -+ ret = bdrv_is_allocated(bs, sector, COMMIT_BUF_SECTORS, &n); -+ if (ret < 0) { -+ goto ro_cleanup; -+ } -+ if (ret) { - if (bdrv_read(bs, sector, buf, n) != 0) { - ret = -EIO; - goto ro_cleanup; -diff --git a/block/cow.c b/block/cow.c -index 1cc2e89..e1b73d6 100644 ---- a/block/cow.c -+++ b/block/cow.c -@@ -189,7 +189,11 @@ static int coroutine_fn cow_read(BlockDriverState *bs, int64_t sector_num, - int ret, n; - - while (nb_sectors > 0) { -- if (bdrv_co_is_allocated(bs, sector_num, nb_sectors, &n)) { -+ ret = bdrv_co_is_allocated(bs, sector_num, nb_sectors, &n); -+ if (ret < 0) { -+ return ret; -+ } -+ if (ret) { - ret = bdrv_pread(bs->file, - s->cow_sectors_offset + sector_num * 512, - buf, n * 512); -diff --git a/block/qcow2.c b/block/qcow2.c -index 3376901..7f7282e 100644 ---- a/block/qcow2.c -+++ b/block/qcow2.c -@@ -648,13 +648,11 @@ static int coroutine_fn qcow2_co_is_allocated(BlockDriverState *bs, - int ret; - - *pnum = nb_sectors; -- /* FIXME We can get errors here, but the bdrv_co_is_allocated interface -- * can't pass them on today */ - qemu_co_mutex_lock(&s->lock); - ret = qcow2_get_cluster_offset(bs, sector_num << 9, pnum, &cluster_offset); - qemu_co_mutex_unlock(&s->lock); - if (ret < 0) { -- *pnum = 0; -+ return ret; - } - - return (cluster_offset != 0) || (ret == QCOW2_CLUSTER_ZERO); -diff --git a/block/stream.c b/block/stream.c -index 7fe9e48..4e8d177 100644 ---- a/block/stream.c -+++ b/block/stream.c -@@ -120,7 +120,7 @@ wait: - if (ret == 1) { - /* Allocated in the top, no need to copy. */ - copy = false; -- } else { -+ } else if (ret >= 0) { - /* Copy if allocated in the intermediate images. Limit to the - * known-unallocated area [sector_num, sector_num+n). */ - ret = bdrv_co_is_allocated_above(bs->backing_hd, base, -diff --git a/qemu-img.c b/qemu-img.c -index b9a848d..b01998b 100644 ---- a/qemu-img.c -+++ b/qemu-img.c -@@ -1485,8 +1485,15 @@ static int img_convert(int argc, char **argv) - are present in both the output's and input's base images (no - need to copy them). */ - if (out_baseimg) { -- if (!bdrv_is_allocated(bs[bs_i], sector_num - bs_offset, -- n, &n1)) { -+ ret = bdrv_is_allocated(bs[bs_i], sector_num - bs_offset, -+ n, &n1); -+ if (ret < 0) { -+ error_report("error while reading metadata for sector " -+ "%" PRId64 ": %s", -+ sector_num - bs_offset, strerror(-ret)); -+ goto out; -+ } -+ if (!ret) { - sector_num += n1; - continue; - } -@@ -2076,6 +2083,11 @@ static int img_rebase(int argc, char **argv) - - /* If the cluster is allocated, we don't need to take action */ - ret = bdrv_is_allocated(bs, sector, n, &n); -+ if (ret < 0) { -+ error_report("error while reading image metadata: %s", -+ strerror(-ret)); -+ goto out; -+ } - if (ret) { - continue; - } -diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c -index ffbcf31..ffe48ad 100644 ---- a/qemu-io-cmds.c -+++ b/qemu-io-cmds.c -@@ -1829,6 +1829,10 @@ static int alloc_f(BlockDriverState *bs, int argc, char **argv) - sector_num = offset >> 9; - while (remaining) { - ret = bdrv_is_allocated(bs, sector_num, remaining, &num); -+ if (ret < 0) { -+ printf("is_allocated failed: %s\n", strerror(-ret)); -+ return 0; -+ } - sector_num += num; - remaining -= num; - if (ret) { diff --git a/0113-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch b/0013-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch similarity index 100% rename from 0113-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch rename to 0013-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch diff --git a/0014-target-i386-fix-disassembly-with-PAE-1-PG-0.patch b/0014-target-i386-fix-disassembly-with-PAE-1-PG-0.patch deleted file mode 100644 index 1cbc2cd..0000000 --- a/0014-target-i386-fix-disassembly-with-PAE-1-PG-0.patch +++ /dev/null @@ -1,76 +0,0 @@ -From f9fd82ee939d6ee5bff126b125020021e18ce330 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 30 Aug 2013 11:58:45 +0200 -Subject: [PATCH] target-i386: fix disassembly with PAE=1, PG=0 - -CR4.PAE=1 will not enable paging if CR0.PG=0, but the "if" chain -in x86_cpu_get_phys_page_debug says otherwise. Check CR0.PG -before everything else. - -Fixes "-d in_asm" for a code section at the beginning of OVMF. - -Signed-off-by: Paolo Bonzini -Signed-off-by: Richard Henderson -Reviewed-by: Max Filippov -(cherry picked from commit f2f8560c7a5303065a2a3207ec475dfb3a622a0e) - -Signed-off-by: Michael Roth ---- - target-i386/helper.c | 34 ++++++++++++++++------------------ - 1 file changed, 16 insertions(+), 18 deletions(-) - -diff --git a/target-i386/helper.c b/target-i386/helper.c -index bf3e2ac..7f74e5d 100644 ---- a/target-i386/helper.c -+++ b/target-i386/helper.c -@@ -894,7 +894,10 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) - uint32_t page_offset; - int page_size; - -- if (env->cr[4] & CR4_PAE_MASK) { -+ if (!(env->cr[0] & CR0_PG_MASK)) { -+ pte = addr & env->a20_mask; -+ page_size = 4096; -+ } else if (env->cr[4] & CR4_PAE_MASK) { - target_ulong pdpe_addr; - uint64_t pde, pdpe; - -@@ -952,26 +955,21 @@ hwaddr x86_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) - } else { - uint32_t pde; - -- if (!(env->cr[0] & CR0_PG_MASK)) { -- pte = addr; -- page_size = 4096; -+ /* page directory entry */ -+ pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & env->a20_mask; -+ pde = ldl_phys(pde_addr); -+ if (!(pde & PG_PRESENT_MASK)) -+ return -1; -+ if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { -+ pte = pde & ~0x003ff000; /* align to 4MB */ -+ page_size = 4096 * 1024; - } else { - /* page directory entry */ -- pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & env->a20_mask; -- pde = ldl_phys(pde_addr); -- if (!(pde & PG_PRESENT_MASK)) -+ pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & env->a20_mask; -+ pte = ldl_phys(pte_addr); -+ if (!(pte & PG_PRESENT_MASK)) - return -1; -- if ((pde & PG_PSE_MASK) && (env->cr[4] & CR4_PSE_MASK)) { -- pte = pde & ~0x003ff000; /* align to 4MB */ -- page_size = 4096 * 1024; -- } else { -- /* page directory entry */ -- pte_addr = ((pde & ~0xfff) + ((addr >> 10) & 0xffc)) & env->a20_mask; -- pte = ldl_phys(pte_addr); -- if (!(pte & PG_PRESENT_MASK)) -- return -1; -- page_size = 4096; -- } -+ page_size = 4096; - } - pte = pte & env->a20_mask; - } diff --git a/0114-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch b/0014-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch similarity index 100% rename from 0114-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch rename to 0014-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch diff --git a/0015-adlib-sort-offsets-in-portio-registration.patch b/0015-adlib-sort-offsets-in-portio-registration.patch deleted file mode 100644 index a7b6816..0000000 --- a/0015-adlib-sort-offsets-in-portio-registration.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 2ffbe03e8bc8f330581e31537190949a9aba80c3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= -Date: Wed, 14 Aug 2013 11:49:04 +0200 -Subject: [PATCH] adlib: sort offsets in portio registration -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This fixes the following assert when -device adlib is used: -ioport.c:240: portio_list_add: Assertion `pio->offset >= off_last' failed. - -Signed-off-by: Hervé Poussineau -Signed-off-by: Michael Tokarev -(cherry picked from commit 2b21fb57af305f17841d79e7e2e02ad1aec3f5ca) - -Signed-off-by: Michael Roth ---- - hw/audio/adlib.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c -index 0421d47..db4a953 100644 ---- a/hw/audio/adlib.c -+++ b/hw/audio/adlib.c -@@ -284,9 +284,9 @@ static void Adlib_fini (AdlibState *s) - } - - static MemoryRegionPortio adlib_portio_list[] = { -- { 0x388, 4, 1, .read = adlib_read, .write = adlib_write, }, - { 0, 4, 1, .read = adlib_read, .write = adlib_write, }, - { 0, 2, 1, .read = adlib_read, .write = adlib_write, }, -+ { 0x388, 4, 1, .read = adlib_read, .write = adlib_write, }, - PORTIO_END_OF_LIST(), - }; - diff --git a/0115-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch b/0015-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch similarity index 100% rename from 0115-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch rename to 0015-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch diff --git a/0016-exec-fix-writing-to-MMIO-area-with-non-power-of-two-.patch b/0016-exec-fix-writing-to-MMIO-area-with-non-power-of-two-.patch deleted file mode 100644 index 4e60171..0000000 --- a/0016-exec-fix-writing-to-MMIO-area-with-non-power-of-two-.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 9fab8e1fe15014a4bd147eeedd2491bcfbba4e59 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Mon, 29 Jul 2013 14:27:39 +0200 -Subject: [PATCH] exec: fix writing to MMIO area with non-power-of-two length - -The problem is introduced by commit 2332616 (exec: Support 64-bit -operations in address_space_rw, 2013-07-08). Before that commit, -memory_access_size would only return 1/2/4. - -Since alignment is already handled above, reduce l to the largest -power of two that is smaller than l. - -Cc: qemu-stable@nongnu.org -Reported-by: Oleksii Shevchuk -Tested-by: Oleksii Shevchuk -Signed-off-by: Paolo Bonzini -(cherry picked from commit 098178f2749a63fbbb1a626dcc7d939d5cb2bde7) - -Signed-off-by: Michael Roth ---- - exec.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/exec.c b/exec.c -index 3ca9381..394f7e2 100644 ---- a/exec.c -+++ b/exec.c -@@ -1928,6 +1928,9 @@ static int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr) - if (l > access_size_max) { - l = access_size_max; - } -+ if (l & (l - 1)) { -+ l = 1 << (qemu_fls(l) - 1); -+ } - - return l; - } diff --git a/0116-virtio-pci-add-device_unplugged-callback.patch b/0016-virtio-pci-add-device_unplugged-callback.patch similarity index 100% rename from 0116-virtio-pci-add-device_unplugged-callback.patch rename to 0016-virtio-pci-add-device_unplugged-callback.patch diff --git a/0017-virtio_pci-fix-level-interrupts-with-irqfd.patch b/0017-virtio_pci-fix-level-interrupts-with-irqfd.patch deleted file mode 100644 index 33e4853..0000000 --- a/0017-virtio_pci-fix-level-interrupts-with-irqfd.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 1cd7138d492304a76f3b8ae89fc61e05b18205a7 Mon Sep 17 00:00:00 2001 -From: "Michael S. Tsirkin" -Date: Sun, 1 Sep 2013 11:03:45 +0300 -Subject: [PATCH] virtio_pci: fix level interrupts with irqfd - -commit 62c96360ae7f2c7a8b029277fbb7cb082fdef7fd - virtio-pci: fix level interrupts -only helps systems without irqfd: on systems with irqfd support we -passed in flag requesting irqfd even when msix is disabled. - -As a result, for level interrupts we didn't install an fd handler so -unmasking an fd had no effect. - -Fix this up. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 23fe2b3f9e7df8da53ac1bc32c6875254911d7f4) - -Signed-off-by: Michael Roth ---- - hw/virtio/virtio-pci.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c -index d37037e..41b96ce 100644 ---- a/hw/virtio/virtio-pci.c -+++ b/hw/virtio/virtio-pci.c -@@ -799,8 +799,7 @@ static int virtio_pci_set_guest_notifiers(DeviceState *d, int nvqs, bool assign) - break; - } - -- r = virtio_pci_set_guest_notifier(d, n, assign, -- kvm_msi_via_irqfd_enabled()); -+ r = virtio_pci_set_guest_notifier(d, n, assign, with_irqfd); - if (r < 0) { - goto assign_error; - } diff --git a/0018-exec-always-use-MADV_DONTFORK.patch b/0018-exec-always-use-MADV_DONTFORK.patch deleted file mode 100644 index 95df5f7..0000000 --- a/0018-exec-always-use-MADV_DONTFORK.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 57ea2d21ae1863fd4002b2aea8ea8db8e206d464 Mon Sep 17 00:00:00 2001 -From: Andrea Arcangeli -Date: Thu, 25 Jul 2013 12:11:15 +0200 -Subject: [PATCH] exec: always use MADV_DONTFORK - -MADV_DONTFORK prevents fork to fail with -ENOMEM if the default -overcommit heuristics decides there's too much anonymous virtual -memory allocated. If the KVM secondary MMU is synchronized with MMU -notifiers or not, doesn't make a difference in that regard. - -Secondly it's always more efficient to avoid copying the guest -physical address space in the fork child (so we avoid to mark all the -guest memory readonly in the parent and so we skip the establishment -and teardown of lots of pagetables in the child). - -In the common case we can ignore the error if MADV_DONTFORK is not -available. Leave a second invocation that errors out in the KVM path -if MMU notifiers are missing and KVM is enabled, to abort in such -case. - -Signed-off-by: Andrea Arcangeli -Tested-By: Benoit Canet -Acked-by: Paolo Bonzini -Signed-off-by: Gleb Natapov -(cherry picked from commit 3e469dbfe413c25d48321c3a19ddfae0727dc6e5) - -Signed-off-by: Michael Roth ---- - exec.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/exec.c b/exec.c -index 394f7e2..2ea8f04 100644 ---- a/exec.c -+++ b/exec.c -@@ -1172,6 +1172,7 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host, - - qemu_ram_setup_dump(new_block->host, size); - qemu_madvise(new_block->host, size, QEMU_MADV_HUGEPAGE); -+ qemu_madvise(new_block->host, size, QEMU_MADV_DONTFORK); - - if (kvm_enabled()) - kvm_setup_guest_memory(new_block->host, size); diff --git a/0019-xhci-reset-port-when-disabling-slot.patch b/0019-xhci-reset-port-when-disabling-slot.patch deleted file mode 100644 index a269bda..0000000 --- a/0019-xhci-reset-port-when-disabling-slot.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 9dbfbb89b204e098f283aca310e4d6f6651d88f4 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Wed, 28 Aug 2013 11:47:09 +0200 -Subject: [PATCH] xhci: reset port when disabling slot - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann -(cherry picked from commit 5c67dd7b4884979a2613a4702ac1ab68b0e6a16e) - -Signed-off-by: Michael Roth ---- - hw/usb/hcd-xhci.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c -index 3c0ba8e..a6f55a1 100644 ---- a/hw/usb/hcd-xhci.c -+++ b/hw/usb/hcd-xhci.c -@@ -2076,6 +2076,7 @@ static TRBCCode xhci_disable_slot(XHCIState *xhci, unsigned int slotid) - - xhci->slots[slotid-1].enabled = 0; - xhci->slots[slotid-1].addressed = 0; -+ xhci->slots[slotid-1].uport = NULL; - return CC_SUCCESS; - } - diff --git a/0020-usb-parallelize-usb3-streams.patch b/0020-usb-parallelize-usb3-streams.patch deleted file mode 100644 index b1b63f4..0000000 --- a/0020-usb-parallelize-usb3-streams.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 96b14d0db19b2b80ab3dc35d522671da82101e72 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Tue, 27 Aug 2013 15:25:24 +0200 -Subject: [PATCH] usb: parallelize usb3 streams - -usb3 bulk endpoints with streams are implicitly pipelined now, -so the requests will actually be processed in parallel. Also -allow them to complete out-of-order. - -Fixes stalls in the uas driver. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann -(cherry picked from commit c96c41ed0d38d68a6c8b6f84751afebafeae31be) - -Signed-off-by: Michael Roth ---- - hw/usb/core.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/hw/usb/core.c b/hw/usb/core.c -index 05948ca..31960c2 100644 ---- a/hw/usb/core.c -+++ b/hw/usb/core.c -@@ -403,7 +403,7 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p) - p->ep->halted = false; - } - -- if (QTAILQ_EMPTY(&p->ep->queue) || p->ep->pipeline) { -+ if (QTAILQ_EMPTY(&p->ep->queue) || p->ep->pipeline || p->stream) { - usb_process_one(p); - if (p->status == USB_RET_ASYNC) { - /* hcd drivers cannot handle async for isoc */ -@@ -420,7 +420,8 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p) - * When pipelining is enabled usb-devices must always return async, - * otherwise packets can complete out of order! - */ -- assert(!p->ep->pipeline || QTAILQ_EMPTY(&p->ep->queue)); -+ assert(p->stream || !p->ep->pipeline || -+ QTAILQ_EMPTY(&p->ep->queue)); - if (p->status != USB_RET_NAK) { - usb_packet_set_state(p, USB_PACKET_COMPLETE); - } -@@ -434,7 +435,7 @@ void usb_packet_complete_one(USBDevice *dev, USBPacket *p) - { - USBEndpoint *ep = p->ep; - -- assert(QTAILQ_FIRST(&ep->queue) == p); -+ assert(p->stream || QTAILQ_FIRST(&ep->queue) == p); - assert(p->status != USB_RET_ASYNC && p->status != USB_RET_NAK); - - if (p->status != USB_RET_SUCCESS || diff --git a/0021-w32-Fix-access-to-host-devices-regression.patch b/0021-w32-Fix-access-to-host-devices-regression.patch deleted file mode 100644 index 9a0efb8..0000000 --- a/0021-w32-Fix-access-to-host-devices-regression.patch +++ /dev/null @@ -1,86 +0,0 @@ -From e8601a4e3102321d054ce3d641c03ebcd0519357 Mon Sep 17 00:00:00 2001 -From: Stefan Weil -Date: Sun, 1 Sep 2013 22:59:25 +0200 -Subject: [PATCH] w32: Fix access to host devices (regression) - -QEMU failed to open host devices like \\.\PhysicalDrive0 (first hard disk) -since some time (commit 8a79380b8ef1b02d2abd705dd026a18863b09020?). - -Those devices use hdev_open which did not use the latest API for options. -This resulted in a fatal runtime error: - - Block protocol 'host_device' doesn't support the option 'filename' - -Duplicate code from raw_open to fix this. - -Cc: qemu-stable@nongnu.org -Reported-by: David Brenner -Signed-off-by: Stefan Weil -Reviewed-by: Kevin Wolf -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 68dc036488dfea170627a55e6ee3dfd7f2c2063e) - -Signed-off-by: Michael Roth ---- - block/raw-win32.c | 36 +++++++++++++++++++++++++++++------- - 1 file changed, 29 insertions(+), 7 deletions(-) - -diff --git a/block/raw-win32.c b/block/raw-win32.c -index 9b5b2af..d2d2d9f 100644 ---- a/block/raw-win32.c -+++ b/block/raw-win32.c -@@ -535,13 +535,29 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags) - { - BDRVRawState *s = bs->opaque; - int access_flags, create_flags; -+ int ret = 0; - DWORD overlapped; - char device_name[64]; -- const char *filename = qdict_get_str(options, "filename"); -+ -+ Error *local_err = NULL; -+ const char *filename; -+ -+ QemuOpts *opts = qemu_opts_create_nofail(&raw_runtime_opts); -+ qemu_opts_absorb_qdict(opts, options, &local_err); -+ if (error_is_set(&local_err)) { -+ qerror_report_err(local_err); -+ error_free(local_err); -+ ret = -EINVAL; -+ goto done; -+ } -+ -+ filename = qemu_opt_get(opts, "filename"); - - if (strstart(filename, "/dev/cdrom", NULL)) { -- if (find_cdrom(device_name, sizeof(device_name)) < 0) -- return -ENOENT; -+ if (find_cdrom(device_name, sizeof(device_name)) < 0) { -+ ret = -ENOENT; -+ goto done; -+ } - filename = device_name; - } else { - /* transform drive letters into device name */ -@@ -564,11 +580,17 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags) - if (s->hfile == INVALID_HANDLE_VALUE) { - int err = GetLastError(); - -- if (err == ERROR_ACCESS_DENIED) -- return -EACCES; -- return -1; -+ if (err == ERROR_ACCESS_DENIED) { -+ ret = -EACCES; -+ } else { -+ ret = -1; -+ } -+ goto done; - } -- return 0; -+ -+done: -+ qemu_opts_del(opts); -+ return ret; - } - - static BlockDriver bdrv_host_device = { diff --git a/0022-memory-Provide-separate-handling-of-unassigned-io-po.patch b/0022-memory-Provide-separate-handling-of-unassigned-io-po.patch deleted file mode 100644 index ff5c789..0000000 --- a/0022-memory-Provide-separate-handling-of-unassigned-io-po.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 7ab1044eb1ac2cbc7e65769edf44ced92b85b038 Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Mon, 2 Sep 2013 18:43:30 +0200 -Subject: [PATCH] memory: Provide separate handling of unassigned io ports - accesses - -Accesses to unassigned io ports shall return -1 on read and be ignored -on write. Ensure these properties via dedicated ops, decoupling us from -the memory core's handling of unassigned accesses. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Jan Kiszka -Signed-off-by: Paolo Bonzini -(cherry picked from commit 3bb28b7208b349e7a1b326e3c6ef9efac1d462bf) - -Signed-off-by: Michael Roth ---- - exec.c | 3 ++- - include/exec/ioport.h | 4 ++++ - ioport.c | 16 ++++++++++++++++ - 3 files changed, 22 insertions(+), 1 deletion(-) - -diff --git a/exec.c b/exec.c -index 2ea8f04..08eecb3 100644 ---- a/exec.c -+++ b/exec.c -@@ -1821,7 +1821,8 @@ static void memory_map_init(void) - address_space_init(&address_space_memory, system_memory, "memory"); - - system_io = g_malloc(sizeof(*system_io)); -- memory_region_init(system_io, NULL, "io", 65536); -+ memory_region_init_io(system_io, NULL, &unassigned_io_ops, NULL, "io", -+ 65536); - address_space_init(&address_space_io, system_io, "I/O"); - - memory_listener_register(&core_memory_listener, &address_space_memory); -diff --git a/include/exec/ioport.h b/include/exec/ioport.h -index bdd4e96..b3848be 100644 ---- a/include/exec/ioport.h -+++ b/include/exec/ioport.h -@@ -45,6 +45,10 @@ typedef struct MemoryRegionPortio { - - #define PORTIO_END_OF_LIST() { } - -+#ifndef CONFIG_USER_ONLY -+extern const MemoryRegionOps unassigned_io_ops; -+#endif -+ - void cpu_outb(pio_addr_t addr, uint8_t val); - void cpu_outw(pio_addr_t addr, uint16_t val); - void cpu_outl(pio_addr_t addr, uint32_t val); -diff --git a/ioport.c b/ioport.c -index 79b7f1a..707cce8 100644 ---- a/ioport.c -+++ b/ioport.c -@@ -44,6 +44,22 @@ typedef struct MemoryRegionPortioList { - MemoryRegionPortio ports[]; - } MemoryRegionPortioList; - -+static uint64_t unassigned_io_read(void *opaque, hwaddr addr, unsigned size) -+{ -+ return -1ULL; -+} -+ -+static void unassigned_io_write(void *opaque, hwaddr addr, uint64_t val, -+ unsigned size) -+{ -+} -+ -+const MemoryRegionOps unassigned_io_ops = { -+ .read = unassigned_io_read, -+ .write = unassigned_io_write, -+ .endianness = DEVICE_NATIVE_ENDIAN, -+}; -+ - void cpu_outb(pio_addr_t addr, uint8_t val) - { - LOG_IOPORT("outb: %04"FMT_pioaddr" %02"PRIx8"\n", addr, val); diff --git a/0023-Revert-memory-Return-1-again-on-reads-from-unsigned-.patch b/0023-Revert-memory-Return-1-again-on-reads-from-unsigned-.patch deleted file mode 100644 index 3086e82..0000000 --- a/0023-Revert-memory-Return-1-again-on-reads-from-unsigned-.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 2a93d3dd32386c3522cfa2ee60c9e06a298d1f52 Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Mon, 2 Sep 2013 18:43:31 +0200 -Subject: [PATCH] Revert "memory: Return -1 again on reads from unsigned - regions" - -This reverts commit 9b8c69243585a32d14b9bb9fcd52c37b0b5a1b71. - -The commit was wrong: We only return -1 on invalid accesses, not on -valid but unbacked ones. This broke various corner cases. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Jan Kiszka -Signed-off-by: Paolo Bonzini -(cherry picked from commit 68a7439a150d6b4da99082ab454b9328b151bc25) - -Signed-off-by: Michael Roth ---- - memory.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/memory.c b/memory.c -index 886f838..5a10fd0 100644 ---- a/memory.c -+++ b/memory.c -@@ -872,7 +872,7 @@ static uint64_t unassigned_mem_read(void *opaque, hwaddr addr, - if (current_cpu != NULL) { - cpu_unassigned_access(current_cpu, addr, false, false, 0, size); - } -- return -1ULL; -+ return 0; - } - - static void unassigned_mem_write(void *opaque, hwaddr addr, diff --git a/0024-exec-check-offset_within_address_space-for-register-.patch b/0024-exec-check-offset_within_address_space-for-register-.patch deleted file mode 100644 index 590c09b..0000000 --- a/0024-exec-check-offset_within_address_space-for-register-.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 1110014801d368388bca2ed7c28aa695560c4991 Mon Sep 17 00:00:00 2001 -From: Hu Tao -Date: Thu, 29 Aug 2013 18:21:16 +0800 -Subject: [PATCH] exec: check offset_within_address_space for register subpage -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If offset_within_address_space falls in a page, then we register a -subpage. So check offset_within_address_space rather than -offset_within_region. - -Cc: qemu-stable@nongnu.org -Cc: Paolo Bonzini -Cc: Richard Henderson -Cc: "Andreas Färber" -Cc: Peter Maydell -Cc: Blue Swirl -Signed-off-by: Hu Tao -Signed-off-by: Paolo Bonzini -(cherry picked from commit 88266249701032211c1d7449460d063fbc01bf12) - -Signed-off-by: Michael Roth ---- - exec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/exec.c b/exec.c -index 08eecb3..f6674e5 100644 ---- a/exec.c -+++ b/exec.c -@@ -869,7 +869,7 @@ static void mem_add(MemoryListener *listener, MemoryRegionSection *section) - now = remain; - if (int128_lt(remain.size, page_size)) { - register_subpage(d, &now); -- } else if (remain.offset_within_region & ~TARGET_PAGE_MASK) { -+ } else if (remain.offset_within_address_space & ~TARGET_PAGE_MASK) { - now.size = page_size; - register_subpage(d, &now); - } else { diff --git a/0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch b/0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch deleted file mode 100644 index b96e6e5..0000000 --- a/0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a1991d05d37ac9054d772b32d8fac70bc31be81a Mon Sep 17 00:00:00 2001 -From: Aurelien Jarno -Date: Mon, 2 Sep 2013 13:10:34 +0200 -Subject: [PATCH] ne2000: mark I/O as LITTLE_ENDIAN - -Now that the memory subsystem is propagating the endianness correctly, -the ne2000 device should have its I/O ports marked as LITTLE_ENDIAN, as -PCI devices are little endian. - -This makes the ne2000 NIC to work again on PowerPC. - -Cc: qemu-stable@nongnu.org -Cc: Stefan Hajnoczi -Signed-off-by: Aurelien Jarno -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 45d883dcf208160e2db308d1b368beb74f37dc7e) - -Signed-off-by: Michael Roth ---- - hw/net/ne2000.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c -index 31afd28..c961258 100644 ---- a/hw/net/ne2000.c -+++ b/hw/net/ne2000.c -@@ -693,7 +693,7 @@ static void ne2000_write(void *opaque, hwaddr addr, - static const MemoryRegionOps ne2000_ops = { - .read = ne2000_read, - .write = ne2000_write, -- .endianness = DEVICE_NATIVE_ENDIAN, -+ .endianness = DEVICE_LITTLE_ENDIAN, - }; - - /***********************************************************/ diff --git a/0026-ehci-save-device-pointer-in-EHCIState.patch b/0026-ehci-save-device-pointer-in-EHCIState.patch deleted file mode 100644 index 81eae5c..0000000 --- a/0026-ehci-save-device-pointer-in-EHCIState.patch +++ /dev/null @@ -1,67 +0,0 @@ -From b6d163fdd8131285a01fe46e6afdba727e4df9ca Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Mon, 9 Sep 2013 10:18:17 +0200 -Subject: [PATCH] ehci: save device pointer in EHCIState - -We'll need a pointer to the actual pci/sysbus device, -stick a pointer to it into the EHCIState struct. - -https://bugzilla.redhat.com/show_bug.cgi?id=1005495 - -Signed-off-by: Gerd Hoffmann -(cherry picked from commit adbecc89731cf3e0ae656d50ea9fa58c589c4bdc) - -Signed-off-by: Michael Roth ---- - hw/usb/hcd-ehci.c | 7 +++---- - hw/usb/hcd-ehci.h | 1 + - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c -index 010a0d0..e9fb20c 100644 ---- a/hw/usb/hcd-ehci.c -+++ b/hw/usb/hcd-ehci.c -@@ -1241,13 +1241,11 @@ static int ehci_init_transfer(EHCIPacket *p) - { - uint32_t cpage, offset, bytes, plen; - dma_addr_t page; -- USBBus *bus = &p->queue->ehci->bus; -- BusState *qbus = BUS(bus); - - cpage = get_field(p->qtd.token, QTD_TOKEN_CPAGE); - bytes = get_field(p->qtd.token, QTD_TOKEN_TBYTES); - offset = p->qtd.bufptr[0] & ~QTD_BUFPTR_MASK; -- qemu_sglist_init(&p->sgl, qbus->parent, 5, p->queue->ehci->as); -+ qemu_sglist_init(&p->sgl, p->queue->ehci->device, 5, p->queue->ehci->as); - - while (bytes > 0) { - if (cpage > 4) { -@@ -1486,7 +1484,7 @@ static int ehci_process_itd(EHCIState *ehci, - return -1; - } - -- qemu_sglist_init(&ehci->isgl, DEVICE(ehci), 2, ehci->as); -+ qemu_sglist_init(&ehci->isgl, ehci->device, 2, ehci->as); - if (off + len > 4096) { - /* transfer crosses page border */ - uint32_t len2 = off + len - 4096; -@@ -2529,6 +2527,7 @@ void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error **errp) - - s->frame_timer = qemu_new_timer_ns(vm_clock, ehci_frame_timer, s); - s->async_bh = qemu_bh_new(ehci_frame_timer, s); -+ s->device = dev; - - qemu_register_reset(ehci_reset, s); - qemu_add_vm_change_state_handler(usb_ehci_vm_state_change, s); -diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h -index 15a28e8..065c9fa 100644 ---- a/hw/usb/hcd-ehci.h -+++ b/hw/usb/hcd-ehci.h -@@ -255,6 +255,7 @@ typedef QTAILQ_HEAD(EHCIQueueHead, EHCIQueue) EHCIQueueHead; - - struct EHCIState { - USBBus bus; -+ DeviceState *device; - qemu_irq irq; - MemoryRegion mem; - AddressSpace *as; diff --git a/0027-qxl-fix-local-renderer.patch b/0027-qxl-fix-local-renderer.patch deleted file mode 100644 index fb9eeaf..0000000 --- a/0027-qxl-fix-local-renderer.patch +++ /dev/null @@ -1,67 +0,0 @@ -From dc0973b5883df7d822b285119691ade8c84dda9c Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Thu, 5 Sep 2013 21:57:19 +0200 -Subject: [PATCH] qxl: fix local renderer - -The local spice renderer assumes the primary surface is located at the -start of the "ram" bar. This used to be a requirement in qxl hardware -revision 1. In revision 2+ this is relaxed. Nevertheless guest drivers -continued to use the traditional location, for historical and backward -compatibility reasons. The qxl kms driver doesn't though as it depends -on qxl revision 4+ anyway. - -Result is that local rendering is hosed for recent linux guests, you'll -get pixel garbage with non-spice ui (gtk, sdl, vnc) and when doing -screendumps. Fix that by doing a proper mapping of the guest-specified -memory location. - -https://bugzilla.redhat.com/show_bug.cgi?id=948717 - -Signed-off-by: Gerd Hoffmann -(cherry picked from commit c58c7b959b93b864a27fd6b3646ee1465ab8832b) - -Signed-off-by: Michael Roth ---- - hw/display/qxl-render.c | 15 ++++++++++----- - 1 file changed, 10 insertions(+), 5 deletions(-) - -diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c -index 269b1a7..d34b0c4 100644 ---- a/hw/display/qxl-render.c -+++ b/hw/display/qxl-render.c -@@ -31,10 +31,6 @@ static void qxl_blit(PCIQXLDevice *qxl, QXLRect *rect) - if (is_buffer_shared(surface)) { - return; - } -- if (!qxl->guest_primary.data) { -- trace_qxl_render_blit_guest_primary_initialized(); -- qxl->guest_primary.data = memory_region_get_ram_ptr(&qxl->vga.vram); -- } - trace_qxl_render_blit(qxl->guest_primary.qxl_stride, - rect->left, rect->right, rect->top, rect->bottom); - src = qxl->guest_primary.data; -@@ -104,7 +100,12 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl) - - if (qxl->guest_primary.resized) { - qxl->guest_primary.resized = 0; -- qxl->guest_primary.data = memory_region_get_ram_ptr(&qxl->vga.vram); -+ qxl->guest_primary.data = qxl_phys2virt(qxl, -+ qxl->guest_primary.surface.mem, -+ MEMSLOT_GROUP_GUEST); -+ if (!qxl->guest_primary.data) { -+ return; -+ } - qxl_set_rect_to_surface(qxl, &qxl->dirty[0]); - qxl->num_dirty_rects = 1; - trace_qxl_render_guest_primary_resized( -@@ -128,6 +129,10 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl) - } - dpy_gfx_replace_surface(vga->con, surface); - } -+ -+ if (!qxl->guest_primary.data) { -+ return; -+ } - for (i = 0; i < qxl->num_dirty_rects; i++) { - if (qemu_spice_rect_is_empty(qxl->dirty+i)) { - break; diff --git a/0028-pc-Initializing-ram_memory-under-Xen.patch b/0028-pc-Initializing-ram_memory-under-Xen.patch deleted file mode 100644 index 4d8c0b7..0000000 --- a/0028-pc-Initializing-ram_memory-under-Xen.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 755ec4ca0f92188458ad7ca549a75161cbdcf6ff Mon Sep 17 00:00:00 2001 -From: Anthony PERARD -Date: Mon, 9 Sep 2013 16:15:52 +0000 -Subject: [PATCH] pc: Initializing ram_memory under Xen. - -Signed-off-by: Anthony PERARD -Signed-off-by: Stefano Stabellini -Acked-by: Michael S. Tsirkin -CC: qemu-stable@nongnu.org -(cherry picked from commit 04d7bad8a4fb23e6d9af9d06ce3ddc28a251d94d) - -Signed-off-by: Michael Roth ---- - hw/i386/pc_piix.c | 2 +- - include/hw/xen/xen.h | 4 +--- - xen-all.c | 7 ++++--- - xen-stub.c | 2 +- - 4 files changed, 7 insertions(+), 8 deletions(-) - -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 6e1e654..3df2ff9 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -93,7 +93,7 @@ static void pc_init1(MemoryRegion *system_memory, - FWCfgState *fw_cfg = NULL; - PcGuestInfo *guest_info; - -- if (xen_enabled() && xen_hvm_init() != 0) { -+ if (xen_enabled() && xen_hvm_init(&ram_memory) != 0) { - fprintf(stderr, "xen hardware virtual machine initialisation failed\n"); - exit(1); - } -diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h -index 6d42dd1..e1f88bf 100644 ---- a/include/hw/xen/xen.h -+++ b/include/hw/xen/xen.h -@@ -37,17 +37,15 @@ void xen_cmos_set_s3_resume(void *opaque, int irq, int level); - qemu_irq *xen_interrupt_controller_init(void); - - int xen_init(void); --int xen_hvm_init(void); -+int xen_hvm_init(MemoryRegion **ram_memory); - void xenstore_store_pv_console_info(int i, struct CharDriverState *chr); - - #if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY) --struct MemoryRegion; - void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, - struct MemoryRegion *mr); - void xen_modified_memory(ram_addr_t start, ram_addr_t length); - #endif - --struct MemoryRegion; - void xen_register_framebuffer(struct MemoryRegion *mr); - - #if defined(CONFIG_XEN) && CONFIG_XEN_CTRL_INTERFACE_VERSION < 400 -diff --git a/xen-all.c b/xen-all.c -index 21246e0..e1d0694 100644 ---- a/xen-all.c -+++ b/xen-all.c -@@ -154,7 +154,7 @@ qemu_irq *xen_interrupt_controller_init(void) - - /* Memory Ops */ - --static void xen_ram_init(ram_addr_t ram_size) -+static void xen_ram_init(ram_addr_t ram_size, MemoryRegion **ram_memory_p) - { - MemoryRegion *sysmem = get_system_memory(); - ram_addr_t below_4g_mem_size, above_4g_mem_size = 0; -@@ -168,6 +168,7 @@ static void xen_ram_init(ram_addr_t ram_size) - block_len += HVM_BELOW_4G_MMIO_LENGTH; - } - memory_region_init_ram(&ram_memory, NULL, "xen.ram", block_len); -+ *ram_memory_p = &ram_memory; - vmstate_register_ram_global(&ram_memory); - - if (ram_size >= HVM_BELOW_4G_RAM_END) { -@@ -1059,7 +1060,7 @@ static void xen_read_physmap(XenIOState *state) - free(entries); - } - --int xen_hvm_init(void) -+int xen_hvm_init(MemoryRegion **ram_memory) - { - int i, rc; - unsigned long ioreq_pfn; -@@ -1134,7 +1135,7 @@ int xen_hvm_init(void) - - /* Init RAM management */ - xen_map_cache_init(xen_phys_offset_to_gaddr, state); -- xen_ram_init(ram_size); -+ xen_ram_init(ram_size, ram_memory); - - qemu_add_vm_change_state_handler(xen_hvm_change_state_handler, state); - -diff --git a/xen-stub.c b/xen-stub.c -index 47c8e73..ad189a6 100644 ---- a/xen-stub.c -+++ b/xen-stub.c -@@ -64,7 +64,7 @@ void xen_modified_memory(ram_addr_t start, ram_addr_t length) - { - } - --int xen_hvm_init(void) -+int xen_hvm_init(MemoryRegion **ram_memory) - { - return 0; - } diff --git a/0029-pc_q35-Initialize-Xen.patch b/0029-pc_q35-Initialize-Xen.patch deleted file mode 100644 index 23eb4e4..0000000 --- a/0029-pc_q35-Initialize-Xen.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 41900b0857df9bd33e465a6c72d7a3072dc448f4 Mon Sep 17 00:00:00 2001 -From: Anthony PERARD -Date: Mon, 9 Sep 2013 16:15:53 +0000 -Subject: [PATCH] pc_q35: Initialize Xen. - -Signed-off-by: Anthony PERARD -Signed-off-by: Stefano Stabellini -Acked-by: Michael S. Tsirkin -(cherry picked from commit 254c12825f93f405658ca3366cd34f8a8ad23511) - -Signed-off-by: Michael Roth ---- - hw/i386/pc_q35.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 10e770e..dd13130 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -81,6 +81,11 @@ static void pc_q35_init(QEMUMachineInitArgs *args) - DeviceState *icc_bridge; - PcGuestInfo *guest_info; - -+ if (xen_enabled() && xen_hvm_init(&ram_memory) != 0) { -+ fprintf(stderr, "xen hardware virtual machine initialisation failed\n"); -+ exit(1); -+ } -+ - icc_bridge = qdev_create(NULL, TYPE_ICC_BRIDGE); - object_property_add_child(qdev_get_machine(), "icc-bridge", - OBJECT(icc_bridge), NULL); diff --git a/0030-qapi-types.py-Fix-enum-struct-sizes-on-i686.patch b/0030-qapi-types.py-Fix-enum-struct-sizes-on-i686.patch deleted file mode 100644 index 17578b2..0000000 --- a/0030-qapi-types.py-Fix-enum-struct-sizes-on-i686.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 8b4b3a71fd35d67c5c30652a120c0a59dfab7182 Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Sat, 31 Aug 2013 18:36:17 -0400 -Subject: [PATCH] qapi-types.py: Fix enum struct sizes on i686 - -Unlike other list types, enum wasn't adding any padding, which caused -a mismatch between the generated struct size and GenericList struct -size. More details in a678e26cbe89f7a27cbce794c2c2784571ee9d21 - -This crashed qemu if calling qmp query-tpm-types for example, which -upsets libvirt capabilities probing. Reproducer on i686: - -(sleep 5; printf '{"execute":"qmp_capabilities"}\n{"execute":"query-tpm-types"}\n') | ./i386-softmmu/qemu-system-i386 -S -nodefaults -nographic -M none -qmp stdio - -https://bugs.launchpad.net/qemu/+bug/1219207 - -Cc: qemu-stable@nongnu.org -Signed-off-by: Cole Robinson -Reviewed-by: Eric Blake -Tested-by: Richard W.M. Jones -Signed-off-by: Luiz Capitulino -(cherry picked from commit 02dc4bf5684d3fb46786fab2ecff98214b1df9fe) - -Signed-off-by: Michael Roth ---- - scripts/qapi-types.py | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py -index 5ee46ea..5d31b06 100644 ---- a/scripts/qapi-types.py -+++ b/scripts/qapi-types.py -@@ -51,7 +51,10 @@ def generate_fwd_enum_struct(name, members): - return mcgen(''' - typedef struct %(name)sList - { -- %(name)s value; -+ union { -+ %(name)s value; -+ uint64_t padding; -+ }; - struct %(name)sList *next; - } %(name)sList; - ''', diff --git a/0031-pcnet-pci-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch b/0031-pcnet-pci-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch deleted file mode 100644 index 4e57504..0000000 --- a/0031-pcnet-pci-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 76f698948781a148d336ff9032159f6c7c9eccd2 Mon Sep 17 00:00:00 2001 -From: Aurelien Jarno -Date: Wed, 28 Aug 2013 14:17:39 +0200 -Subject: [PATCH] pcnet-pci: mark I/O and MMIO as LITTLE_ENDIAN - -Now that the memory subsystem is propagating the endianness correctly, -the pcnet-pci device should have its I/O ports and MMIO memory marked -as LITTLE_ENDIAN, as PCI devices are little endian. - -This makes the pcnet-pci NIC to work again on big endian MIPS Malta -(default NIC). - -Cc: qemu-stable@nongnu.org -Signed-off-by: Aurelien Jarno -Reviewed-by: Stefan Hajnoczi -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit a26405b350c0d31d5ef53f3b459aeb6eaaf50db0) - -Signed-off-by: Michael Roth ---- - hw/net/pcnet-pci.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c -index 2c2301c..23fc33c 100644 ---- a/hw/net/pcnet-pci.c -+++ b/hw/net/pcnet-pci.c -@@ -134,7 +134,7 @@ static void pcnet_ioport_write(void *opaque, hwaddr addr, - static const MemoryRegionOps pcnet_io_ops = { - .read = pcnet_ioport_read, - .write = pcnet_ioport_write, -- .endianness = DEVICE_NATIVE_ENDIAN, -+ .endianness = DEVICE_LITTLE_ENDIAN, - }; - - static void pcnet_mmio_writeb(void *opaque, hwaddr addr, uint32_t val) -@@ -256,7 +256,7 @@ static const MemoryRegionOps pcnet_mmio_ops = { - .read = { pcnet_mmio_readb, pcnet_mmio_readw, pcnet_mmio_readl }, - .write = { pcnet_mmio_writeb, pcnet_mmio_writew, pcnet_mmio_writel }, - }, -- .endianness = DEVICE_NATIVE_ENDIAN, -+ .endianness = DEVICE_LITTLE_ENDIAN, - }; - - static void pci_physical_memory_write(void *dma_opaque, hwaddr addr, diff --git a/0032-chardev-fix-pty_chr_timer.patch b/0032-chardev-fix-pty_chr_timer.patch deleted file mode 100644 index d318063..0000000 --- a/0032-chardev-fix-pty_chr_timer.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 4b5b4721464495fe76fe6e2e033cbb61dce78eef Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Thu, 22 Aug 2013 11:43:58 +0200 -Subject: [PATCH] chardev: fix pty_chr_timer - -pty_chr_timer first calls pty_chr_update_read_handler(), then clears -timer_tag (because it is a one-shot timer). This is the wrong order -though. pty_chr_update_read_handler might re-arm time timer, and the -new timer_tag gets overwitten in that case. - -This leads to crashes when unplugging a pty chardev: pty_chr_close -thinks no timer is running -> timer isn't canceled -> pty_chr_timer gets -called with stale CharDevState -> BOOM. - -This patch fixes the ordering. -Kill the pointless goto while being at it. - -https://bugzilla.redhat.com/show_bug.cgi?id=994414 - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann -(cherry picked from commit b0d768c35e08d2057b63e8e77e7a513c447199fa) - -Signed-off-by: Michael Roth ---- - qemu-char.c | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) - -diff --git a/qemu-char.c b/qemu-char.c -index 1be1cf6..1621fbd 100644 ---- a/qemu-char.c -+++ b/qemu-char.c -@@ -1026,15 +1026,11 @@ static gboolean pty_chr_timer(gpointer opaque) - struct CharDriverState *chr = opaque; - PtyCharDriver *s = chr->opaque; - -- if (s->connected) { -- goto out; -- } -- -- /* Next poll ... */ -- pty_chr_update_read_handler(chr); -- --out: - s->timer_tag = 0; -+ if (!s->connected) { -+ /* Next poll ... */ -+ pty_chr_update_read_handler(chr); -+ } - return FALSE; - } - diff --git a/0033-kvmvapic-Catch-invalid-ROM-size.patch b/0033-kvmvapic-Catch-invalid-ROM-size.patch deleted file mode 100644 index 88f4018..0000000 --- a/0033-kvmvapic-Catch-invalid-ROM-size.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 50b31e80525d03ef406a8c9f55ff2ae1655a3b66 Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Tue, 3 Sep 2013 18:08:50 +0200 -Subject: [PATCH] kvmvapic: Catch invalid ROM size - -If not caught early, a zero-length ROM will cause a NULL-pointer access -later on in patch_hypercalls when allocating a zero-length ROM copy and -trying to read from it. - -CC: qemu-stable@nongnu.org -Signed-off-by: Jan Kiszka -Signed-off-by: Paolo Bonzini -(cherry picked from commit 18e5eec4db96a00907eb588a2b803401637c7f67) - -Signed-off-by: Michael Roth ---- - hw/i386/kvmvapic.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c -index 15beb80..7ac0fe1 100644 ---- a/hw/i386/kvmvapic.c -+++ b/hw/i386/kvmvapic.c -@@ -578,7 +578,7 @@ static int patch_hypercalls(VAPICROMState *s) - * enable write access to the option ROM so that variables can be updated by - * the guest. - */ --static void vapic_map_rom_writable(VAPICROMState *s) -+static int vapic_map_rom_writable(VAPICROMState *s) - { - hwaddr rom_paddr = s->rom_state_paddr & ROM_BLOCK_MASK; - MemoryRegionSection section; -@@ -599,6 +599,9 @@ static void vapic_map_rom_writable(VAPICROMState *s) - /* read ROM size from RAM region */ - ram = memory_region_get_ram_ptr(section.mr); - rom_size = ram[rom_paddr + 2] * ROM_BLOCK_SIZE; -+ if (rom_size == 0) { -+ return -1; -+ } - s->rom_size = rom_size; - - /* We need to round to avoid creating subpages -@@ -612,11 +615,15 @@ static void vapic_map_rom_writable(VAPICROMState *s) - memory_region_add_subregion_overlap(as, rom_paddr, &s->rom, 1000); - s->rom_mapped_writable = true; - memory_region_unref(section.mr); -+ -+ return 0; - } - - static int vapic_prepare(VAPICROMState *s) - { -- vapic_map_rom_writable(s); -+ if (vapic_map_rom_writable(s) < 0) { -+ return -1; -+ } - - if (patch_hypercalls(s) < 0) { - return -1; diff --git a/0034-kvmvapic-Enter-inactive-state-on-hardware-reset.patch b/0034-kvmvapic-Enter-inactive-state-on-hardware-reset.patch deleted file mode 100644 index 0ebb354..0000000 --- a/0034-kvmvapic-Enter-inactive-state-on-hardware-reset.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 7ea8a3c12aa49efc8f503a019dd764f8a0add2cb Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Tue, 3 Sep 2013 18:08:51 +0200 -Subject: [PATCH] kvmvapic: Enter inactive state on hardware reset - -ROM layout may change after reset of devices are hotplugged, so we have -to pick up the physical address again when the ROM is initialized. This -is best achieved by resetting the state to INACTIVE. - -CC: qemu-stable@nongnu.org -Signed-off-by: Jan Kiszka -Signed-off-by: Paolo Bonzini -(cherry picked from commit c056bc3f3464cfae1c94b7dd633d3ec13b13b655) - -Signed-off-by: Michael Roth ---- - hw/i386/kvmvapic.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c -index 7ac0fe1..f2e335d 100644 ---- a/hw/i386/kvmvapic.c -+++ b/hw/i386/kvmvapic.c -@@ -510,9 +510,7 @@ static void vapic_reset(DeviceState *dev) - { - VAPICROMState *s = VAPIC(dev); - -- if (s->state == VAPIC_ACTIVE) { -- s->state = VAPIC_STANDBY; -- } -+ s->state = VAPIC_INACTIVE; - vapic_enable_tpr_reporting(false); - } - diff --git a/0035-kvmvapic-Clear-also-physical-ROM-address-when-enteri.patch b/0035-kvmvapic-Clear-also-physical-ROM-address-when-enteri.patch deleted file mode 100644 index a0d029f..0000000 --- a/0035-kvmvapic-Clear-also-physical-ROM-address-when-enteri.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 5d2de77798cacf1dadf6a4211972473e057cc6e5 Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Tue, 3 Sep 2013 18:08:52 +0200 -Subject: [PATCH] kvmvapic: Clear also physical ROM address when entering - INACTIVE state - -To avoid misinterpreting INACTIVE after migration as old qemu-kvm's -STANDBY, also clear rom_state_paddr when going back to this state. - -CC: qemu-stable@nongnu.org -Signed-off-by: Jan Kiszka -Signed-off-by: Paolo Bonzini -(cherry picked from commit 4357930b8a7d2fcff2d8121ec518117428a781e7) - -Signed-off-by: Michael Roth ---- - hw/i386/kvmvapic.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c -index f2e335d..cf6c714 100644 ---- a/hw/i386/kvmvapic.c -+++ b/hw/i386/kvmvapic.c -@@ -511,6 +511,7 @@ static void vapic_reset(DeviceState *dev) - VAPICROMState *s = VAPIC(dev); - - s->state = VAPIC_INACTIVE; -+ s->rom_state_paddr = 0; - vapic_enable_tpr_reporting(false); - } - -@@ -664,6 +665,7 @@ static void vapic_write(void *opaque, hwaddr addr, uint64_t data, - } - if (vapic_prepare(s) < 0) { - s->state = VAPIC_INACTIVE; -+ s->rom_state_paddr = 0; - break; - } - break; diff --git a/0036-tci-Fix-qemu-alpha-on-32-bit-hosts-wrong-assertions.patch b/0036-tci-Fix-qemu-alpha-on-32-bit-hosts-wrong-assertions.patch deleted file mode 100644 index f458952..0000000 --- a/0036-tci-Fix-qemu-alpha-on-32-bit-hosts-wrong-assertions.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 5c20c1ffe791ca29840fd9607ea034ea24ad7bdd Mon Sep 17 00:00:00 2001 -From: Stefan Weil -Date: Thu, 12 Sep 2013 20:17:50 +0200 -Subject: [PATCH] tci: Fix qemu-alpha on 32 bit hosts (wrong assertions) - -Debian busybox-static for alpha has a load address of 0x0000000120000000 -which is mapped to 0x0000000020000000 for 32 bit hosts. - -qemu-alpha uses the TCG opcodes qemu_ld32, qemu_ld64, qemu_st32 and -qemu_st64 which all raise the assertion (taddr == host_addr). - -Remove all assertions of this type because they are either wrong or -unnecessary (when sizeof(tcg_target_ulong) >= sizeof(target_ulong)). - -Cc: qemu-stable -Signed-off-by: Stefan Weil -Reviewed-by: Richard Henderson -Signed-off-by: Michael Tokarev -(cherry picked from commit 07ac4dc5db22a31e47b149abdbc5ea99013cf4de) - -Signed-off-by: Michael Roth ---- - tci.c | 12 ------------ - 1 file changed, 12 deletions(-) - -diff --git a/tci.c b/tci.c -index c742c8d..af58576 100644 ---- a/tci.c -+++ b/tci.c -@@ -1085,7 +1085,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp8 = helper_ldb_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp8 = *(uint8_t *)(host_addr + GUEST_BASE); - #endif - tci_write_reg8(t0, tmp8); -@@ -1097,7 +1096,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp8 = helper_ldb_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp8 = *(uint8_t *)(host_addr + GUEST_BASE); - #endif - tci_write_reg8s(t0, tmp8); -@@ -1109,7 +1107,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp16 = helper_ldw_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp16 = tswap16(*(uint16_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg16(t0, tmp16); -@@ -1121,7 +1118,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp16 = helper_ldw_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp16 = tswap16(*(uint16_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg16s(t0, tmp16); -@@ -1134,7 +1130,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp32 = tswap32(*(uint32_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg32(t0, tmp32); -@@ -1146,7 +1141,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp32 = tswap32(*(uint32_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg32s(t0, tmp32); -@@ -1159,7 +1153,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp32 = tswap32(*(uint32_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg32(t0, tmp32); -@@ -1174,7 +1167,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - tmp64 = helper_ldq_mmu(env, taddr, tci_read_i(&tb_ptr)); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - tmp64 = tswap64(*(uint64_t *)(host_addr + GUEST_BASE)); - #endif - tci_write_reg(t0, tmp64); -@@ -1190,7 +1182,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - helper_stb_mmu(env, taddr, t0, t2); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - *(uint8_t *)(host_addr + GUEST_BASE) = t0; - #endif - break; -@@ -1202,7 +1193,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - helper_stw_mmu(env, taddr, t0, t2); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - *(uint16_t *)(host_addr + GUEST_BASE) = tswap16(t0); - #endif - break; -@@ -1214,7 +1204,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - helper_stl_mmu(env, taddr, t0, t2); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - *(uint32_t *)(host_addr + GUEST_BASE) = tswap32(t0); - #endif - break; -@@ -1226,7 +1215,6 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr) - helper_stq_mmu(env, taddr, tmp64, t2); - #else - host_addr = (tcg_target_ulong)taddr; -- assert(taddr == host_addr); - *(uint64_t *)(host_addr + GUEST_BASE) = tswap64(tmp64); - #endif - break; diff --git a/0037-blockdev-do-not-default-cache.no-flush-to-true.patch b/0037-blockdev-do-not-default-cache.no-flush-to-true.patch deleted file mode 100644 index c7fb6c9..0000000 --- a/0037-blockdev-do-not-default-cache.no-flush-to-true.patch +++ /dev/null @@ -1,33 +0,0 @@ -From aeab582580fa057dbe646fc3277570af6a8d5ce8 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Thu, 19 Sep 2013 18:48:53 +0200 -Subject: [PATCH] blockdev: do not default cache.no-flush to true - -That's why all my VMs were so fast lately. :) - -This changed in 1.6.0 by mistake in patch 29c4e2b (blockdev: Split up -'cache' option, 2013-07-18). - -Cc: qemu-stable@nongnu.org -Signed-off-by: Paolo Bonzini -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 1df6fa4bc6754a170cf511a78e2e6fef84eb5228) - -Signed-off-by: Michael Roth ---- - blockdev.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/blockdev.c b/blockdev.c -index bc7016a..097932c 100644 ---- a/blockdev.c -+++ b/blockdev.c -@@ -460,7 +460,7 @@ static DriveInfo *blockdev_init(QemuOpts *all_opts, - if (qemu_opt_get_bool(opts, "cache.direct", false)) { - bdrv_flags |= BDRV_O_NOCACHE; - } -- if (qemu_opt_get_bool(opts, "cache.no-flush", true)) { -+ if (qemu_opt_get_bool(opts, "cache.no-flush", false)) { - bdrv_flags |= BDRV_O_NO_FLUSH; - } - diff --git a/0038-virtio-blk-do-not-relay-a-previous-driver-s-WCE-conf.patch b/0038-virtio-blk-do-not-relay-a-previous-driver-s-WCE-conf.patch deleted file mode 100644 index 8e85b74..0000000 --- a/0038-virtio-blk-do-not-relay-a-previous-driver-s-WCE-conf.patch +++ /dev/null @@ -1,111 +0,0 @@ -From c8adc0db7e76e804692372a06ca02cc5a80b67d5 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 20 Sep 2013 17:31:55 +0200 -Subject: [PATCH] virtio-blk: do not relay a previous driver's WCE - configuration to the current - -The following sequence happens: -- the SeaBIOS virtio-blk driver does not support the WCE feature, which -causes QEMU to disable writeback caching - -- the Linux virtio-blk driver resets the device, finds WCE is available -but writeback caching is disabled; tells block layer to not send cache -flush commands - -- the Linux virtio-blk driver sets the DRIVER_OK bit, which causes -writeback caching to be re-enabled, but the Linux virtio-blk driver does -not know of this side effect and cache flushes remain disabled - -The bug is at the third step. If the guest does know about CONFIG_WCE, -QEMU should ignore the WCE feature's state. The guest will control the -cache mode solely using configuration space. This change makes Linux -do flushes correctly, but Linux will keep SeaBIOS's writethrough mode. - -Hence, whenever the guest is reset, the cache mode of the disk should -be reset to whatever was specified in the "-drive" option. With this -change, the Linux virtio-blk driver finds that writeback caching is -enabled, and tells the block layer to send cache flush commands -appropriately. - -Reported-by: Rusty Russell -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit ef5bc96268ceec64769617dc53b0ac3a20ff351c) - -Signed-off-by: Michael Roth ---- - hw/block/virtio-blk.c | 24 ++++++++++++++++++++++-- - include/hw/virtio/virtio-blk.h | 1 + - 2 files changed, 23 insertions(+), 2 deletions(-) - -diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c -index e2f55cc..49a23c3 100644 ---- a/hw/block/virtio-blk.c -+++ b/hw/block/virtio-blk.c -@@ -460,9 +460,9 @@ static void virtio_blk_dma_restart_cb(void *opaque, int running, - - static void virtio_blk_reset(VirtIODevice *vdev) - { --#ifdef CONFIG_VIRTIO_BLK_DATA_PLANE - VirtIOBlock *s = VIRTIO_BLK(vdev); - -+#ifdef CONFIG_VIRTIO_BLK_DATA_PLANE - if (s->dataplane) { - virtio_blk_data_plane_stop(s->dataplane); - } -@@ -473,6 +473,7 @@ static void virtio_blk_reset(VirtIODevice *vdev) - * are per-device request lists. - */ - bdrv_drain_all(); -+ bdrv_set_enable_write_cache(s->bs, s->original_wce); - } - - /* coalesce internal state, copy to pci i/o region 0 -@@ -564,7 +565,25 @@ static void virtio_blk_set_status(VirtIODevice *vdev, uint8_t status) - } - - features = vdev->guest_features; -- bdrv_set_enable_write_cache(s->bs, !!(features & (1 << VIRTIO_BLK_F_WCE))); -+ -+ /* A guest that supports VIRTIO_BLK_F_CONFIG_WCE must be able to send -+ * cache flushes. Thus, the "auto writethrough" behavior is never -+ * necessary for guests that support the VIRTIO_BLK_F_CONFIG_WCE feature. -+ * Leaving it enabled would break the following sequence: -+ * -+ * Guest started with "-drive cache=writethrough" -+ * Guest sets status to 0 -+ * Guest sets DRIVER bit in status field -+ * Guest reads host features (WCE=0, CONFIG_WCE=1) -+ * Guest writes guest features (WCE=0, CONFIG_WCE=1) -+ * Guest writes 1 to the WCE configuration field (writeback mode) -+ * Guest sets DRIVER_OK bit in status field -+ * -+ * s->bs would erroneously be placed in writethrough mode. -+ */ -+ if (!(features & (1 << VIRTIO_BLK_F_CONFIG_WCE))) { -+ bdrv_set_enable_write_cache(s->bs, !!(features & (1 << VIRTIO_BLK_F_WCE))); -+ } - } - - static void virtio_blk_save(QEMUFile *f, void *opaque) -@@ -674,6 +693,7 @@ static int virtio_blk_device_init(VirtIODevice *vdev) - } - - blkconf_serial(&blk->conf, &blk->serial); -+ s->original_wce = bdrv_enable_write_cache(blk->conf.bs); - if (blkconf_geometry(&blk->conf, NULL, 65535, 255, 255) < 0) { - return -1; - } -diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h -index b87cf49..41885da 100644 ---- a/include/hw/virtio/virtio-blk.h -+++ b/include/hw/virtio/virtio-blk.h -@@ -123,6 +123,7 @@ typedef struct VirtIOBlock { - BlockConf *conf; - VirtIOBlkConf blk; - unsigned short sector_mask; -+ bool original_wce; - VMChangeStateEntry *change; - #ifdef CONFIG_VIRTIO_BLK_DATA_PLANE - Notifier migration_state_notifier; diff --git a/0039-xhci-emulate-intr-endpoint-intervals-correctly.patch b/0039-xhci-emulate-intr-endpoint-intervals-correctly.patch deleted file mode 100644 index 9474f47..0000000 --- a/0039-xhci-emulate-intr-endpoint-intervals-correctly.patch +++ /dev/null @@ -1,131 +0,0 @@ -From dc6fbaa8322ca53f46d9a6cc7e2f82de5362ea83 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Wed, 28 Aug 2013 11:38:44 +0200 -Subject: [PATCH] xhci: emulate intr endpoint intervals correctly - -Respect the interval for interrupt endpoints, so we don't finish -transfers as fast as possible but at the rate configured by the guest. - -Fixes guest deadlocks triggered by interrupt storms. - -Cc: -Signed-off-by: Gerd Hoffmann -(cherry picked from commit 4d7a81c06f5f17e019a2d3a18300500bd64f6f40) - -Signed-off-by: Michael Roth ---- - hw/usb/hcd-xhci.c | 44 +++++++++++++++++++++++++++++++++++++------- - 1 file changed, 37 insertions(+), 7 deletions(-) - -diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c -index a6f55a1..8010a6d 100644 ---- a/hw/usb/hcd-xhci.c -+++ b/hw/usb/hcd-xhci.c -@@ -355,6 +355,7 @@ typedef struct XHCITransfer { - unsigned int streamid; - bool in_xfer; - bool iso_xfer; -+ bool timed_xfer; - - unsigned int trb_count; - unsigned int trb_alloced; -@@ -1803,6 +1804,7 @@ static int xhci_fire_ctl_transfer(XHCIState *xhci, XHCITransfer *xfer) - - xfer->in_xfer = bmRequestType & USB_DIR_IN; - xfer->iso_xfer = false; -+ xfer->timed_xfer = false; - - if (xhci_setup_packet(xfer) < 0) { - return -1; -@@ -1818,6 +1820,17 @@ static int xhci_fire_ctl_transfer(XHCIState *xhci, XHCITransfer *xfer) - return 0; - } - -+static void xhci_calc_intr_kick(XHCIState *xhci, XHCITransfer *xfer, -+ XHCIEPContext *epctx, uint64_t mfindex) -+{ -+ uint64_t asap = ((mfindex + epctx->interval - 1) & -+ ~(epctx->interval-1)); -+ uint64_t kick = epctx->mfindex_last + epctx->interval; -+ -+ assert(epctx->interval != 0); -+ xfer->mfindex_kick = MAX(asap, kick); -+} -+ - static void xhci_calc_iso_kick(XHCIState *xhci, XHCITransfer *xfer, - XHCIEPContext *epctx, uint64_t mfindex) - { -@@ -1840,8 +1853,8 @@ static void xhci_calc_iso_kick(XHCIState *xhci, XHCITransfer *xfer, - } - } - --static void xhci_check_iso_kick(XHCIState *xhci, XHCITransfer *xfer, -- XHCIEPContext *epctx, uint64_t mfindex) -+static void xhci_check_intr_iso_kick(XHCIState *xhci, XHCITransfer *xfer, -+ XHCIEPContext *epctx, uint64_t mfindex) - { - if (xfer->mfindex_kick > mfindex) { - qemu_mod_timer(epctx->kick_timer, qemu_get_clock_ns(vm_clock) + -@@ -1866,18 +1879,30 @@ static int xhci_submit(XHCIState *xhci, XHCITransfer *xfer, XHCIEPContext *epctx - switch(epctx->type) { - case ET_INTR_OUT: - case ET_INTR_IN: -+ xfer->pkts = 0; -+ xfer->iso_xfer = false; -+ xfer->timed_xfer = true; -+ mfindex = xhci_mfindex_get(xhci); -+ xhci_calc_intr_kick(xhci, xfer, epctx, mfindex); -+ xhci_check_intr_iso_kick(xhci, xfer, epctx, mfindex); -+ if (xfer->running_retry) { -+ return -1; -+ } -+ break; - case ET_BULK_OUT: - case ET_BULK_IN: - xfer->pkts = 0; - xfer->iso_xfer = false; -+ xfer->timed_xfer = false; - break; - case ET_ISO_OUT: - case ET_ISO_IN: - xfer->pkts = 1; - xfer->iso_xfer = true; -+ xfer->timed_xfer = true; - mfindex = xhci_mfindex_get(xhci); - xhci_calc_iso_kick(xhci, xfer, epctx, mfindex); -- xhci_check_iso_kick(xhci, xfer, epctx, mfindex); -+ xhci_check_intr_iso_kick(xhci, xfer, epctx, mfindex); - if (xfer->running_retry) { - return -1; - } -@@ -1938,13 +1963,18 @@ static void xhci_kick_ep(XHCIState *xhci, unsigned int slotid, - - trace_usb_xhci_xfer_retry(xfer); - assert(xfer->running_retry); -- if (xfer->iso_xfer) { -- /* retry delayed iso transfer */ -+ if (xfer->timed_xfer) { -+ /* time to kick the transfer? */ - mfindex = xhci_mfindex_get(xhci); -- xhci_check_iso_kick(xhci, xfer, epctx, mfindex); -+ xhci_check_intr_iso_kick(xhci, xfer, epctx, mfindex); - if (xfer->running_retry) { - return; - } -+ xfer->timed_xfer = 0; -+ xfer->running_retry = 1; -+ } -+ if (xfer->iso_xfer) { -+ /* retry iso transfer */ - if (xhci_setup_packet(xfer) < 0) { - return; - } -@@ -2030,7 +2060,7 @@ static void xhci_kick_ep(XHCIState *xhci, unsigned int slotid, - epctx->next_xfer = (epctx->next_xfer + 1) % TD_QUEUE; - ep = xfer->packet.ep; - } else { -- if (!xfer->iso_xfer) { -+ if (!xfer->timed_xfer) { - fprintf(stderr, "xhci: error firing data transfer\n"); - } - } diff --git a/0040-iov-avoid-orig_len-may-be-used-unitialized-warning.patch b/0040-iov-avoid-orig_len-may-be-used-unitialized-warning.patch deleted file mode 100644 index c8f386c..0000000 --- a/0040-iov-avoid-orig_len-may-be-used-unitialized-warning.patch +++ /dev/null @@ -1,37 +0,0 @@ -From b314120afdbab3d29885f47fc83bc55f43765968 Mon Sep 17 00:00:00 2001 -From: Michael Tokarev -Date: Sat, 14 Sep 2013 13:11:36 +0400 -Subject: [PATCH] iov: avoid "orig_len may be used unitialized" warning - -Signed-off-by: Wenchao Xia -Reviewed-by: Stefan Hajnoczi -Signed-off-by: Michael Tokarev -(cherry picked from commit 2be178a475289286db80de5ddd7830e67e112bdd) - -Signed-off-by: Michael Roth ---- - util/iov.c | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git a/util/iov.c b/util/iov.c -index f705586..bb46c04 100644 ---- a/util/iov.c -+++ b/util/iov.c -@@ -181,13 +181,11 @@ ssize_t iov_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, - assert(iov[niov].iov_len > tail); - orig_len = iov[niov].iov_len; - iov[niov++].iov_len = tail; -- } -- -- ret = do_send_recv(sockfd, iov, niov, do_send); -- -- /* Undo the changes above before checking for errors */ -- if (tail) { -+ ret = do_send_recv(sockfd, iov, niov, do_send); -+ /* Undo the changes above before checking for errors */ - iov[niov-1].iov_len = orig_len; -+ } else { -+ ret = do_send_recv(sockfd, iov, niov, do_send); - } - if (offset) { - iov[0].iov_base -= offset; diff --git a/0041-tap-Use-numbered-tap-tun-devices-on-all-BSD-OS-s.patch b/0041-tap-Use-numbered-tap-tun-devices-on-all-BSD-OS-s.patch deleted file mode 100644 index 67f0fe3..0000000 --- a/0041-tap-Use-numbered-tap-tun-devices-on-all-BSD-OS-s.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 6bbb9d8100c90deb4843bfa3cf36e75b843c495b Mon Sep 17 00:00:00 2001 -From: Brad Smith -Date: Sat, 3 Aug 2013 22:20:41 -0400 -Subject: [PATCH] tap: Use numbered tap/tun devices on all *BSD OS's - -The following patch simplifies the *BSD tap/tun code and makes use of numbered -tap/tun interfaces on all *BSD OS's. NetBSD has a patch in their pkgsrc tree -to make use of this feature and DragonFly also supports this as well. - -Signed-off-by: Brad Smith -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit aa4f082f7526d39dac8e2ca64d192d858014ee10) - -Signed-off-by: Michael Roth ---- - net/tap-bsd.c | 11 ----------- - 1 file changed, 11 deletions(-) - -diff --git a/net/tap-bsd.c b/net/tap-bsd.c -index f61d580..90f8a02 100644 ---- a/net/tap-bsd.c -+++ b/net/tap-bsd.c -@@ -44,8 +44,6 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, - struct stat s; - #endif - --#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \ -- defined(__OpenBSD__) || defined(__APPLE__) - /* if no ifname is given, always start the search from tap0/tun0. */ - int i; - char dname[100]; -@@ -76,15 +74,6 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, - dname, strerror(errno)); - return -1; - } --#else -- TFR(fd = open("/dev/tap", O_RDWR)); -- if (fd < 0) { -- fprintf(stderr, -- "warning: could not open /dev/tap: no virtual network emulation: %s\n", -- strerror(errno)); -- return -1; -- } --#endif - - #ifdef TAPGIFNAME - if (ioctl(fd, TAPGIFNAME, (void *)&ifr) < 0) { diff --git a/0042-rbd-avoid-qemu_rbd_snap_list-memory-leaks.patch b/0042-rbd-avoid-qemu_rbd_snap_list-memory-leaks.patch deleted file mode 100644 index ebbe492..0000000 --- a/0042-rbd-avoid-qemu_rbd_snap_list-memory-leaks.patch +++ /dev/null @@ -1,43 +0,0 @@ -From fc06b430942e84a2a69e2a80a6d5b376a8064020 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Wed, 25 Sep 2013 16:00:48 +0200 -Subject: [PATCH] rbd: avoid qemu_rbd_snap_list() memory leaks - -When there are no snapshots qemu_rbd_snap_list() returns 0 and the -snapshot table pointer is NULL. Don't forget to free the snaps buffer -we allocated for librbd rbd_snap_list(). - -When the function succeeds don't forget to free the snaps buffer after -calling rbd_snap_list_end(). - -Cc: qemu-stable@nongnu.org -Signed-off-by: Stefan Hajnoczi -Signed-off-by: Kevin Wolf -(cherry picked from commit 9e6337d0818650362149b734d53edf9489f3acaa) - -Signed-off-by: Michael Roth ---- - block/rbd.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/block/rbd.c b/block/rbd.c -index cb71751..7e7c735 100644 ---- a/block/rbd.c -+++ b/block/rbd.c -@@ -934,7 +934,7 @@ static int qemu_rbd_snap_list(BlockDriverState *bs, - do { - snaps = g_malloc(sizeof(*snaps) * max_snaps); - snap_count = rbd_snap_list(s->image, snaps, &max_snaps); -- if (snap_count < 0) { -+ if (snap_count <= 0) { - g_free(snaps); - } - } while (snap_count == -ERANGE); -@@ -958,6 +958,7 @@ static int qemu_rbd_snap_list(BlockDriverState *bs, - sn_info->vm_clock_nsec = 0; - } - rbd_snap_list_end(snaps); -+ g_free(snaps); - - done: - *psn_tab = sn_tab; diff --git a/0043-vmdk-fix-cluster-size-check-for-flat-extents.patch b/0043-vmdk-fix-cluster-size-check-for-flat-extents.patch deleted file mode 100644 index b8bac4c..0000000 --- a/0043-vmdk-fix-cluster-size-check-for-flat-extents.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 61fbeb6e81f648d25c2d3ba5f0d663d54abed1c1 Mon Sep 17 00:00:00 2001 -From: Fam Zheng -Date: Mon, 23 Sep 2013 17:18:29 +0800 -Subject: [PATCH] vmdk: fix cluster size check for flat extents - -We use the extent size as cluster size for flat extents (where no L1/L2 -table is allocated so it's safe) reuse sector calculating code with -sparse extents. - -Don't pass in the cluster size for adding flat extent, just set it to -sectors later, then the cluster size checking will not fail. - -The cluster_sectors is changed to int64_t to allow big flat extent. - -Without this, flat extent opening is broken: - - # qemu-img create -f vmdk -o subformat=monolithicFlat /tmp/a.vmdk 100G - Formatting '/tmp/a.vmdk', fmt=vmdk size=107374182400 compat6=off subformat='monolithicFlat' zeroed_grain=off - # qemu-img info /tmp/a.vmdk - image: /tmp/a.vmdk - file format: raw - virtual size: 0 (0 bytes) - disk size: 4.0K - -Signed-off-by: Fam Zheng -Signed-off-by: Kevin Wolf -(cherry picked from commit 301c7d38a0c359b91526391d13617386f3d9bb29) - -Signed-off-by: Michael Roth ---- - block/vmdk.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/block/vmdk.c b/block/vmdk.c -index 346bb5c..258a24f 100644 ---- a/block/vmdk.c -+++ b/block/vmdk.c -@@ -105,7 +105,7 @@ typedef struct VmdkExtent { - uint32_t l2_cache_offsets[L2_CACHE_SIZE]; - uint32_t l2_cache_counts[L2_CACHE_SIZE]; - -- unsigned int cluster_sectors; -+ int64_t cluster_sectors; - } VmdkExtent; - - typedef struct BDRVVmdkState { -@@ -416,7 +416,7 @@ static int vmdk_add_extent(BlockDriverState *bs, - extent->l1_size = l1_size; - extent->l1_entry_sectors = l2_size * cluster_sectors; - extent->l2_size = l2_size; -- extent->cluster_sectors = cluster_sectors; -+ extent->cluster_sectors = flat ? sectors : cluster_sectors; - - if (s->num_extents > 1) { - extent->end_sector = (*(extent - 1)).end_sector + extent->sectors; -@@ -736,7 +736,7 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs, - VmdkExtent *extent; - - ret = vmdk_add_extent(bs, extent_file, true, sectors, -- 0, 0, 0, 0, sectors, &extent); -+ 0, 0, 0, 0, 0, &extent); - if (ret < 0) { - return ret; - } diff --git a/0044-piix4-disable-io-on-reset.patch b/0044-piix4-disable-io-on-reset.patch deleted file mode 100644 index e37b62b..0000000 --- a/0044-piix4-disable-io-on-reset.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ae00a27feab0ca12d2a802cfae9ee65ba3d43602 Mon Sep 17 00:00:00 2001 -From: "Michael S. Tsirkin" -Date: Wed, 11 Sep 2013 13:33:31 +0300 -Subject: [PATCH] piix4: disable io on reset - -io base register at 0x40 is cleared on reset, -but io is not disabled until some other event -happens to call pm_io_space_update. - -Invoke pm_io_space_update directly to make this -consistent. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit c046e8c4a26c902ca1b4f5bdf668a2da6bc75f54) - -Signed-off-by: Michael Roth ---- - hw/acpi/piix4.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c -index c885690..3aaf18c 100644 ---- a/hw/acpi/piix4.c -+++ b/hw/acpi/piix4.c -@@ -380,6 +380,7 @@ static void piix4_reset(void *opaque) - /* Mark SMM as already inited (until KVM supports SMM). */ - pci_conf[0x5B] = 0x02; - } -+ pm_io_space_update(s); - piix4_update_hotplug(s); - } - diff --git a/0045-coroutine-add-.-configure-disable-coroutine-pool.patch b/0045-coroutine-add-.-configure-disable-coroutine-pool.patch deleted file mode 100644 index 2c416fd..0000000 --- a/0045-coroutine-add-.-configure-disable-coroutine-pool.patch +++ /dev/null @@ -1,163 +0,0 @@ -From ba20326a937421c50a775907dc9ac726bb9a9b50 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Wed, 11 Sep 2013 16:42:35 +0200 -Subject: [PATCH] coroutine: add ./configure --disable-coroutine-pool - -The 'gthread' coroutine backend was written before the freelist (aka -pool) existed in qemu-coroutine.c. - -This means that every thread is expected to exit when its coroutine -terminates. It is not possible to reuse threads from a pool. - -This patch automatically disables the pool when 'gthread' is used. This -allows the 'gthread' backend to work again (for example, -tests/test-coroutine completes successfully instead of hanging). - -I considered implementing thread reuse but I don't want quirks like CPU -affinity differences due to coroutine threads being recycled. The -'gthread' backend is a reference backend and it's therefore okay to skip -the pool optimization. - -Note this patch also makes it easy to toggle the pool for benchmarking -purposes: - - ./configure --with-coroutine-backend=ucontext \ - --disable-coroutine-pool - -Reported-by: Gabriel Kerneis -Signed-off-by: Stefan Hajnoczi -Reviewed-by: Gabriel Kerneis -Signed-off-by: Kevin Wolf -(cherry picked from commit 70c60c089fdc6bf8a79324e492c13e8c08d55942) - -Signed-off-by: Michael Roth ---- - configure | 24 ++++++++++++++++++++++++ - qemu-coroutine.c | 34 +++++++++++++++++++--------------- - 2 files changed, 43 insertions(+), 15 deletions(-) - -diff --git a/configure b/configure -index 18fa608..4cf672d 100755 ---- a/configure -+++ b/configure -@@ -235,6 +235,7 @@ guest_agent="" - want_tools="yes" - libiscsi="" - coroutine="" -+coroutine_pool="" - seccomp="" - glusterfs="" - glusterfs_discard="no" -@@ -871,6 +872,10 @@ for opt do - ;; - --with-coroutine=*) coroutine="$optarg" - ;; -+ --disable-coroutine-pool) coroutine_pool="no" -+ ;; -+ --enable-coroutine-pool) coroutine_pool="yes" -+ ;; - --disable-docs) docs="no" - ;; - --enable-docs) docs="yes" -@@ -1152,6 +1157,8 @@ echo " --disable-seccomp disable seccomp support" - echo " --enable-seccomp enables seccomp support" - echo " --with-coroutine=BACKEND coroutine backend. Supported options:" - echo " gthread, ucontext, sigaltstack, windows" -+echo " --disable-coroutine-pool disable coroutine freelist (worse performance)" -+echo " --enable-coroutine-pool enable coroutine freelist (better performance)" - echo " --enable-glusterfs enable GlusterFS backend" - echo " --disable-glusterfs disable GlusterFS backend" - echo " --enable-gcov enable test coverage analysis with gcov" -@@ -3240,6 +3247,17 @@ else - esac - fi - -+if test "$coroutine_pool" = ""; then -+ if test "$coroutine" = "gthread"; then -+ coroutine_pool=no -+ else -+ coroutine_pool=yes -+ fi -+fi -+if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then -+ error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" -+fi -+ - ########################################## - # check if we have open_by_handle_at - -@@ -3605,6 +3623,7 @@ echo "libiscsi support $libiscsi" - echo "build guest agent $guest_agent" - echo "seccomp support $seccomp" - echo "coroutine backend $coroutine" -+echo "coroutine pool $coroutine_pool" - echo "GlusterFS support $glusterfs" - echo "virtio-blk-data-plane $virtio_blk_data_plane" - echo "gcov $gcov_tool" -@@ -3954,6 +3973,11 @@ if test "$rbd" = "yes" ; then - fi - - echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak -+if test "$coroutine_pool" = "yes" ; then -+ echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak -+else -+ echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak -+fi - - if test "$open_by_handle_at" = "yes" ; then - echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak -diff --git a/qemu-coroutine.c b/qemu-coroutine.c -index 423430d..4708521 100644 ---- a/qemu-coroutine.c -+++ b/qemu-coroutine.c -@@ -30,15 +30,17 @@ static unsigned int pool_size; - - Coroutine *qemu_coroutine_create(CoroutineEntry *entry) - { -- Coroutine *co; -- -- qemu_mutex_lock(&pool_lock); -- co = QSLIST_FIRST(&pool); -- if (co) { -- QSLIST_REMOVE_HEAD(&pool, pool_next); -- pool_size--; -+ Coroutine *co = NULL; -+ -+ if (CONFIG_COROUTINE_POOL) { -+ qemu_mutex_lock(&pool_lock); -+ co = QSLIST_FIRST(&pool); -+ if (co) { -+ QSLIST_REMOVE_HEAD(&pool, pool_next); -+ pool_size--; -+ } -+ qemu_mutex_unlock(&pool_lock); - } -- qemu_mutex_unlock(&pool_lock); - - if (!co) { - co = qemu_coroutine_new(); -@@ -51,15 +53,17 @@ Coroutine *qemu_coroutine_create(CoroutineEntry *entry) - - static void coroutine_delete(Coroutine *co) - { -- qemu_mutex_lock(&pool_lock); -- if (pool_size < POOL_MAX_SIZE) { -- QSLIST_INSERT_HEAD(&pool, co, pool_next); -- co->caller = NULL; -- pool_size++; -+ if (CONFIG_COROUTINE_POOL) { -+ qemu_mutex_lock(&pool_lock); -+ if (pool_size < POOL_MAX_SIZE) { -+ QSLIST_INSERT_HEAD(&pool, co, pool_next); -+ co->caller = NULL; -+ pool_size++; -+ qemu_mutex_unlock(&pool_lock); -+ return; -+ } - qemu_mutex_unlock(&pool_lock); -- return; - } -- qemu_mutex_unlock(&pool_lock); - - qemu_coroutine_delete(co); - } diff --git a/0046-qemu-Adjust-qemu-wakeup.patch b/0046-qemu-Adjust-qemu-wakeup.patch deleted file mode 100644 index 973119b..0000000 --- a/0046-qemu-Adjust-qemu-wakeup.patch +++ /dev/null @@ -1,123 +0,0 @@ -From bc05a488b49f903e404323b76ca9b675318393fc Mon Sep 17 00:00:00 2001 -From: "Liu, Jinsong" -Date: Wed, 25 Sep 2013 16:38:29 +0000 -Subject: [PATCH] qemu: Adjust qemu wakeup - -Currently Xen hvm s3 has a bug coming from the difference between -qemu-traditioanl and qemu-xen. For qemu-traditional, the way to -resume from hvm s3 is via 'xl trigger' command. However, for -qemu-xen, the way to resume from hvm s3 inherited from standard -qemu, i.e. via QMP, and it doesn't work under Xen. - -The root cause is, for qemu-xen, 'xl trigger' command didn't reset -devices, while QMP didn't unpause hvm domain though they did qemu -system reset. - -We have two qemu patches and one xl patch to fix Xen hvm s3 bug. -This patch is the qemu patch 1. It adjusts qemu wakeup so that -Xen s3 resume logic (which will be implemented at qemu patch 2) -will be notified after qemu system reset. - -Signed-off-by: Liu Jinsong -Signed-off-by: Stefano Stabellini -Reviewed-by: Paolo Bonzini -Reviewed-by: Anthony PERARD -(cherry picked from commit 4bc78a877252d772b983810a7d2c0be00e9be70e) - -Signed-off-by: Michael Roth ---- - hw/acpi/core.c | 3 ++- - include/sysemu/sysemu.h | 4 +++- - vl.c | 15 +++++++-------- - 3 files changed, 12 insertions(+), 10 deletions(-) - -diff --git a/hw/acpi/core.c b/hw/acpi/core.c -index b07feda..769cfdb 100644 ---- a/hw/acpi/core.c -+++ b/hw/acpi/core.c -@@ -324,12 +324,13 @@ static void acpi_notify_wakeup(Notifier *notifier, void *data) - (ACPI_BITMASK_WAKE_STATUS | ACPI_BITMASK_TIMER_STATUS); - break; - case QEMU_WAKEUP_REASON_OTHER: -- default: - /* ACPI_BITMASK_WAKE_STATUS should be set on resume. - Pretend that resume was caused by power button */ - ar->pm1.evt.sts |= - (ACPI_BITMASK_WAKE_STATUS | ACPI_BITMASK_POWER_BUTTON_STATUS); - break; -+ default: -+ break; - } - } - -diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h -index d7a77b6..1a77c99 100644 ---- a/include/sysemu/sysemu.h -+++ b/include/sysemu/sysemu.h -@@ -39,9 +39,11 @@ int vm_stop(RunState state); - int vm_stop_force_state(RunState state); - - typedef enum WakeupReason { -- QEMU_WAKEUP_REASON_OTHER = 0, -+ /* Always keep QEMU_WAKEUP_REASON_NONE = 0 */ -+ QEMU_WAKEUP_REASON_NONE = 0, - QEMU_WAKEUP_REASON_RTC, - QEMU_WAKEUP_REASON_PMTIMER, -+ QEMU_WAKEUP_REASON_OTHER, - } WakeupReason; - - void qemu_system_reset_request(void); -diff --git a/vl.c b/vl.c -index f422a1c..2160933 100644 ---- a/vl.c -+++ b/vl.c -@@ -1792,14 +1792,14 @@ static pid_t shutdown_pid; - static int powerdown_requested; - static int debug_requested; - static int suspend_requested; --static int wakeup_requested; -+static WakeupReason wakeup_reason; - static NotifierList powerdown_notifiers = - NOTIFIER_LIST_INITIALIZER(powerdown_notifiers); - static NotifierList suspend_notifiers = - NOTIFIER_LIST_INITIALIZER(suspend_notifiers); - static NotifierList wakeup_notifiers = - NOTIFIER_LIST_INITIALIZER(wakeup_notifiers); --static uint32_t wakeup_reason_mask = ~0; -+static uint32_t wakeup_reason_mask = ~(1 << QEMU_WAKEUP_REASON_NONE); - static RunState vmstop_requested = RUN_STATE_MAX; - - int qemu_shutdown_requested_get(void) -@@ -1849,11 +1849,9 @@ static int qemu_suspend_requested(void) - return r; - } - --static int qemu_wakeup_requested(void) -+static WakeupReason qemu_wakeup_requested(void) - { -- int r = wakeup_requested; -- wakeup_requested = 0; -- return r; -+ return wakeup_reason; - } - - static int qemu_powerdown_requested(void) -@@ -1970,8 +1968,7 @@ void qemu_system_wakeup_request(WakeupReason reason) - return; - } - runstate_set(RUN_STATE_RUNNING); -- notifier_list_notify(&wakeup_notifiers, &reason); -- wakeup_requested = 1; -+ wakeup_reason = reason; - qemu_notify_event(); - } - -@@ -2063,6 +2060,8 @@ static bool main_loop_should_exit(void) - pause_all_vcpus(); - cpu_synchronize_all_states(); - qemu_system_reset(VMRESET_SILENT); -+ notifier_list_notify(&wakeup_notifiers, &wakeup_reason); -+ wakeup_reason = QEMU_WAKEUP_REASON_NONE; - resume_all_vcpus(); - monitor_protocol_event(QEVENT_WAKEUP, NULL); - } diff --git a/0047-qemu-Add-qemu-xen-logic-for-Xen-HVM-S3-resume.patch b/0047-qemu-Add-qemu-xen-logic-for-Xen-HVM-S3-resume.patch deleted file mode 100644 index f6e06a5..0000000 --- a/0047-qemu-Add-qemu-xen-logic-for-Xen-HVM-S3-resume.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 1b5f7709411a412ec8ce21004a47f51ab6c3f3ad Mon Sep 17 00:00:00 2001 -From: "Liu, Jinsong" -Date: Wed, 25 Sep 2013 16:40:23 +0000 -Subject: [PATCH] qemu: Add qemu xen logic for Xen HVM S3 resume - -This patch is qemu patch 2 to fix Xen HVM S3 bug, adding qemu -xen logic. When qemu wakeup, qemu xen logic is notified and -hypercall to xen hypervisor to unpause domain. - -Signed-off-by: Liu Jinsong -Signed-off-by: Stefano Stabellini -Reviewed-by: Anthony PERARD -(cherry picked from commit 11addd0ab9371af2b6ec028c7fe4e4c4992252fc) - -Signed-off-by: Michael Roth ---- - xen-all.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/xen-all.c b/xen-all.c -index e1d0694..7894ac6 100644 ---- a/xen-all.c -+++ b/xen-all.c -@@ -98,6 +98,7 @@ typedef struct XenIOState { - - Notifier exit; - Notifier suspend; -+ Notifier wakeup; - } XenIOState; - - /* Xen specific function for piix pci */ -@@ -1060,6 +1061,11 @@ static void xen_read_physmap(XenIOState *state) - free(entries); - } - -+static void xen_wakeup_notifier(Notifier *notifier, void *data) -+{ -+ xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0); -+} -+ - int xen_hvm_init(MemoryRegion **ram_memory) - { - int i, rc; -@@ -1089,6 +1095,9 @@ int xen_hvm_init(MemoryRegion **ram_memory) - state->suspend.notify = xen_suspend_notifier; - qemu_register_suspend_notifier(&state->suspend); - -+ state->wakeup.notify = xen_wakeup_notifier; -+ qemu_register_wakeup_notifier(&state->wakeup); -+ - xc_get_hvm_param(xen_xc, xen_domid, HVM_PARAM_IOREQ_PFN, &ioreq_pfn); - DPRINTF("shared page at pfn %lx\n", ioreq_pfn); - state->shared_page = xc_map_foreign_range(xen_xc, xen_domid, XC_PAGE_SIZE, diff --git a/0048-scsi-Allocate-SCSITargetReq-r-buf-dynamically.patch b/0048-scsi-Allocate-SCSITargetReq-r-buf-dynamically.patch deleted file mode 100644 index d921981..0000000 --- a/0048-scsi-Allocate-SCSITargetReq-r-buf-dynamically.patch +++ /dev/null @@ -1,154 +0,0 @@ -From fdcbe7d587a64dec0db0d3c9a3b230c39efbfeef Mon Sep 17 00:00:00 2001 -From: Asias He -Date: Fri, 13 Sep 2013 14:56:55 +0800 -Subject: [PATCH] scsi: Allocate SCSITargetReq r->buf dynamically - -BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1007330 -Brew: https://brewweb.devel.redhat.com/taskinfo?taskID=6282465 - -This is the backport of the following commit. The patch is not -sent public since it is a embargoed bug. - - r->buf is hardcoded to 2056 which is (256 + 1) * 8, allowing 256 luns at - most. If more than 256 luns are specified by user, we have buffer - overflow in scsi_target_emulate_report_luns. - - To fix, we allocate the buffer dynamically. - - Signed-off-by: Asias He - -Signed-off-by: Asias He -Signed-off-by: Paolo Bonzini - -*s/&r->buf/r->buf/ due to type change - -Signed-off-by: Michael Roth ---- - hw/scsi/scsi-bus.c | 44 +++++++++++++++++++++++++++++++++----------- - include/hw/scsi/scsi.h | 2 ++ - 2 files changed, 35 insertions(+), 11 deletions(-) - -diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c -index 8fe4f4c..ad26c25 100644 ---- a/hw/scsi/scsi-bus.c -+++ b/hw/scsi/scsi-bus.c -@@ -11,6 +11,8 @@ static char *scsibus_get_dev_path(DeviceState *dev); - static char *scsibus_get_fw_dev_path(DeviceState *dev); - static int scsi_req_parse(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf); - static void scsi_req_dequeue(SCSIRequest *req); -+static uint8_t *scsi_target_alloc_buf(SCSIRequest *req, size_t len); -+static void scsi_target_free_buf(SCSIRequest *req); - - static Property scsi_props[] = { - DEFINE_PROP_UINT32("channel", SCSIDevice, channel, 0), -@@ -317,7 +319,8 @@ typedef struct SCSITargetReq SCSITargetReq; - struct SCSITargetReq { - SCSIRequest req; - int len; -- uint8_t buf[2056]; -+ uint8_t *buf; -+ int buf_len; - }; - - static void store_lun(uint8_t *outbuf, int lun) -@@ -361,14 +364,12 @@ static bool scsi_target_emulate_report_luns(SCSITargetReq *r) - if (!found_lun0) { - n += 8; - } -- len = MIN(n + 8, r->req.cmd.xfer & ~7); -- if (len > sizeof(r->buf)) { -- /* TODO: > 256 LUNs? */ -- return false; -- } - -+ scsi_target_alloc_buf(&r->req, n + 8); -+ -+ len = MIN(n + 8, r->req.cmd.xfer & ~7); - memset(r->buf, 0, len); -- stl_be_p(&r->buf, n); -+ stl_be_p(r->buf, n); - i = found_lun0 ? 8 : 16; - QTAILQ_FOREACH(kid, &r->req.bus->qbus.children, sibling) { - DeviceState *qdev = kid->child; -@@ -387,6 +388,9 @@ static bool scsi_target_emulate_report_luns(SCSITargetReq *r) - static bool scsi_target_emulate_inquiry(SCSITargetReq *r) - { - assert(r->req.dev->lun != r->req.lun); -+ -+ scsi_target_alloc_buf(&r->req, SCSI_INQUIRY_LEN); -+ - if (r->req.cmd.buf[1] & 0x2) { - /* Command support data - optional, not implemented */ - return false; -@@ -411,7 +415,7 @@ static bool scsi_target_emulate_inquiry(SCSITargetReq *r) - return false; - } - /* done with EVPD */ -- assert(r->len < sizeof(r->buf)); -+ assert(r->len < r->buf_len); - r->len = MIN(r->req.cmd.xfer, r->len); - return true; - } -@@ -455,8 +459,8 @@ static int32_t scsi_target_send_command(SCSIRequest *req, uint8_t *buf) - } - break; - case REQUEST_SENSE: -- r->len = scsi_device_get_sense(r->req.dev, r->buf, -- MIN(req->cmd.xfer, sizeof r->buf), -+ scsi_target_alloc_buf(&r->req, SCSI_SENSE_LEN); -+ r->len = scsi_device_get_sense(r->req.dev, r->buf, r->buf_len, - (req->cmd.buf[1] & 1) == 0); - if (r->req.dev->sense_is_ua) { - scsi_device_unit_attention_reported(req->dev); -@@ -501,11 +505,29 @@ static uint8_t *scsi_target_get_buf(SCSIRequest *req) - return r->buf; - } - -+static uint8_t *scsi_target_alloc_buf(SCSIRequest *req, size_t len) -+{ -+ SCSITargetReq *r = DO_UPCAST(SCSITargetReq, req, req); -+ -+ r->buf = g_malloc(len); -+ r->buf_len = len; -+ -+ return r->buf; -+} -+ -+static void scsi_target_free_buf(SCSIRequest *req) -+{ -+ SCSITargetReq *r = DO_UPCAST(SCSITargetReq, req, req); -+ -+ g_free(r->buf); -+} -+ - static const struct SCSIReqOps reqops_target_command = { - .size = sizeof(SCSITargetReq), - .send_command = scsi_target_send_command, - .read_data = scsi_target_read_data, - .get_buf = scsi_target_get_buf, -+ .free_req = scsi_target_free_buf, - }; - - -@@ -1365,7 +1387,7 @@ int scsi_build_sense(uint8_t *in_buf, int in_len, - buf[7] = 10; - buf[12] = sense.asc; - buf[13] = sense.ascq; -- return MIN(len, 18); -+ return MIN(len, SCSI_SENSE_LEN); - } else { - /* Return descriptor format sense buffer */ - buf[0] = 0x72; -diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h -index 8786531..18cb694 100644 ---- a/include/hw/scsi/scsi.h -+++ b/include/hw/scsi/scsi.h -@@ -9,6 +9,8 @@ - #define MAX_SCSI_DEVS 255 - - #define SCSI_CMD_BUF_SIZE 16 -+#define SCSI_SENSE_LEN 18 -+#define SCSI_INQUIRY_LEN 36 - - typedef struct SCSIBus SCSIBus; - typedef struct SCSIBusInfo SCSIBusInfo; diff --git a/0049-Update-VERSION-for-1.6.1-release.patch b/0049-Update-VERSION-for-1.6.1-release.patch deleted file mode 100644 index 30bfee2..0000000 --- a/0049-Update-VERSION-for-1.6.1-release.patch +++ /dev/null @@ -1,17 +0,0 @@ -From 62ecc3a0e3c77a4944c92a02dd7fae2ab1f2290d Mon Sep 17 00:00:00 2001 -From: Michael Roth -Date: Fri, 4 Oct 2013 10:21:43 -0500 -Subject: [PATCH] Update VERSION for 1.6.1 release - -Signed-off-by: Michael Roth ---- - VERSION | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/VERSION b/VERSION -index dc1e644..9c6d629 100644 ---- a/VERSION -+++ b/VERSION -@@ -1 +1 @@ --1.6.0 -+1.6.1 diff --git a/0201-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch b/0101-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch similarity index 100% rename from 0201-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch rename to 0101-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch diff --git a/0202-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch b/0102-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch similarity index 100% rename from 0202-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch rename to 0102-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch diff --git a/0203-hw-9pfs-Fix-errno-value-for-xattr-functions.patch b/0103-hw-9pfs-Fix-errno-value-for-xattr-functions.patch similarity index 100% rename from 0203-hw-9pfs-Fix-errno-value-for-xattr-functions.patch rename to 0103-hw-9pfs-Fix-errno-value-for-xattr-functions.patch diff --git a/0204-Fix-pc-migration-from-qemu-1.5.patch b/0104-Fix-pc-migration-from-qemu-1.5.patch similarity index 96% rename from 0204-Fix-pc-migration-from-qemu-1.5.patch rename to 0104-Fix-pc-migration-from-qemu-1.5.patch index ee21194..022b66c 100644 --- a/0204-Fix-pc-migration-from-qemu-1.5.patch +++ b/0104-Fix-pc-migration-from-qemu-1.5.patch @@ -1,4 +1,4 @@ -From 16f89cbf7737626a0ab24a5b0fd7ce4ab940f5a2 Mon Sep 17 00:00:00 2001 +From 042c76790b1168766332b1aafa4429c265d35ed0 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Mon, 7 Oct 2013 16:32:24 -0400 Subject: [PATCH] Fix pc migration from qemu <= 1.5 @@ -21,6 +21,7 @@ types, but revert to the old style format for 1.7+, and <= 1.5. Tested with migration from qemu 1.5, qemu 1.6, and qemu.git. Cc: qemu-stable@nongnu.org +Signed-off-by: Cole Robinson --- hw/i386/pc_piix.c | 11 +++++++++++ hw/i386/pc_q35.c | 11 +++++++++++ @@ -150,7 +151,7 @@ index 4febd24..f762053 100644 }; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 475ba9e..a0bbdd9 100644 +index 475ba9e..6e2b839 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -225,7 +225,19 @@ void pvpanic_init(ISABus *bus); @@ -163,7 +164,7 @@ index 475ba9e..a0bbdd9 100644 + .property = "short_root_bus",\ + .value = stringify(1),\ + },{\ -+ .driver = "mch",\ ++ .driver = "q35-pcihost",\ + .property = "short_root_bus",\ + .value = stringify(1),\ + } @@ -182,7 +183,7 @@ index 475ba9e..a0bbdd9 100644 + .property = "short_root_bus",\ + .value = stringify(0),\ + },{\ -+ .driver = "mch",\ ++ .driver = "q35-pcihost",\ + .property = "short_root_bus",\ + .value = stringify(0),\ } diff --git a/0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch b/0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch new file mode 100644 index 0000000..30cfa3d --- /dev/null +++ b/0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch @@ -0,0 +1,42 @@ +From 6b7ac46a461482c06c5ccdf54815e94205bc7d95 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 9 Oct 2013 21:33:44 +0200 +Subject: [PATCH] audio: honor QEMU_AUDIO_TIMER_PERIOD instead of waking up + every *nano* second + +Now that we no longer have MIN_REARM_TIMER_NS a bug in the audio subsys has +clearly shown it self by trying to make a timer fire every nano second. + +Note we have a similar problem in 1.6, 1.5 and older but there +MIN_REARM_TIMER_NS limits the wakeups caused by audio being active to +4000 times / second. This still causes a host cpu load of 50 % for simply +playing audio, where as with this patch git master is at 13%, so we should +backport this to 1.5 and 1.6 too. + +Note this will not apply to 1.5 and 1.6 as is. + +Cc: qemu-stable@nongnu.org +Signed-off-by: Hans de Goede +Signed-off-by: Gerd Hoffmann +(cherry picked from commit b4350deed67b95651896ddb60cf9f765093a4848) + +Conflicts: + audio/audio.c +--- + audio/audio.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/audio/audio.c b/audio/audio.c +index 02bb886..f9b3e95 100644 +--- a/audio/audio.c ++++ b/audio/audio.c +@@ -1124,7 +1124,8 @@ static int audio_is_timer_needed (void) + static void audio_reset_timer (AudioState *s) + { + if (audio_is_timer_needed ()) { +- qemu_mod_timer (s->ts, qemu_get_clock_ns (vm_clock) + 1); ++ qemu_mod_timer (s->ts, ++ qemu_get_clock_ns (vm_clock) + conf.period.ticks); + } + else { + qemu_del_timer (s->ts); diff --git a/ksmtuned b/ksmtuned index c96507c..7bc5743 100644 --- a/ksmtuned +++ b/ksmtuned @@ -71,10 +71,10 @@ KSMCTL () { committed_memory () { # calculate how much memory is committed to running qemu processes local pidlist - pidlist=$(pgrep -d ' ' -- '^qemu(-kvm|:.{1,11})$') + pidlist=$(pgrep -d ' ' -- '^qemu(-(kvm|system-.+)|:.{1,11})$') if [ -n "$pidlist" ]; then ps -p "$pidlist" -o rsz= - fi | awk '{ sum += $1 }; END { print sum }' + fi | awk '{ sum += $1 }; END { print 0+sum }' } free_memory () { diff --git a/qemu.spec b/qemu.spec index 0560b00..18937f1 100644 --- a/qemu.spec +++ b/qemu.spec @@ -138,8 +138,8 @@ Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 1.6.0 -Release: 10%{?dist} +Version: 1.6.1 +Release: 1%{?dist} Epoch: 2 License: GPLv2+ and LGPLv2+ and BSD Group: Development/Tools @@ -180,91 +180,42 @@ Source12: bridge.conf # qemu-kvm back compat wrapper Source13: qemu-kvm.sh -# Rebase to pending 1.6.1 stable -Patch0001: 0001-block-ensure-bdrv_drain_all-works-during-bdrv_delete.patch -Patch0002: 0002-gdbstub-Fix-gdb_register_coprocessor-register-counti.patch -Patch0003: 0003-target-ppc-fix-bit-extraction-for-FPBF-and-FPL.patch -Patch0004: 0004-rdma-silly-ipv6-bugfix.patch -Patch0005: 0005-scripts-qapi.py-Avoid-syntax-not-supported-by-Python.patch -Patch0006: 0006-usb-dev-hid-Modified-usb-tablet-category-from-Misc-t.patch -Patch0007: 0007-scsi-Fix-scsi_bus_legacy_add_drive-scsi-generic-with.patch -Patch0008: 0008-pc-fix-regression-for-64-bit-PCI-memory.patch -Patch0009: 0009-pseries-Fix-stalls-on-hypervisor-virtual-console.patch -Patch0010: 0010-virtio-virtqueue_get_avail_bytes-fix-desc_pa-when-lo.patch -Patch0011: 0011-xhci-fix-endpoint-interval-calculation.patch -Patch0012: 0012-Revert-usb-hub-report-status-changes-only-once.patch -Patch0013: 0013-block-expect-errors-from-bdrv_co_is_allocated.patch -Patch0014: 0014-target-i386-fix-disassembly-with-PAE-1-PG-0.patch -Patch0015: 0015-adlib-sort-offsets-in-portio-registration.patch -Patch0016: 0016-exec-fix-writing-to-MMIO-area-with-non-power-of-two-.patch -Patch0017: 0017-virtio_pci-fix-level-interrupts-with-irqfd.patch -Patch0018: 0018-exec-always-use-MADV_DONTFORK.patch -Patch0019: 0019-xhci-reset-port-when-disabling-slot.patch -Patch0020: 0020-usb-parallelize-usb3-streams.patch -Patch0021: 0021-w32-Fix-access-to-host-devices-regression.patch -Patch0022: 0022-memory-Provide-separate-handling-of-unassigned-io-po.patch -Patch0023: 0023-Revert-memory-Return-1-again-on-reads-from-unsigned-.patch -Patch0024: 0024-exec-check-offset_within_address_space-for-register-.patch -Patch0025: 0025-ne2000-mark-I-O-as-LITTLE_ENDIAN.patch -Patch0026: 0026-ehci-save-device-pointer-in-EHCIState.patch -Patch0027: 0027-qxl-fix-local-renderer.patch -Patch0028: 0028-pc-Initializing-ram_memory-under-Xen.patch -Patch0029: 0029-pc_q35-Initialize-Xen.patch -Patch0030: 0030-qapi-types.py-Fix-enum-struct-sizes-on-i686.patch -Patch0031: 0031-pcnet-pci-mark-I-O-and-MMIO-as-LITTLE_ENDIAN.patch -Patch0032: 0032-chardev-fix-pty_chr_timer.patch -Patch0033: 0033-kvmvapic-Catch-invalid-ROM-size.patch -Patch0034: 0034-kvmvapic-Enter-inactive-state-on-hardware-reset.patch -Patch0035: 0035-kvmvapic-Clear-also-physical-ROM-address-when-enteri.patch -Patch0036: 0036-tci-Fix-qemu-alpha-on-32-bit-hosts-wrong-assertions.patch -Patch0037: 0037-blockdev-do-not-default-cache.no-flush-to-true.patch -Patch0038: 0038-virtio-blk-do-not-relay-a-previous-driver-s-WCE-conf.patch -Patch0039: 0039-xhci-emulate-intr-endpoint-intervals-correctly.patch -Patch0040: 0040-iov-avoid-orig_len-may-be-used-unitialized-warning.patch -Patch0041: 0041-tap-Use-numbered-tap-tun-devices-on-all-BSD-OS-s.patch -Patch0042: 0042-rbd-avoid-qemu_rbd_snap_list-memory-leaks.patch -Patch0043: 0043-vmdk-fix-cluster-size-check-for-flat-extents.patch -Patch0044: 0044-piix4-disable-io-on-reset.patch -Patch0045: 0045-coroutine-add-.-configure-disable-coroutine-pool.patch -Patch0046: 0046-qemu-Adjust-qemu-wakeup.patch -Patch0047: 0047-qemu-Add-qemu-xen-logic-for-Xen-HVM-S3-resume.patch -Patch0048: 0048-scsi-Allocate-SCSITargetReq-r-buf-dynamically.patch -Patch0049: 0049-Update-VERSION-for-1.6.1-release.patch - # qemu-kvm migration compat (not for upstream, drop by Fedora 21?) -Patch0101: 0101-Fix-migration-from-qemu-kvm.patch +Patch0001: 0001-Fix-migration-from-qemu-kvm.patch # Fix crash with -M isapc -cpu Haswell (bz #986790) -Patch0102: 0102-isapc-disable-kvmvapic.patch +Patch0002: 0002-isapc-disable-kvmvapic.patch # Fix crash in lsi_soft_reset (bz #1000947) # Patches posted upstream -Patch0103: 0103-pci-do-not-export-pci_bus_reset.patch -Patch0104: 0104-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch -Patch0105: 0105-qdev-switch-reset-to-post-order.patch +Patch0003: 0003-pci-do-not-export-pci_bus_reset.patch +Patch0004: 0004-qdev-allow-both-pre-and-post-order-vists-in-qdev-wal.patch +Patch0005: 0005-qdev-switch-reset-to-post-order.patch # CVE-2013-4377: Fix crash when unplugging virtio devices (bz #1012633, # bz #1012641) # Patches posted upstream -Patch0106: 0106-virtio-bus-remove-vdev-field.patch -Patch0107: 0107-virtio-pci-remove-vdev-field.patch -Patch0108: 0108-virtio-ccw-remove-vdev-field.patch -Patch0109: 0109-virtio-bus-cleanup-plug-unplug-interface.patch -Patch0110: 0110-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch -Patch0111: 0111-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch -Patch0112: 0112-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch -Patch0113: 0113-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch -Patch0114: 0114-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch -Patch0115: 0115-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch -Patch0116: 0116-virtio-pci-add-device_unplugged-callback.patch +Patch0006: 0006-virtio-bus-remove-vdev-field.patch +Patch0007: 0007-virtio-pci-remove-vdev-field.patch +Patch0008: 0008-virtio-ccw-remove-vdev-field.patch +Patch0009: 0009-virtio-bus-cleanup-plug-unplug-interface.patch +Patch0010: 0010-virtio-blk-switch-exit-callback-to-VirtioDeviceClass.patch +Patch0011: 0011-virtio-serial-switch-exit-callback-to-VirtioDeviceCl.patch +Patch0012: 0012-virtio-net-switch-exit-callback-to-VirtioDeviceClass.patch +Patch0013: 0013-virtio-scsi-switch-exit-callback-to-VirtioDeviceClas.patch +Patch0014: 0014-virtio-balloon-switch-exit-callback-to-VirtioDeviceC.patch +Patch0015: 0015-virtio-rng-switch-exit-callback-to-VirtioDeviceClass.patch +Patch0016: 0016-virtio-pci-add-device_unplugged-callback.patch # Fix 'new snapshot' slowness after the first snap (bz #988436) # Patches queued for upstream -Patch0201: 0201-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch -Patch0202: 0202-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch +Patch0101: 0101-qcow2-Pass-discard-type-to-qcow2_discard_clusters.patch +Patch0102: 0102-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch # Fix 9pfs xattrs on kernel 3.11 (bz #1013676) # Patch posted upstream -Patch0203: 0203-hw-9pfs-Fix-errno-value-for-xattr-functions.patch +Patch0103: 0103-hw-9pfs-Fix-errno-value-for-xattr-functions.patch # Fix migration from qemu <= 1.5 # Patch posted upstream -Patch0204: 0204-Fix-pc-migration-from-qemu-1.5.patch +Patch0104: 0104-Fix-pc-migration-from-qemu-1.5.patch +# Reduce CPU usage when audio is playing (bz #1017644) +Patch0105: 0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch BuildRequires: SDL-devel BuildRequires: zlib-devel @@ -777,12 +728,18 @@ CAC emulation development files. %prep %setup -q -# Rebase to pending 1.6.1 stable +# qemu-kvm migration compat (not for upstream, drop by Fedora 21?) %patch0001 -p1 +# Fix crash with -M isapc -cpu Haswell (bz #986790) %patch0002 -p1 +# Fix crash in lsi_soft_reset (bz #1000947) +# Patches posted upstream %patch0003 -p1 %patch0004 -p1 %patch0005 -p1 +# CVE-2013-4377: Fix crash when unplugging virtio devices (bz #1012633, +# bz #1012641) +# Patches posted upstream %patch0006 -p1 %patch0007 -p1 %patch0008 -p1 @@ -794,74 +751,19 @@ CAC emulation development files. %patch0014 -p1 %patch0015 -p1 %patch0016 -p1 -%patch0017 -p1 -%patch0018 -p1 -%patch0019 -p1 -%patch0020 -p1 -%patch0021 -p1 -%patch0022 -p1 -%patch0023 -p1 -%patch0024 -p1 -%patch0025 -p1 -%patch0026 -p1 -%patch0027 -p1 -%patch0028 -p1 -%patch0029 -p1 -%patch0030 -p1 -%patch0031 -p1 -%patch0032 -p1 -%patch0033 -p1 -%patch0034 -p1 -%patch0035 -p1 -%patch0036 -p1 -%patch0037 -p1 -%patch0038 -p1 -%patch0039 -p1 -%patch0040 -p1 -%patch0041 -p1 -%patch0042 -p1 -%patch0043 -p1 -%patch0044 -p1 -%patch0045 -p1 -%patch0046 -p1 -%patch0047 -p1 -%patch0048 -p1 -%patch0049 -p1 - -# qemu-kvm migration compat (not for upstream, drop by Fedora 21?) -%patch0101 -p1 -# Fix crash with -M isapc -cpu Haswell (bz #986790) -%patch0102 -p1 -# Fix crash in lsi_soft_reset (bz #1000947) -# Patches posted upstream -%patch0103 -p1 -%patch0104 -p1 -%patch0105 -p1 -# CVE-2013-4377: Fix crash when unplugging virtio devices (bz #1012633, -# bz #1012641) -# Patches posted upstream -%patch0106 -p1 -%patch0107 -p1 -%patch0108 -p1 -%patch0109 -p1 -%patch0110 -p1 -%patch0111 -p1 -%patch0112 -p1 -%patch0113 -p1 -%patch0114 -p1 -%patch0115 -p1 -%patch0116 -p1 # Fix 'new snapshot' slowness after the first snap (bz #988436) # Patches queued for upstream -%patch0201 -p1 -%patch0202 -p1 +%patch0101 -p1 +%patch0102 -p1 # Fix 9pfs xattrs on kernel 3.11 (bz #1013676) # Patch posted upstream -%patch0203 -p1 +%patch0103 -p1 # Fix migration from qemu <= 1.5 # Patch posted upstream -%patch0204 -p1 +%patch0104 -p1 +# Reduce CPU usage when audio is playing (bz #1017644) +%patch0105 -p1 %build @@ -1127,7 +1029,6 @@ install -m 0644 %{SOURCE11} $RPM_BUILD_ROOT%{_udevdir} # Install rules to use the bridge helper with libvirt's virbr0 install -m 0644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/qemu -chmod u+s $RPM_BUILD_ROOT%{_libexecdir}/qemu-bridge-helper find $RPM_BUILD_ROOT -name '*.la' -or -name '*.a' | xargs rm -f find $RPM_BUILD_ROOT -name "libcacard.so*" -exec chmod +x \{\} \; @@ -1243,7 +1144,7 @@ getent passwd qemu >/dev/null || \ %{_mandir}/man1/qemu.1* %{_mandir}/man1/virtfs-proxy-helper.1* %{_bindir}/virtfs-proxy-helper -%{_libexecdir}/qemu-bridge-helper +%attr(4755, root, root) %{_libexecdir}/qemu-bridge-helper %config(noreplace) %{_sysconfdir}/sasl2/qemu.conf %dir %{_sysconfdir}/qemu %config(noreplace) %{_sysconfdir}/qemu/bridge.conf @@ -1570,6 +1471,13 @@ getent passwd qemu >/dev/null || \ %endif %changelog +* Tue Nov 05 2013 Cole Robinson - 2:1.6.1-1 +- Reduce CPU usage when audio is playing (bz #1017644) +- Base on qemu 1.6.1 tarball +- ksmtuned: Fix matching qemu w/o set_process_name (bz #1012604) +- ksmtuned: Fix committed_memory when no qemu running (bz #1012610) +- Make sure bridge helper is setuid (bz #1017660) + * Wed Oct 09 2013 Cole Robinson - 2:1.6.0-10 - Fix migration from qemu <= 1.5 diff --git a/sources b/sources index 4936b74..06f99b4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -f3f39308472d629aca57a255a0c91ba9 qemu-1.6.0.tar.bz2 +3a897d722457c5a895cd6ac79a28fda0 qemu-1.6.1.tar.bz2