From 76dcac38f6279c5073b1f6df54ba2a277dc437c4 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Aug 16 2013 18:20:08 +0000 Subject: Rebased to version 1.6.0 Support for live migration over RDMA TCG target for aarch64. Support for auto-convergence in live migration ("CPU stunning") The XHCI (USB 3.0) controller supports live migration. New device "nvme" provides a PCI device that implements the NVMe standard. ACPI hotplug of devices behind a PCI bridge is supported --- diff --git a/.gitignore b/.gitignore index 4ca7953..1ac9888 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ qemu-kvm-0.13.0-25fdf4a.tar.gz /qemu-1.5.0.tar.bz2 /qemu-1.5.1.tar.bz2 /qemu-1.5.2.tar.bz2 +/qemu-1.6.0.tar.bz2 diff --git a/0001-Fix-migration-from-qemu-kvm.patch b/0001-Fix-migration-from-qemu-kvm.patch new file mode 100644 index 0000000..4db56ab --- /dev/null +++ b/0001-Fix-migration-from-qemu-kvm.patch @@ -0,0 +1,212 @@ +From 846f71f534a6a026793eacb0c620f54eb30540a8 Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Fri, 16 Aug 2013 12:14:51 -0400 +Subject: [PATCH] Fix migration from qemu-kvm + +Details are in the code comments for each change. Just lumped this together +to ease patch maintenance. + +Everything except the video memory bits can likely be dropped by Fedora 21 +time frame. Need to figure out if there's anything to upstream for the +video memory bits. +--- + hw/acpi/piix4.c | 8 ++++++- + hw/display/qxl.c | 9 ++++---- + hw/i386/pc_piix.c | 61 +++++++++++++++++++++++++++++++++++++++++++++---- + hw/timer/i8254_common.c | 7 +++++- + 4 files changed, 74 insertions(+), 11 deletions(-) + +diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c +index c885690..e6c4c8b 100644 +--- a/hw/acpi/piix4.c ++++ b/hw/acpi/piix4.c +@@ -289,7 +289,13 @@ static int acpi_load_old(QEMUFile *f, void *opaque, int version_id) + static const VMStateDescription vmstate_acpi = { + .name = "piix4_pm", + .version_id = 3, +- .minimum_version_id = 3, ++ /* ++ * qemu-kvm 1.2 uses qemu.git version 3 format, but advertised as 2. ++ * This allows incoming migration from qemu-kvm, but breaks incoming ++ * migration from qemu < 1.3. ++ */ ++ //minimum_version_id = 3, ++ .minimum_version_id = 2, + .minimum_version_id_old = 1, + .load_state_old = acpi_load_old, + .post_load = vmstate_acpi_post_load, +diff --git a/hw/display/qxl.c b/hw/display/qxl.c +index c537057..7ef3eff 100644 +--- a/hw/display/qxl.c ++++ b/hw/display/qxl.c +@@ -307,16 +307,14 @@ static inline uint32_t msb_mask(uint32_t val) + return mask; + } + +-static ram_addr_t qxl_rom_size(void) ++static void check_qxl_rom_size(PCIQXLDevice *d) + { + uint32_t required_rom_size = sizeof(QXLRom) + sizeof(QXLModes) + + sizeof(qxl_modes); +- uint32_t rom_size = 8192; /* two pages */ + + required_rom_size = MAX(required_rom_size, TARGET_PAGE_SIZE); + required_rom_size = msb_mask(required_rom_size * 2 - 1); +- assert(required_rom_size <= rom_size); +- return rom_size; ++ assert(required_rom_size <= d->rom_size); + } + + static void init_qxl_rom(PCIQXLDevice *d) +@@ -1981,7 +1979,7 @@ static int qxl_init_common(PCIQXLDevice *qxl) + pci_set_byte(&config[PCI_REVISION_ID], pci_device_rev); + pci_set_byte(&config[PCI_INTERRUPT_PIN], 1); + +- qxl->rom_size = qxl_rom_size(); ++ check_qxl_rom_size(qxl); + memory_region_init_ram(&qxl->rom_bar, OBJECT(qxl), "qxl.vrom", + qxl->rom_size); + vmstate_register_ram(&qxl->rom_bar, &qxl->pci.qdev); +@@ -2309,6 +2307,7 @@ static Property qxl_properties[] = { + DEFINE_PROP_UINT32("vram64_size_mb", PCIQXLDevice, vram_size_mb, -1), + DEFINE_PROP_UINT32("vgamem_mb", PCIQXLDevice, vgamem_size_mb, 16), + DEFINE_PROP_INT32("surfaces", PCIQXLDevice, ssd.num_surfaces, 1024), ++ DEFINE_PROP_UINT32("rom_size", PCIQXLDevice, rom_size, 8192), + DEFINE_PROP_END_OF_LIST(), + }; + +diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c +index 6e1e654..4fd5b6d 100644 +--- a/hw/i386/pc_piix.c ++++ b/hw/i386/pc_piix.c +@@ -377,6 +377,24 @@ static QEMUMachine pc_i440fx_machine_v1_4 = { + DEFAULT_MACHINE_OPTIONS, + }; + ++/* ++ * Commit 038c1879a00153b14bce113315b693e8c2944fa9 changed the qxl rom ++ * size to 8192, which fixes incoming migration from qemu 1.0. However ++ * from qemu 1.2 and 1.3 had rom size 16384, so incoming migration ++ * from those versions is now broken. ++ * ++ * Add a rom_size compat property. 1.2 and 1.3 get 16384, everything ++ * else is 8192. ++ * ++ * This isn't actually fool proof, since rom_size can be dependent on ++ * the version of spice qemu is built against: ++ * ++ * https://lists.gnu.org/archive/html/qemu-devel/2013-02/msg03154.html ++ * ++ * However these sizes match what native Fedora packages get, so it's ++ * good enough for now. ++ */ ++ + #define PC_COMPAT_1_3 \ + PC_COMPAT_1_4, \ + {\ +@@ -395,8 +413,17 @@ static QEMUMachine pc_i440fx_machine_v1_4 = { + .driver = "e1000",\ + .property = "autonegotiation",\ + .value = "off",\ ++ },{ \ ++ .driver = "qxl", \ ++ .property = "rom_size", \ ++ .value = stringify(16384), \ ++ },{\ ++ .driver = "qxl-vga", \ ++ .property = "rom_size", \ ++ .value = stringify(16384), \ + } + ++ + static QEMUMachine pc_machine_v1_3 = { + .name = "pc-1.3", + .desc = "Standard PC", +@@ -409,6 +436,19 @@ static QEMUMachine pc_machine_v1_3 = { + DEFAULT_MACHINE_OPTIONS, + }; + ++ ++/* ++ * https://lists.gnu.org/archive/html/qemu-devel/2013-01/msg02540.html ++ * ++ * qemu-kvm defaulted to vgamem=16MB since at least 0.15, while qemu used ++ * 8MB. For qemu 1.2, the default was changed to 16MB for all devices ++ * except cirrus. ++ * ++ * Make sure cirrus uses 16MB for <= pc-1.2 (the qemu-kvm merge), ++ * and 16MB always for all others. This will break incoming qemu ++ * migration for qemu < 1.3. ++ */ ++ + #define PC_COMPAT_1_2 \ + PC_COMPAT_1_3,\ + {\ +@@ -432,6 +472,10 @@ static QEMUMachine pc_machine_v1_3 = { + .property = "revision",\ + .value = stringify(3),\ + },{\ ++ .driver = "cirrus-vga",\ ++ .property = "vgamem_mb",\ ++ .value = stringify(16),\ ++ },{\ + .driver = "VGA",\ + .property = "mmio",\ + .value = "off",\ +@@ -462,25 +506,34 @@ static QEMUMachine pc_machine_v1_2 = { + },{\ + .driver = "VGA",\ + .property = "vgamem_mb",\ +- .value = stringify(8),\ ++ .value = stringify(16),\ + },{\ + .driver = "vmware-svga",\ + .property = "vgamem_mb",\ +- .value = stringify(8),\ ++ .value = stringify(16),\ + },{\ + .driver = "qxl-vga",\ + .property = "vgamem_mb",\ +- .value = stringify(8),\ ++ .value = stringify(16),\ + },{\ + .driver = "qxl",\ + .property = "vgamem_mb",\ +- .value = stringify(8),\ ++ .value = stringify(16),\ + },{\ + .driver = "virtio-blk-pci",\ + .property = "config-wce",\ + .value = "off",\ ++ },{ \ ++ .driver = "qxl", \ ++ .property = "rom_size", \ ++ .value = stringify(8192), \ ++ },{\ ++ .driver = "qxl-vga", \ ++ .property = "rom_size", \ ++ .value = stringify(8192), \ + } + ++ + static QEMUMachine pc_machine_v1_1 = { + .name = "pc-1.1", + .desc = "Standard PC", +diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c +index 4e5bf0b..cbc00a0 100644 +--- a/hw/timer/i8254_common.c ++++ b/hw/timer/i8254_common.c +@@ -267,7 +267,12 @@ static const VMStateDescription vmstate_pit_common = { + .pre_save = pit_dispatch_pre_save, + .post_load = pit_dispatch_post_load, + .fields = (VMStateField[]) { +- VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3), ++ /* qemu-kvm version_id=2 had 'flags' here which is equivalent ++ * This fixes incoming migration from qemu-kvm 1.0, but breaks ++ * incoming migration from qemu < 1.1 ++ */ ++ //VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3), ++ VMSTATE_UINT32(channels[0].irq_disabled, PITCommonState), + VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2, + vmstate_pit_channel, PITChannelState), + VMSTATE_INT64(channels[0].next_transition_time, diff --git a/0001-configure-Add-enable-migration-from-qemu-kvm.patch b/0001-configure-Add-enable-migration-from-qemu-kvm.patch deleted file mode 100644 index 38af8b0..0000000 --- a/0001-configure-Add-enable-migration-from-qemu-kvm.patch +++ /dev/null @@ -1,64 +0,0 @@ -From e49e68d5b504f22919c6134e3a06d3838e872d2f Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 19 Feb 2013 14:39:05 -0500 -Subject: [PATCH] configure: Add --enable-migration-from-qemu-kvm - -This switch will turn on all the migration compat bits needed to -perform migration from qemu-kvm to qemu. It's just a stub for now. - -This compat will break incoming migration from qemu < 1.3, but for -distros where qemu-kvm was the only shipped package for years it's -not a big loss (and I don't know any way to avoid it). ---- - configure | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/configure b/configure -index eb74510..f558a21 100755 ---- a/configure -+++ b/configure -@@ -179,6 +179,7 @@ xfs="" - vhost_net="no" - vhost_scsi="no" - kvm="no" -+migrate_from_kvm="no" - gprof="no" - debug_tcg="no" - debug="no" -@@ -776,6 +777,8 @@ for opt do - ;; - --enable-kvm) kvm="yes" - ;; -+ --enable-migration-from-qemu-kvm) migrate_from_kvm="yes" -+ ;; - --disable-tcg-interpreter) tcg_interpreter="no" - ;; - --enable-tcg-interpreter) tcg_interpreter="yes" -@@ -1135,6 +1138,9 @@ echo " --enable-bluez enable bluez stack connectivity" - echo " --disable-slirp disable SLIRP userspace network connectivity" - echo " --disable-kvm disable KVM acceleration support" - echo " --enable-kvm enable KVM acceleration support" -+echo " --enable-migration-from-qemu-kvm Allow migration from qemu-kvm." -+echo " This will break migration from " -+echo " qemu < 1.3 in most cases" - echo " --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)" - echo " --disable-nptl disable usermode NPTL support" - echo " --enable-nptl enable usermode NPTL support" -@@ -3553,6 +3559,7 @@ echo "Linux AIO support $linux_aio" - echo "ATTR/XATTR support $attr" - echo "Install blobs $blobs" - echo "KVM support $kvm" -+echo "Migrate from qemu-kvm $migrate_from_kvm" - echo "TCG interpreter $tcg_interpreter" - echo "fdt support $fdt" - echo "preadv support $preadv" -@@ -3862,6 +3869,9 @@ fi - if test "$signalfd" = "yes" ; then - echo "CONFIG_SIGNALFD=y" >> $config_host_mak - fi -+if test "$migrate_from_kvm" = "yes"; then -+ echo "CONFIG_MIGRATE_FROM_QEMU_KVM=y" >> $config_host_mak -+fi - if test "$tcg_interpreter" = "yes" ; then - echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak - fi diff --git a/0002-acpi_piix4-Drop-minimum_version_id-to-handle-qemu-kv.patch b/0002-acpi_piix4-Drop-minimum_version_id-to-handle-qemu-kv.patch deleted file mode 100644 index 3639e60..0000000 --- a/0002-acpi_piix4-Drop-minimum_version_id-to-handle-qemu-kv.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 28886fb9f7d908bf0f2406dc6f39ee6fe9040cfd Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 19 Feb 2013 14:44:49 -0500 -Subject: [PATCH] acpi_piix4: Drop minimum_version_id to handle qemu-kvm - migration - -qemu-kvm 1.2 advertised version_id=2, but it was not the same -format as qemu.git version_id=2. - -commit b0b873a07872f7ab7f66f259c73fb9dd42aa66a9 added the qemu-kvm -format to qemu.git, but was forced to call it version_id=3, and -bumped minimum_version_id to 3. This breaks incoming migration from -qemu-kvm. - -If --enable-migration-from-qemu-kvm is enabled, drop minimum_version_id -to 2. Migration from qemu-kvm version_id=2 and qemu 1.3+ version_id=3 -works, but migration from qemu < 1.3 is broken. ---- - hw/acpi/piix4.c | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c -index c4af1cc..95d227d 100644 ---- a/hw/acpi/piix4.c -+++ b/hw/acpi/piix4.c -@@ -269,16 +269,19 @@ static int acpi_load_old(QEMUFile *f, void *opaque, int version_id) - return ret; - } - --/* qemu-kvm 1.2 uses version 3 but advertised as 2 -- * To support incoming qemu-kvm 1.2 migration, change version_id -- * and minimum_version_id to 2 below (which breaks migration from -- * qemu 1.2). -- * -- */ - static const VMStateDescription vmstate_acpi = { - .name = "piix4_pm", - .version_id = 3, -+#ifdef CONFIG_MIGRATE_FROM_QEMU_KVM -+ /* -+ * qemu-kvm 1.2 uses qemu.git version 3 format, but advertised as 2. -+ * This allows incoming migration from qemu-kvm, but breaks incoming -+ * migration from qemu < 1.3. -+ */ -+ .minimum_version_id = 2, -+#else - .minimum_version_id = 3, -+#endif - .minimum_version_id_old = 1, - .load_state_old = acpi_load_old, - .post_load = vmstate_acpi_post_load, diff --git a/0003-i8254-Fix-migration-from-qemu-kvm-1.1.patch b/0003-i8254-Fix-migration-from-qemu-kvm-1.1.patch deleted file mode 100644 index a341878..0000000 --- a/0003-i8254-Fix-migration-from-qemu-kvm-1.1.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 08aac015d8ba0228dc4277dd7163f014b20c1ca5 Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 19 Feb 2013 15:04:59 -0500 -Subject: [PATCH] i8254: Fix migration from qemu-kvm < 1.1 - -qemu-kvm commit 81bdec908fb2be0ccaff1d4ee67956c509e440ad did this, -but the logic can't be carried unconditionally in qemu.git without -breaking migration from qemu < 1.1. - -Conditionalize it with --enable-migrate-from-qemu-kvm ---- - hw/timer/i8254_common.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c -index 5342df4..e74afe3 100644 ---- a/hw/timer/i8254_common.c -+++ b/hw/timer/i8254_common.c -@@ -275,7 +275,15 @@ static const VMStateDescription vmstate_pit_common = { - .pre_save = pit_dispatch_pre_save, - .post_load = pit_dispatch_post_load, - .fields = (VMStateField[]) { -+#ifdef CONFIG_MIGRATE_FROM_QEMU_KVM -+ /* qemu-kvm version_id=2 had 'flags' here which is equivalent -+ * This fixes incoming migration from qemu-kvm 1.0, but breaks -+ * incoming migration from qemu < 1.1 -+ */ -+ VMSTATE_UINT32(channels[0].irq_disabled, PITCommonState), -+#else - VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3), -+#endif - VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2, - vmstate_pit_channel, PITChannelState), - VMSTATE_INT64(channels[0].next_transition_time, diff --git a/0004-pc_piix-Add-compat-handling-for-qemu-kvm-VGA-mem-siz.patch b/0004-pc_piix-Add-compat-handling-for-qemu-kvm-VGA-mem-siz.patch deleted file mode 100644 index 3b71119..0000000 --- a/0004-pc_piix-Add-compat-handling-for-qemu-kvm-VGA-mem-siz.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 9def7a9ed113f7b40e868f663bfaa4f9717219ae Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 19 Feb 2013 15:35:40 -0500 -Subject: [PATCH] pc_piix: Add compat handling for qemu-kvm VGA mem size - -Paolo outlines this here: - -https://lists.gnu.org/archive/html/qemu-devel/2013-01/msg02540.html - -qemu-kvm defaulted to vgamem=16MB since at least 0.15, while qemu used -8MB. For qemu 1.2, the default was changed to 16MB for all devices -except cirrus. - -If --enable-migration-from-qemu-kvm is specified, make sure cirrus -uses 16MB for <= pc-1.2 (the qemu-kvm merge), and 16MB always for -all others. This will break incoming qemu migration for qemu < 1.3. ---- - hw/i386/pc_piix.c | 20 ++++++++++++++++---- - 1 file changed, 16 insertions(+), 4 deletions(-) - -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 06416ce..0787f38 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -383,6 +383,13 @@ static QEMUMachine pc_machine_v1_3 = { - DEFAULT_MACHINE_OPTIONS, - }; - -+#ifdef CONFIG_MIGRATE_FROM_QEMU_KVM -+/* qemu-kvm defaulted to 16MB video memory since 0.15 at least. */ -+# define OLD_VGA_MEM stringify(16) -+#else -+# define OLD_VGA_MEM stringify(8) -+#endif -+ - #define PC_COMPAT_1_2 \ - PC_COMPAT_1_3,\ - {\ -@@ -406,6 +413,10 @@ static QEMUMachine pc_machine_v1_3 = { - .property = "revision",\ - .value = stringify(3),\ - },{\ -+ .driver = "cirrus-vga",\ -+ .property = "vgamem_mb",\ -+ .value = OLD_VGA_MEM,\ -+ },{\ - .driver = "VGA",\ - .property = "mmio",\ - .value = "off",\ -@@ -423,6 +434,7 @@ static QEMUMachine pc_machine_v1_2 = { - DEFAULT_MACHINE_OPTIONS, - }; - -+ - #define PC_COMPAT_1_1 \ - PC_COMPAT_1_2,\ - {\ -@@ -436,19 +448,19 @@ static QEMUMachine pc_machine_v1_2 = { - },{\ - .driver = "VGA",\ - .property = "vgamem_mb",\ -- .value = stringify(8),\ -+ .value = OLD_VGA_MEM,\ - },{\ - .driver = "vmware-svga",\ - .property = "vgamem_mb",\ -- .value = stringify(8),\ -+ .value = OLD_VGA_MEM,\ - },{\ - .driver = "qxl-vga",\ - .property = "vgamem_mb",\ -- .value = stringify(8),\ -+ .value = OLD_VGA_MEM,\ - },{\ - .driver = "qxl",\ - .property = "vgamem_mb",\ -- .value = stringify(8),\ -+ .value = OLD_VGA_MEM,\ - },{\ - .driver = "virtio-blk-pci",\ - .property = "config-wce",\ diff --git a/0005-qxl-Add-rom_size-compat-property-fix-migration-from-.patch b/0005-qxl-Add-rom_size-compat-property-fix-migration-from-.patch deleted file mode 100644 index 3616869..0000000 --- a/0005-qxl-Add-rom_size-compat-property-fix-migration-from-.patch +++ /dev/null @@ -1,99 +0,0 @@ -From dbeb3f1e3282bef66b459e3197b2078c24ad7daf Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Tue, 19 Feb 2013 16:19:02 -0500 -Subject: [PATCH] qxl: Add rom_size compat property, fix migration from 1.2 - -Commit 038c1879a00153b14bce113315b693e8c2944fa9 changed the qxl rom -size to 8192, which fixes incoming migration from qemu 1.0. However -from qemu 1.2 and 1.3 had rom size 16384, so incoming migration -from those versions is now broken. - -Add a rom_size compat property. 1.2 and 1.3 get 16384, everything -else is 8192. - -This isn't actually fool proof, since rom_size can be dependent on -the version of spice qemu is built against: - -https://lists.gnu.org/archive/html/qemu-devel/2013-02/msg03154.html - -However these sizes match what native Fedora packages get, so it's -good enough for now. ---- - hw/display/qxl.c | 9 ++++----- - hw/i386/pc_piix.c | 16 ++++++++++++++++ - 2 files changed, 20 insertions(+), 5 deletions(-) - -diff --git a/hw/display/qxl.c b/hw/display/qxl.c -index c475cb1..74f07c0 100644 ---- a/hw/display/qxl.c -+++ b/hw/display/qxl.c -@@ -306,16 +306,14 @@ static inline uint32_t msb_mask(uint32_t val) - return mask; - } - --static ram_addr_t qxl_rom_size(void) -+static void check_qxl_rom_size(PCIQXLDevice *d) - { - uint32_t required_rom_size = sizeof(QXLRom) + sizeof(QXLModes) + - sizeof(qxl_modes); -- uint32_t rom_size = 8192; /* two pages */ - - required_rom_size = MAX(required_rom_size, TARGET_PAGE_SIZE); - required_rom_size = msb_mask(required_rom_size * 2 - 1); -- assert(required_rom_size <= rom_size); -- return rom_size; -+ assert(required_rom_size <= d->rom_size); - } - - static void init_qxl_rom(PCIQXLDevice *d) -@@ -1979,7 +1977,7 @@ static int qxl_init_common(PCIQXLDevice *qxl) - pci_set_byte(&config[PCI_REVISION_ID], pci_device_rev); - pci_set_byte(&config[PCI_INTERRUPT_PIN], 1); - -- qxl->rom_size = qxl_rom_size(); -+ check_qxl_rom_size(qxl); - memory_region_init_ram(&qxl->rom_bar, "qxl.vrom", qxl->rom_size); - vmstate_register_ram(&qxl->rom_bar, &qxl->pci.qdev); - init_qxl_rom(qxl); -@@ -2302,6 +2300,7 @@ static Property qxl_properties[] = { - DEFINE_PROP_UINT32("vram64_size_mb", PCIQXLDevice, vram_size_mb, -1), - DEFINE_PROP_UINT32("vgamem_mb", PCIQXLDevice, vgamem_size_mb, 16), - DEFINE_PROP_INT32("surfaces", PCIQXLDevice, ssd.num_surfaces, 1024), -+ DEFINE_PROP_UINT32("rom_size", PCIQXLDevice, rom_size, 8192), - DEFINE_PROP_END_OF_LIST(), - }; - -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 0787f38..e26c93d 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -369,6 +369,14 @@ static QEMUMachine pc_i440fx_machine_v1_4 = { - .driver = "e1000",\ - .property = "autonegotiation",\ - .value = "off",\ -+ },{ \ -+ .driver = "qxl", \ -+ .property = "rom_size", \ -+ .value = stringify(16384), \ -+ },{\ -+ .driver = "qxl-vga", \ -+ .property = "rom_size", \ -+ .value = stringify(16384), \ - } - - static QEMUMachine pc_machine_v1_3 = { -@@ -465,6 +473,14 @@ static QEMUMachine pc_machine_v1_2 = { - .driver = "virtio-blk-pci",\ - .property = "config-wce",\ - .value = "off",\ -+ },{ \ -+ .driver = "qxl", \ -+ .property = "rom_size", \ -+ .value = stringify(8192), \ -+ },{\ -+ .driver = "qxl-vga", \ -+ .property = "rom_size", \ -+ .value = stringify(8192), \ - } - - static QEMUMachine pc_machine_v1_1 = { diff --git a/0006-configure-dtc-Probe-for-libfdt_env.h.patch b/0006-configure-dtc-Probe-for-libfdt_env.h.patch deleted file mode 100644 index 664453e..0000000 --- a/0006-configure-dtc-Probe-for-libfdt_env.h.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 12f9c64a068d3c5e67886dde367ccacde48fbbbd Mon Sep 17 00:00:00 2001 -From: Peter Crosthwaite -Date: Mon, 27 May 2013 14:20:57 +1000 -Subject: [PATCH] configure: dtc: Probe for libfdt_env.h - -Currently QEMU provides a local clone of the file libfdt_env.h in -/include. This file is supposed to come with the libfdt package and is -only needed for broken installs of libfdt. Now that we have submodule -dtc, just ignore these broken installs and prompt for the dtc submodule -install instead. QEMU's local libfdt_env.h is removed accordingly. - -Manifests as a bug when building QEMU with modern libfdt. The new -version of libfdt does not compile when QEMUs libfdt_env.h takes -precedence over the hosts. - -Signed-off-by: Peter Crosthwaite -Reviewed-by: Peter Maydell -Acked-by: David Gibson -Signed-off-by: Kim Phillips -Acked-by: Paolo Bonzini -Message-id: 9b6a3a52e3f46cfbc1ded9ab56385ec045e46705.1369628289.git.peter.crosthwaite@xilinx.com -Signed-off-by: Peter Maydell -(cherry picked from commit 96ce65457690561417ae8e6f0e85f3c6f135018b) ---- - configure | 2 ++ - include/libfdt_env.h | 36 ------------------------------------ - 2 files changed, 2 insertions(+), 36 deletions(-) - delete mode 100644 include/libfdt_env.h - -diff --git a/configure b/configure -index f558a21..ed09648 100755 ---- a/configure -+++ b/configure -@@ -2525,7 +2525,9 @@ fi - # fdt probe - if test "$fdt" != "no" ; then - fdt_libs="-lfdt" -+ # explicitly check for libfdt_env.h as it is missing in some stable installs - cat > $TMPC << EOF -+#include - int main(void) { return 0; } - EOF - if compile_prog "" "$fdt_libs" ; then -diff --git a/include/libfdt_env.h b/include/libfdt_env.h -deleted file mode 100644 -index 3667d4c..0000000 ---- a/include/libfdt_env.h -+++ /dev/null -@@ -1,36 +0,0 @@ --/* -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License, version 2, as -- * published by the Free Software Foundation. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, see . -- * -- * Copyright IBM Corp. 2008 -- * Authors: Hollis Blanchard -- * -- */ -- --#ifndef _LIBFDT_ENV_H --#define _LIBFDT_ENV_H -- --#include "qemu/bswap.h" -- --#ifdef HOST_WORDS_BIGENDIAN --#define fdt32_to_cpu(x) (x) --#define cpu_to_fdt32(x) (x) --#define fdt64_to_cpu(x) (x) --#define cpu_to_fdt64(x) (x) --#else --#define fdt32_to_cpu(x) bswap32(x) --#define cpu_to_fdt32(x) bswap32(x) --#define fdt64_to_cpu(x) bswap64(x) --#define cpu_to_fdt64(x) bswap64(x) --#endif -- --#endif /* _LIBFDT_ENV_H */ diff --git a/0007-spice-fix-display-initialization.patch b/0007-spice-fix-display-initialization.patch deleted file mode 100644 index 49530b5..0000000 --- a/0007-spice-fix-display-initialization.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 49c090ab950547cb807e90866439072a191513d1 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Tue, 23 Jul 2013 13:55:43 +0200 -Subject: [PATCH] spice: fix display initialization - -Spice has two display interface implementations: One integrated into -the qxl graphics card, and one generic which can operate with every -qemu-emulated graphics card. - -The generic one is activated in case spice is used without qxl. The -logic for that only caught the "-vga qxl" case, "-device qxl-vga" goes -unnoticed. Fix that by adding a check in the spice interface -registration so we'll notice the qxl card no matter how it is created. - -https://bugzilla.redhat.com/show_bug.cgi?id=981094 - -Signed-off-by: Gerd Hoffmann ---- - include/sysemu/sysemu.h | 1 - - include/ui/qemu-spice.h | 2 ++ - ui/spice-core.c | 5 +++++ - vl.c | 2 +- - 4 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h -index 2fb71af..8c8a36f 100644 ---- a/include/sysemu/sysemu.h -+++ b/include/sysemu/sysemu.h -@@ -103,7 +103,6 @@ typedef enum { - - extern int vga_interface_type; - #define xenfb_enabled (vga_interface_type == VGA_XENFB) --#define qxl_enabled (vga_interface_type == VGA_QXL) - - extern int graphic_width; - extern int graphic_height; -diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h -index eba6d77..c6c756b 100644 ---- a/include/ui/qemu-spice.h -+++ b/include/ui/qemu-spice.h -@@ -27,6 +27,7 @@ - #include "monitor/monitor.h" - - extern int using_spice; -+extern int spice_displays; - - void qemu_spice_init(void); - void qemu_spice_input_init(void); -@@ -57,6 +58,7 @@ static inline CharDriverState *qemu_chr_open_spice_port(const char *name) - #include "monitor/monitor.h" - - #define using_spice 0 -+#define spice_displays 0 - static inline int qemu_spice_set_passwd(const char *passwd, - bool fail_if_connected, - bool disconnect_if_connected) -diff --git a/ui/spice-core.c b/ui/spice-core.c -index bcc4199..c8337ab 100644 ---- a/ui/spice-core.c -+++ b/ui/spice-core.c -@@ -48,6 +48,7 @@ static char *auth_passwd; - static time_t auth_expires = TIME_MAX; - static int spice_migration_completed; - int using_spice = 0; -+int spice_displays; - - static QemuThread me; - -@@ -823,6 +824,10 @@ int qemu_spice_add_interface(SpiceBaseInstance *sin) - qemu_add_vm_change_state_handler(vm_change_state_handler, NULL); - } - -+ if (strcmp(sin->sif->type, SPICE_INTERFACE_QXL) == 0) { -+ spice_displays++; -+ } -+ - return spice_server_add_interface(spice_server, sin); - } - -diff --git a/vl.c b/vl.c -index efb073f..3559f76 100644 ---- a/vl.c -+++ b/vl.c -@@ -4374,7 +4374,7 @@ int main(int argc, char **argv, char **envp) - } - #endif - #ifdef CONFIG_SPICE -- if (using_spice && !qxl_enabled) { -+ if (using_spice && !spice_displays) { - qemu_spice_display_init(ds); - } - #endif diff --git a/qemu.spec b/qemu.spec index 749171a..6839775 100644 --- a/qemu.spec +++ b/qemu.spec @@ -139,8 +139,8 @@ Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 1.5.2 -Release: 4%{?dist} +Version: 1.6.0 +Release: 1%{?dist} Epoch: 2 License: GPLv2+ and LGPLv2+ and BSD Group: Development/Tools @@ -181,18 +181,8 @@ Source12: bridge.conf # qemu-kvm back compat wrapper Source13: qemu-kvm.sh -# qemu-kvm migration compat (posted upstream) -Patch0001: 0001-configure-Add-enable-migration-from-qemu-kvm.patch -Patch0002: 0002-acpi_piix4-Drop-minimum_version_id-to-handle-qemu-kv.patch -Patch0003: 0003-i8254-Fix-migration-from-qemu-kvm-1.1.patch -Patch0004: 0004-pc_piix-Add-compat-handling-for-qemu-kvm-VGA-mem-siz.patch -# Fix migration w/ qxl from qemu-kvm 1.2 (solution pending upstream) -Patch0005: 0005-qxl-Add-rom_size-compat-property-fix-migration-from-.patch -# Fix build with rawhide libfdt -Patch0006: 0006-configure-dtc-Probe-for-libfdt_env.h.patch -# Fix mouse display with spice and latest libvirt (bz #981094) -# (patch posted upstream but not applied yet) -Patch0007: 0007-spice-fix-display-initialization.patch +# qemu-kvm migration compat (not for upstream, drop by Fedora 21?) +Patch0001: 0001-Fix-migration-from-qemu-kvm.patch BuildRequires: SDL-devel BuildRequires: zlib-devel @@ -221,7 +211,7 @@ BuildRequires: spice-protocol >= 0.12.2 BuildRequires: spice-server-devel >= 0.12.0 %endif %if 0%{?have_seccomp:1} -BuildRequires: libseccomp-devel >= 1.0.0 +BuildRequires: libseccomp-devel >= 2.1.0 %endif # For network block driver BuildRequires: libcurl-devel @@ -272,7 +262,8 @@ BuildRequires: vte3-devel %endif # GTK translations BuildRequires: gettext - +# RDMA migration +BuildRequires: librdmacm-devel %if 0%{?user:1} Requires: %{name}-%{user} = %{epoch}:%{version}-%{release} @@ -681,18 +672,8 @@ CAC emulation development files. %prep %setup -q -# qemu-kvm migration compat (posted upstream) +# qemu-kvm migration compat (not for upstream, drop by Fedora 21?) %patch0001 -p1 -%patch0002 -p1 -%patch0003 -p1 -%patch0004 -p1 -# Fix migration w/ qxl from qemu-kvm 1.2 (solution pending upstream) -%patch0005 -p1 -# Fix build with rawhide libfdt -%patch0006 -p1 -# Fix mouse display with spice and latest libvirt (bz #981094) -# (patch posted upstream but not applied yet) -%patch0007 -p1 %build @@ -744,7 +725,6 @@ dobuild() { --disable-werror \ --disable-xen \ --enable-kvm \ - --enable-migration-from-qemu-kvm \ %if 0%{?have_spice:1} --enable-spice \ %endif @@ -1052,6 +1032,7 @@ getent passwd qemu >/dev/null || \ %doc %{qemudocdir}/LICENSE %dir %{_datadir}/%{name}/ %{_datadir}/%{name}/qemu-icon.bmp +%{_datadir}/%{name}/qemu_logo_no_text.svg %{_datadir}/%{name}/keymaps/ %{_mandir}/man1/qemu.1* %{_mandir}/man1/virtfs-proxy-helper.1* @@ -1383,6 +1364,16 @@ getent passwd qemu >/dev/null || \ %endif %changelog +* Fri Aug 16 2013 Cole Robinson - 2:1.6.0-1 +- Rebased to version 1.6.0 +- Support for live migration over RDMA +- TCG target for aarch64. +- Support for auto-convergence in live migration ("CPU stunning") +- The XHCI (USB 3.0) controller supports live migration. +- New device "nvme" provides a PCI device that implements the NVMe + standard. +- ACPI hotplug of devices behind a PCI bridge is supported + * Sun Aug 04 2013 Dennis Gilmore - 2:1.5.2-4 - re-enable spice support diff --git a/sources b/sources index 38a3273..4936b74 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -04b94189ba587b3280713ded3b7f959a qemu-1.5.2.tar.bz2 +f3f39308472d629aca57a255a0c91ba9 qemu-1.6.0.tar.bz2