From aff97e014626783be83f501fc5e7cfa4ed3dd3c9 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 23 Sep 2014 17:27:47 -0400 Subject: [PATCH] Fix specifying CPU for qemu aarch64 --- ...-build-wireshark-on-f21-non-upstream.patch | 24 - ...008-spec-Fix-preun-script-for-daemon.patch | 6 +- ...uxSetTapFDLabel-Temporarily-revert-t.patch | 2 +- ...nf-Extend-loader-and-introduce-nvram.patch | 2 +- ...-Implement-extended-loader-and-nvram.patch | 2 +- ...emu-Automatically-create-NVRAM-store.patch | 8 +- ....patch => 0013-nvram-Fix-permissions.patch | 6 +- ...nUndefineFlags-Allow-NVRAM-unlinking.patch | 2 +- ...ate-loader-example-to-match-the-rest.patch | 2 +- ...16-domaincaps-Expose-UEFI-capability.patch | 2 +- ...s-Change-virQEMUCapsFillDomainCaps-s.patch | 2 +- ...Expose-UEFI-binary-path-if-it-exists.patch | 2 +- ...un-cleanly-on-systems-missing-OVMF-f.patch | 2 +- ...ec-Re-run-autotools-for-ovmf-patches.patch | 22 + ...emu_command-Split-qemuBuildCpuArgStr.patch | 291 ++++++++++ ...n-t-compare-CPU-against-host-for-TCG.patch | 536 ++++++++++++++++++ libvirt.spec | 52 +- 17 files changed, 896 insertions(+), 67 deletions(-) delete mode 100644 0008-spec-Don-t-build-wireshark-on-f21-non-upstream.patch rename 0009-spec-Fix-preun-script-for-daemon.patch => 0008-spec-Fix-preun-script-for-daemon.patch (88%) rename 0010-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch => 0009-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch (98%) rename 0011-conf-Extend-loader-and-introduce-nvram.patch => 0010-conf-Extend-loader-and-introduce-nvram.patch (99%) rename 0012-qemu-Implement-extended-loader-and-nvram.patch => 0011-qemu-Implement-extended-loader-and-nvram.patch (99%) rename 0013-qemu-Automatically-create-NVRAM-store.patch => 0012-qemu-Automatically-create-NVRAM-store.patch (99%) rename 0014-nvram-Fix-permissions.patch => 0013-nvram-Fix-permissions.patch (95%) rename 0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch => 0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch (99%) rename 0016-formatdomain-Update-loader-example-to-match-the-rest.patch => 0015-formatdomain-Update-loader-example-to-match-the-rest.patch (95%) rename 0017-domaincaps-Expose-UEFI-capability.patch => 0016-domaincaps-Expose-UEFI-capability.patch (99%) rename 0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch => 0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch (99%) rename 0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch => 0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch (99%) rename 0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch => 0019-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch (96%) create mode 100644 0020-spec-Re-run-autotools-for-ovmf-patches.patch create mode 100644 0101-qemu_command-Split-qemuBuildCpuArgStr.patch create mode 100644 0102-qemu-Don-t-compare-CPU-against-host-for-TCG.patch diff --git a/0008-spec-Don-t-build-wireshark-on-f21-non-upstream.patch b/0008-spec-Don-t-build-wireshark-on-f21-non-upstream.patch deleted file mode 100644 index af15af4..0000000 --- a/0008-spec-Don-t-build-wireshark-on-f21-non-upstream.patch +++ /dev/null @@ -1,24 +0,0 @@ -From d437ccd8fef17c2bb119e98a034bdc56ff9425b2 Mon Sep 17 00:00:00 2001 -From: Cole Robinson -Date: Mon, 15 Sep 2014 14:49:35 -0400 -Subject: [PATCH] spec: Don't build wireshark on f21 (non upstream) - -wireshark bug: https://bugzilla.redhat.com/show_bug.cgi?id=1129419 ---- - libvirt.spec.in | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/libvirt.spec.in b/libvirt.spec.in -index 0741c73..7d8748d 100644 ---- a/libvirt.spec.in -+++ b/libvirt.spec.in -@@ -267,6 +267,9 @@ - %if 0%{?fedora} >= 21 - %define with_wireshark 0%{!?_without_wireshark:1} - %endif -+# Except this is presently busted on F21/rawhide with wireshark 1.12.0 -+# https://bugzilla.redhat.com/show_bug.cgi?id=1129419 -+%define with_wireshark 0 - - # Disable some drivers when building without libvirt daemon. - # The logic is the same as in configure.ac diff --git a/0009-spec-Fix-preun-script-for-daemon.patch b/0008-spec-Fix-preun-script-for-daemon.patch similarity index 88% rename from 0009-spec-Fix-preun-script-for-daemon.patch rename to 0008-spec-Fix-preun-script-for-daemon.patch index ec9d1c7..24cf0be 100644 --- a/0009-spec-Fix-preun-script-for-daemon.patch +++ b/0008-spec-Fix-preun-script-for-daemon.patch @@ -1,4 +1,4 @@ -From abb9c206877a937c2a509ec534c190b27c0b0e55 Mon Sep 17 00:00:00 2001 +From 3dfb3db2950f57f2a2e0330cd480d7880d314729 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Wed, 3 Sep 2014 10:51:14 +0200 Subject: [PATCH] spec: Fix preun script for daemon @@ -14,10 +14,10 @@ Signed-off-by: Jiri Denemark 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in -index 7d8748d..6129f00 100644 +index 0741c73..f408c64 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in -@@ -1680,11 +1680,7 @@ fi +@@ -1677,11 +1677,7 @@ fi %preun daemon %if %{with_systemd} %if %{with_systemd_macros} diff --git a/0010-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch b/0009-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch similarity index 98% rename from 0010-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch rename to 0009-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch index d83e534..fb4978c 100644 --- a/0010-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch +++ b/0009-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch @@ -1,4 +1,4 @@ -From c414cb524bdbc3555a5332fe75b40f8cf3ded0f4 Mon Sep 17 00:00:00 2001 +From 3c75dc1ed9a32fff16c84f60536ee21ff8e9e19f Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 18 Sep 2014 15:17:29 +0200 Subject: [PATCH] virSecuritySELinuxSetTapFDLabel: Temporarily revert to old diff --git a/0011-conf-Extend-loader-and-introduce-nvram.patch b/0010-conf-Extend-loader-and-introduce-nvram.patch similarity index 99% rename from 0011-conf-Extend-loader-and-introduce-nvram.patch rename to 0010-conf-Extend-loader-and-introduce-nvram.patch index 82bd6cd..a574efd 100644 --- a/0011-conf-Extend-loader-and-introduce-nvram.patch +++ b/0010-conf-Extend-loader-and-introduce-nvram.patch @@ -1,4 +1,4 @@ -From 589e1c627bcfe2d8f26c6cb9ea0c68e9b902a931 Mon Sep 17 00:00:00 2001 +From 56225e3b45987f782ffe50986b4aa86b9b3ca461 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 6 Aug 2014 13:18:53 +0200 Subject: [PATCH] conf: Extend and introduce diff --git a/0012-qemu-Implement-extended-loader-and-nvram.patch b/0011-qemu-Implement-extended-loader-and-nvram.patch similarity index 99% rename from 0012-qemu-Implement-extended-loader-and-nvram.patch rename to 0011-qemu-Implement-extended-loader-and-nvram.patch index c5e57f3..5b108cc 100644 --- a/0012-qemu-Implement-extended-loader-and-nvram.patch +++ b/0011-qemu-Implement-extended-loader-and-nvram.patch @@ -1,4 +1,4 @@ -From ac0859aae7162255848effdc560368266845dfce Mon Sep 17 00:00:00 2001 +From b1a7618b73c8463dba00e6afe252b6c05fa3d89c Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 7 Aug 2014 13:50:00 +0200 Subject: [PATCH] qemu: Implement extended loader and nvram diff --git a/0013-qemu-Automatically-create-NVRAM-store.patch b/0012-qemu-Automatically-create-NVRAM-store.patch similarity index 99% rename from 0013-qemu-Automatically-create-NVRAM-store.patch rename to 0012-qemu-Automatically-create-NVRAM-store.patch index 21ca6ff..083b364 100644 --- a/0013-qemu-Automatically-create-NVRAM-store.patch +++ b/0012-qemu-Automatically-create-NVRAM-store.patch @@ -1,4 +1,4 @@ -From e2354416fdccb9649f080cdf912c5dc16d0eb578 Mon Sep 17 00:00:00 2001 +From 97273d08a8a82137f627303cefaabcacdf2acc6b Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 7 Aug 2014 16:59:21 +0200 Subject: [PATCH] qemu: Automatically create NVRAM store @@ -87,10 +87,10 @@ index 5d9c21c..6ae940a 100644 diff --git a/libvirt.spec.in b/libvirt.spec.in -index 6129f00..935b8c8 100644 +index f408c64..f99de39 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in -@@ -1970,6 +1970,7 @@ exit 0 +@@ -1967,6 +1967,7 @@ exit 0 %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/ @@ -98,7 +98,7 @@ index 6129f00..935b8c8 100644 %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/cache/libvirt/qemu/ %{_datadir}/augeas/lenses/libvirtd_qemu.aug %{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug -@@ -2072,6 +2073,7 @@ exit 0 +@@ -2069,6 +2070,7 @@ exit 0 %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/ diff --git a/0014-nvram-Fix-permissions.patch b/0013-nvram-Fix-permissions.patch similarity index 95% rename from 0014-nvram-Fix-permissions.patch rename to 0013-nvram-Fix-permissions.patch index 8f3d078..397f820 100644 --- a/0014-nvram-Fix-permissions.patch +++ b/0013-nvram-Fix-permissions.patch @@ -1,4 +1,4 @@ -From 884ef00a28244b34d66ada97c8ddd3e7d7ea8ff1 Mon Sep 17 00:00:00 2001 +From cbbccd865f4c3f630e89b4270a036bfb3f76041b Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 11 Sep 2014 12:09:04 +0200 Subject: [PATCH] nvram: Fix permissions @@ -22,10 +22,10 @@ Signed-off-by: Michal Privoznik 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in -index 935b8c8..3cd7b2e 100644 +index f99de39..32e51f7 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in -@@ -1970,7 +1970,7 @@ exit 0 +@@ -1967,7 +1967,7 @@ exit 0 %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/ diff --git a/0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch b/0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch similarity index 99% rename from 0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch rename to 0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch index d9c9feb..84a4e07 100644 --- a/0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch +++ b/0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch @@ -1,4 +1,4 @@ -From 03c156e5d54b311291101ca21690b586222be276 Mon Sep 17 00:00:00 2001 +From 7da89c42f92a7ce7430908ab08ea3b380306b603 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 11 Sep 2014 13:17:11 +0200 Subject: [PATCH] virDomainUndefineFlags: Allow NVRAM unlinking diff --git a/0016-formatdomain-Update-loader-example-to-match-the-rest.patch b/0015-formatdomain-Update-loader-example-to-match-the-rest.patch similarity index 95% rename from 0016-formatdomain-Update-loader-example-to-match-the-rest.patch rename to 0015-formatdomain-Update-loader-example-to-match-the-rest.patch index 6ed25e4..9116009 100644 --- a/0016-formatdomain-Update-loader-example-to-match-the-rest.patch +++ b/0015-formatdomain-Update-loader-example-to-match-the-rest.patch @@ -1,4 +1,4 @@ -From 2b30f114b796aee6f92eb13244f8cd42ef523bfe Mon Sep 17 00:00:00 2001 +From ebc6db93895fdba68f53dc22308ada6d31f7b3b9 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Fri, 12 Sep 2014 13:18:32 +0200 Subject: [PATCH] formatdomain: Update example to match the rest diff --git a/0017-domaincaps-Expose-UEFI-capability.patch b/0016-domaincaps-Expose-UEFI-capability.patch similarity index 99% rename from 0017-domaincaps-Expose-UEFI-capability.patch rename to 0016-domaincaps-Expose-UEFI-capability.patch index 98de34a..fa6c23a 100644 --- a/0017-domaincaps-Expose-UEFI-capability.patch +++ b/0016-domaincaps-Expose-UEFI-capability.patch @@ -1,4 +1,4 @@ -From 2c4e9da2b46d55fda49b20ae48dbdd4e63209565 Mon Sep 17 00:00:00 2001 +From e26c0cd7a5519390374ccd05e4b2291c7094f837 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 16 Sep 2014 14:47:47 +0200 Subject: [PATCH] domaincaps: Expose UEFI capability diff --git a/0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch b/0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch similarity index 99% rename from 0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch rename to 0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch index 23ec2a5..632edaf 100644 --- a/0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch +++ b/0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch @@ -1,4 +1,4 @@ -From 103a146b669a778238485425f4eb69a5a1f5c747 Mon Sep 17 00:00:00 2001 +From b9471c6a4ad05bdd7d5a3e69da357fb5ced0d704 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 17 Sep 2014 11:33:35 +0200 Subject: [PATCH] qemu_capabilities: Change virQEMUCapsFillDomainCaps signature diff --git a/0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch b/0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch similarity index 99% rename from 0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch rename to 0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch index fb27137..707e69a 100644 --- a/0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch +++ b/0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch @@ -1,4 +1,4 @@ -From 64041dc7d34d7af3fd611d194bf2ab56729a13fa Mon Sep 17 00:00:00 2001 +From 38b252f86889ef48c5fbc4cc66abc03fce681ce5 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 16 Sep 2014 19:52:54 -0400 Subject: [PATCH] domaincaps: Expose UEFI binary path, if it exists diff --git a/0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch b/0019-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch similarity index 96% rename from 0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch rename to 0019-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch index 9b1d453..c7cd8a7 100644 --- a/0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch +++ b/0019-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch @@ -1,4 +1,4 @@ -From 6fcd1ae861279589172783c4937367685469f265 Mon Sep 17 00:00:00 2001 +From 82354e136a056fbadb77b0a11705fd2b9e803a3a Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 17 Sep 2014 17:17:03 +0200 Subject: [PATCH] domaincapstest: Run cleanly on systems missing OVMF firmware diff --git a/0020-spec-Re-run-autotools-for-ovmf-patches.patch b/0020-spec-Re-run-autotools-for-ovmf-patches.patch new file mode 100644 index 0000000..4003b44 --- /dev/null +++ b/0020-spec-Re-run-autotools-for-ovmf-patches.patch @@ -0,0 +1,22 @@ +From 14622ac1f06ea3436c005e0728b81e33e3189ebd Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Tue, 23 Sep 2014 17:14:09 -0400 +Subject: [PATCH] spec: Re-run autotools for ovmf patches + +--- + libvirt.spec.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libvirt.spec.in b/libvirt.spec.in +index 32e51f7..98890ed 100644 +--- a/libvirt.spec.in ++++ b/libvirt.spec.in +@@ -13,7 +13,7 @@ + # Default to skipping autoreconf. Distros can change just this one line + # (or provide a command-line override) if they backport any patches that + # touch configure.ac or Makefile.am. +-%{!?enable_autotools:%define enable_autotools 0} ++%{!?enable_autotools:%define enable_autotools 1} + + # A client only build will create a libvirt.so only containing + # the generic RPC driver, and test driver and no libvirtd diff --git a/0101-qemu_command-Split-qemuBuildCpuArgStr.patch b/0101-qemu_command-Split-qemuBuildCpuArgStr.patch new file mode 100644 index 0000000..cb17499 --- /dev/null +++ b/0101-qemu_command-Split-qemuBuildCpuArgStr.patch @@ -0,0 +1,291 @@ +From 5237e9b27b8102c6f91015f33bab8e892c5fa82b Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Tue, 23 Sep 2014 11:35:57 -0400 +Subject: [PATCH] qemu_command: Split qemuBuildCpuArgStr + +Move the CPU mode/model handling to its own function. This is just +code movement and re-indentation. + +(cherry picked from commit e1d872dc77c80d43036f928f83f560f2e9286148) +--- + src/qemu/qemu_command.c | 226 ++++++++++++++++++++++++++---------------------- + 1 file changed, 122 insertions(+), 104 deletions(-) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index 718533b..67ff000 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -6052,139 +6052,162 @@ qemuBuildClockArgStr(virDomainClockDefPtr def) + return NULL; + } + +- + static int +-qemuBuildCpuArgStr(virQEMUDriverPtr driver, +- const virDomainDef *def, +- const char *emulator, +- virQEMUCapsPtr qemuCaps, +- virArch hostarch, +- char **opt, +- bool *hasHwVirt, +- bool migrating) ++qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, ++ const virDomainDef *def, ++ virBufferPtr buf, ++ virQEMUCapsPtr qemuCaps, ++ bool *hasHwVirt, ++ bool migrating) + { ++ int ret = -1; ++ size_t i; + virCPUDefPtr host = NULL; + virCPUDefPtr guest = NULL; + virCPUDefPtr cpu = NULL; + size_t ncpus = 0; + char **cpus = NULL; +- const char *default_model; + virCPUDataPtr data = NULL; +- bool have_cpu = false; + char *compare_msg = NULL; +- int ret = -1; +- virBuffer buf = VIR_BUFFER_INITIALIZER; +- size_t i; ++ virCPUCompareResult cmp; ++ const char *preferred; + virCapsPtr caps = NULL; + +- *hasHwVirt = false; +- + if (!(caps = virQEMUDriverGetCapabilities(driver, false))) + goto cleanup; + + host = caps->host.cpu; + +- if (def->os.arch == VIR_ARCH_I686) +- default_model = "qemu32"; +- else +- default_model = "qemu64"; ++ if (!host || ++ !host->model || ++ (ncpus = virQEMUCapsGetCPUDefinitions(qemuCaps, &cpus)) == 0) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", ++ _("CPU specification not supported by hypervisor")); ++ goto cleanup; ++ } + +- if (def->cpu && +- (def->cpu->mode != VIR_CPU_MODE_CUSTOM || def->cpu->model)) { +- virCPUCompareResult cmp; +- const char *preferred; ++ if (!(cpu = virCPUDefCopy(def->cpu))) ++ goto cleanup; ++ ++ if (cpu->mode != VIR_CPU_MODE_CUSTOM && ++ !migrating && ++ cpuUpdate(cpu, host) < 0) ++ goto cleanup; + +- if (!host || +- !host->model || +- (ncpus = virQEMUCapsGetCPUDefinitions(qemuCaps, &cpus)) == 0) { ++ cmp = cpuGuestData(host, cpu, &data, &compare_msg); ++ switch (cmp) { ++ case VIR_CPU_COMPARE_INCOMPATIBLE: ++ if (compare_msg) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, ++ _("guest and host CPU are not compatible: %s"), ++ compare_msg); ++ } else { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", +- _("CPU specification not supported by hypervisor")); +- goto cleanup; ++ _("guest CPU is not compatible with host CPU")); + } ++ /* fall through */ ++ case VIR_CPU_COMPARE_ERROR: ++ goto cleanup; + +- if (!(cpu = virCPUDefCopy(def->cpu))) ++ default: ++ break; ++ } ++ ++ /* Only 'svm' requires --enable-nesting. The nested ++ * 'vmx' patches now simply hook off the CPU features ++ */ ++ if (def->os.arch == VIR_ARCH_X86_64 || ++ def->os.arch == VIR_ARCH_I686) { ++ int hasSVM = cpuHasFeature(data, "svm"); ++ if (hasSVM < 0) + goto cleanup; ++ *hasHwVirt = hasSVM > 0 ? true : false; ++ } + +- if (cpu->mode != VIR_CPU_MODE_CUSTOM && +- !migrating && +- cpuUpdate(cpu, host) < 0) ++ if (cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH) { ++ const char *mode = virCPUModeTypeToString(cpu->mode); ++ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_HOST)) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, ++ _("CPU mode '%s' is not supported by QEMU" ++ " binary"), mode); ++ goto cleanup; ++ } ++ if (def->virtType != VIR_DOMAIN_VIRT_KVM) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, ++ _("CPU mode '%s' is only supported with kvm"), ++ mode); ++ goto cleanup; ++ } ++ virBufferAddLit(buf, "host"); ++ } else { ++ if (VIR_ALLOC(guest) < 0) ++ goto cleanup; ++ if (VIR_STRDUP(guest->vendor_id, cpu->vendor_id) < 0) + goto cleanup; + +- cmp = cpuGuestData(host, cpu, &data, &compare_msg); +- switch (cmp) { +- case VIR_CPU_COMPARE_INCOMPATIBLE: +- if (compare_msg) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("guest and host CPU are not compatible: %s"), +- compare_msg); +- } else { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", +- _("guest CPU is not compatible with host CPU")); +- } +- /* fall through */ +- case VIR_CPU_COMPARE_ERROR: ++ guest->arch = host->arch; ++ if (cpu->match == VIR_CPU_MATCH_MINIMUM) ++ preferred = host->model; ++ else ++ preferred = cpu->model; ++ ++ guest->type = VIR_CPU_TYPE_GUEST; ++ guest->fallback = cpu->fallback; ++ if (cpuDecode(guest, data, (const char **)cpus, ncpus, preferred) < 0) + goto cleanup; + +- default: +- break; +- } ++ virBufferAdd(buf, guest->model, -1); ++ if (guest->vendor_id) ++ virBufferAsprintf(buf, ",vendor=%s", guest->vendor_id); ++ for (i = 0; i < guest->nfeatures; i++) { ++ char sign; ++ if (guest->features[i].policy == VIR_CPU_FEATURE_DISABLE) ++ sign = '-'; ++ else ++ sign = '+'; + +- /* Only 'svm' requires --enable-nesting. The nested +- * 'vmx' patches now simply hook off the CPU features +- */ +- if (def->os.arch == VIR_ARCH_X86_64 || +- def->os.arch == VIR_ARCH_I686) { +- int hasSVM = cpuHasFeature(data, "svm"); +- if (hasSVM < 0) +- goto cleanup; +- *hasHwVirt = hasSVM > 0 ? true : false; ++ virBufferAsprintf(buf, ",%c%s", sign, guest->features[i].name); + } ++ } + +- if (cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH) { +- const char *mode = virCPUModeTypeToString(cpu->mode); +- if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_HOST)) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("CPU mode '%s' is not supported by QEMU" +- " binary"), mode); +- goto cleanup; +- } +- if (def->virtType != VIR_DOMAIN_VIRT_KVM) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("CPU mode '%s' is only supported with kvm"), +- mode); +- goto cleanup; +- } +- virBufferAddLit(&buf, "host"); +- } else { +- if (VIR_ALLOC(guest) < 0) +- goto cleanup; +- if (VIR_STRDUP(guest->vendor_id, cpu->vendor_id) < 0) +- goto cleanup; ++ ret = 0; ++cleanup: ++ virObjectUnref(caps); ++ VIR_FREE(compare_msg); ++ cpuDataFree(data); ++ virCPUDefFree(guest); ++ virCPUDefFree(cpu); ++ return ret; ++} + +- guest->arch = host->arch; +- if (cpu->match == VIR_CPU_MATCH_MINIMUM) +- preferred = host->model; +- else +- preferred = cpu->model; ++static int ++qemuBuildCpuArgStr(virQEMUDriverPtr driver, ++ const virDomainDef *def, ++ const char *emulator, ++ virQEMUCapsPtr qemuCaps, ++ virArch hostarch, ++ char **opt, ++ bool *hasHwVirt, ++ bool migrating) ++{ ++ const char *default_model; ++ bool have_cpu = false; ++ int ret = -1; ++ virBuffer buf = VIR_BUFFER_INITIALIZER; ++ size_t i; + +- guest->type = VIR_CPU_TYPE_GUEST; +- guest->fallback = cpu->fallback; +- if (cpuDecode(guest, data, (const char **)cpus, ncpus, preferred) < 0) +- goto cleanup; ++ *hasHwVirt = false; + +- virBufferAdd(&buf, guest->model, -1); +- if (guest->vendor_id) +- virBufferAsprintf(&buf, ",vendor=%s", guest->vendor_id); +- for (i = 0; i < guest->nfeatures; i++) { +- char sign; +- if (guest->features[i].policy == VIR_CPU_FEATURE_DISABLE) +- sign = '-'; +- else +- sign = '+'; ++ if (def->os.arch == VIR_ARCH_I686) ++ default_model = "qemu32"; ++ else ++ default_model = "qemu64"; + +- virBufferAsprintf(&buf, ",%c%s", sign, guest->features[i].name); +- } +- } ++ if (def->cpu && ++ (def->cpu->mode != VIR_CPU_MODE_CUSTOM || def->cpu->model)) { ++ if (qemuBuildCpuModelArgStr(driver, def, &buf, qemuCaps, ++ hasHwVirt, migrating) < 0) ++ goto cleanup; + have_cpu = true; + } else { + /* +@@ -6309,11 +6332,6 @@ qemuBuildCpuArgStr(virQEMUDriverPtr driver, + ret = 0; + + cleanup: +- VIR_FREE(compare_msg); +- cpuDataFree(data); +- virCPUDefFree(guest); +- virCPUDefFree(cpu); +- virObjectUnref(caps); + return ret; + } + diff --git a/0102-qemu-Don-t-compare-CPU-against-host-for-TCG.patch b/0102-qemu-Don-t-compare-CPU-against-host-for-TCG.patch new file mode 100644 index 0000000..fe6aa63 --- /dev/null +++ b/0102-qemu-Don-t-compare-CPU-against-host-for-TCG.patch @@ -0,0 +1,536 @@ +From 25acf3c750c2dd636f82cbf555591552ae2f07cf Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Tue, 23 Sep 2014 13:07:09 -0400 +Subject: [PATCH] qemu: Don't compare CPU against host for TCG + +Right now when building the qemu command line, we try to do various +unconditional validations of the guest CPU against the host CPU. However +this checks are overly applied. The only time we should use the checks +are: + +- The user requests host-model/host-passthrough, or + +- When KVM is requsted. CPU features requested in TCG mode are always + emulated by qemu and are independent of the host CPU, so no host CPU + checks should be performed. + +Right now if trying to specify a CPU for arm on an x86 host, it attempts +to do non-sensical validation and falls over. + +Switch all the test cases that were intending to test CPU validation to +use KVM, so they continue to test the intended code. + +Amend some aarch64 XML tests with a CPU model, to ensure things work +correctly. + +(cherry picked from commit cf7fce8f2fd1c930f357fd4ff93ac35f38eb30c6) +--- + src/qemu/qemu_command.c | 68 +++++++++++++--------- + .../qemuxml2argv-aarch64-virt-default-nic.args | 3 +- + .../qemuxml2argv-aarch64-virt-default-nic.xml | 3 + + .../qemuxml2argv-aarch64-virt-virtio.args | 3 +- + .../qemuxml2argv-aarch64-virt-virtio.xml | 3 + + .../qemuxml2argvdata/qemuxml2argv-cpu-exact1.args | 2 +- + tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml | 4 +- + .../qemuxml2argv-cpu-exact2-nofallback.args | 2 +- + .../qemuxml2argv-cpu-exact2-nofallback.xml | 4 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-exact2.args | 2 +- + tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml | 4 +- + .../qemuxml2argv-cpu-fallback.args | 2 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml | 4 +- + .../qemuxml2argv-cpu-minimum1.args | 2 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml | 4 +- + .../qemuxml2argv-cpu-minimum2.args | 2 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml | 4 +- + .../qemuxml2argv-cpu-nofallback.xml | 2 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-strict1.args | 2 +- + .../qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml | 4 +- + .../qemuxml2argv-graphics-spice-timeout.args | 2 +- + .../qemuxml2argv-graphics-spice-timeout.xml | 4 +- + .../qemuxml2argv-pseries-cpu-exact.args | 4 +- + tests/qemuxml2argvtest.c | 21 +++---- + .../qemuxml2xmlout-graphics-spice-timeout.xml | 4 +- + 25 files changed, 90 insertions(+), 69 deletions(-) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index 67ff000..42c8f60 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -6072,6 +6072,8 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + virCPUCompareResult cmp; + const char *preferred; + virCapsPtr caps = NULL; ++ bool compareAgainstHost = (def->virtType == VIR_DOMAIN_VIRT_KVM || ++ def->cpu->mode != VIR_CPU_MODE_CUSTOM); + + if (!(caps = virQEMUDriverGetCapabilities(driver, false))) + goto cleanup; +@@ -6094,30 +6096,33 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + cpuUpdate(cpu, host) < 0) + goto cleanup; + +- cmp = cpuGuestData(host, cpu, &data, &compare_msg); +- switch (cmp) { +- case VIR_CPU_COMPARE_INCOMPATIBLE: +- if (compare_msg) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("guest and host CPU are not compatible: %s"), +- compare_msg); +- } else { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", +- _("guest CPU is not compatible with host CPU")); +- } +- /* fall through */ +- case VIR_CPU_COMPARE_ERROR: +- goto cleanup; ++ /* For non-KVM, CPU features are emulated, so host compat doesn't matter */ ++ if (compareAgainstHost) { ++ cmp = cpuGuestData(host, cpu, &data, &compare_msg); ++ switch (cmp) { ++ case VIR_CPU_COMPARE_INCOMPATIBLE: ++ if (compare_msg) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, ++ _("guest and host CPU are not compatible: %s"), ++ compare_msg); ++ } else { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", ++ _("guest CPU is not compatible with host CPU")); ++ } ++ /* fall through */ ++ case VIR_CPU_COMPARE_ERROR: ++ goto cleanup; + +- default: +- break; ++ default: ++ break; ++ } + } + + /* Only 'svm' requires --enable-nesting. The nested + * 'vmx' patches now simply hook off the CPU features + */ +- if (def->os.arch == VIR_ARCH_X86_64 || +- def->os.arch == VIR_ARCH_I686) { ++ if ((def->os.arch == VIR_ARCH_X86_64 || def->os.arch == VIR_ARCH_I686) && ++ compareAgainstHost) { + int hasSVM = cpuHasFeature(data, "svm"); + if (hasSVM < 0) + goto cleanup; +@@ -6145,16 +6150,23 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + if (VIR_STRDUP(guest->vendor_id, cpu->vendor_id) < 0) + goto cleanup; + +- guest->arch = host->arch; +- if (cpu->match == VIR_CPU_MATCH_MINIMUM) +- preferred = host->model; +- else +- preferred = cpu->model; ++ if (compareAgainstHost) { ++ guest->arch = host->arch; ++ if (cpu->match == VIR_CPU_MATCH_MINIMUM) ++ preferred = host->model; ++ else ++ preferred = cpu->model; + +- guest->type = VIR_CPU_TYPE_GUEST; +- guest->fallback = cpu->fallback; +- if (cpuDecode(guest, data, (const char **)cpus, ncpus, preferred) < 0) +- goto cleanup; ++ guest->type = VIR_CPU_TYPE_GUEST; ++ guest->fallback = cpu->fallback; ++ if (cpuDecode(guest, data, ++ (const char **)cpus, ncpus, preferred) < 0) ++ goto cleanup; ++ } else { ++ guest->arch = def->os.arch; ++ if (VIR_STRDUP(guest->model, cpu->model) < 0) ++ goto cleanup; ++ } + + virBufferAdd(buf, guest->model, -1); + if (guest->vendor_id) +@@ -6171,7 +6183,7 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver, + } + + ret = 0; +-cleanup: ++ cleanup: + virObjectUnref(caps); + VIR_FREE(compare_msg); + cpuDataFree(data); +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args +index d4d403b..8cb57c5 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args +@@ -1,5 +1,6 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu-system-aarch64 -S -M virt -m 1024 -smp 1 -nographic \ ++/usr/bin/qemu-system-aarch64 -S -M virt -cpu cortex-a53 \ ++-m 1024 -smp 1 -nographic \ + -nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait \ + -boot c -kernel /aarch64.kernel -initrd /aarch64.initrd -append console=ttyAMA0 \ + -usb -device virtio-net-device,vlan=0,id=net0,mac=52:54:00:09:a4:37 \ +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml +index 868de94..3a6f098 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml +@@ -7,6 +7,9 @@ + + + ++ ++ cortex-a53 ++ + + hvm + /aarch64.kernel +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args +index afd6e41..05f3629 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args +@@ -1,5 +1,6 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu-system-aarch64 -S -M virt -m 1024 -smp 1 -nographic \ ++/usr/bin/qemu-system-aarch64 -S -M virt -cpu cortex-a53 \ ++-m 1024 -smp 1 -nographic \ + -nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait \ + -boot c -kernel /aarch64.kernel -initrd /aarch64.initrd -append \ + 'earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait' \ +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml +index 184b62c..ad34615 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml +@@ -16,6 +16,9 @@ + + + ++ ++ cortex-a53 ++ + + destroy + restart +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args +index 76c2c48..0a58616 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu qemu64,-svm,-lm,-nx,-syscall,-clflush,-pse36,-mca -m 214 -smp 6 \ + -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \ + none -serial none -parallel none +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml +index ddd9d5a..1d1e815 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -23,6 +23,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args +index 0e37379..e46527b 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+ds_cpl,+tm,+ht,+ds,-nx -m 214 -smp 6 \ + -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \ + none -serial none -parallel none +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml +index de4c8d2..6b9b7d4 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -30,6 +30,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args +index 0e37379..e46527b 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+ds_cpl,+tm,+ht,+ds,-nx -m 214 -smp 6 \ + -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net \ + none -serial none -parallel none +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml +index e027e6f..eaea564 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -30,6 +30,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args +index 4ee8391..ead561f 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args +@@ -3,7 +3,7 @@ PATH=/bin \ + HOME=/home/test \ + USER=test \ + LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu \ ++/usr/bin/qemu-kvm \ + -S \ + -M pc \ + -cpu Penryn,-sse4.1 \ +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml +index 6125f41..85642e9 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -20,6 +20,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args +index 0630ef4..d8207e7 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,\ + +acpi,+ds -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,\ + nowait -no-acpi -boot n -usb -net none -serial none -parallel none +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml +index 4ba5d0b..5879d35 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -16,6 +16,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args +index 830994f..17ba256 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,\ + +acpi,+ds,-lm,-nx,-syscall -m 214 -smp 6 -nographic -monitor \ + unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net none -serial none \ +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml +index c43bf4f..b8bbf25 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -20,6 +20,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml +index 4ae0be8..abb0e9c 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args +index 8b545a7..c500ef7 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ +-/usr/bin/qemu -S -M pc \ ++/usr/bin/qemu-kvm -S -M pc \ + -cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+est,+vmx,+ds_cpl,+tm,+ht,+acpi,+ds,-nx \ + -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait \ + -no-acpi -boot n -usb -net none -serial none -parallel none +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml +index 935f46f..a9fc9c5 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml +@@ -1,4 +1,4 @@ +- ++ + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 +@@ -33,6 +33,6 @@ + restart + destroy + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args +index 48744b2..8b5d9ee 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args +@@ -1,5 +1,5 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=spice \ +-/usr/bin/qemu -S -M pc -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,\ ++/usr/bin/qemu-kvm -S -M pc -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,\ + +est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,+ds \ + -m 1024 -smp 2 -nodefaults -monitor unix:/tmp/test-monitor,server,nowait \ + -boot dc -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 \ +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml +index e6ecbed..3ed864c 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml ++++ b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml +@@ -1,4 +1,4 @@ +- ++ + f14 + 553effab-b5e1-2d80-dfe3-da4344826c43 + 1048576 +@@ -38,7 +38,7 @@ + restart + restart + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + + +diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args +index 1e09680..9927294 100644 +--- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args ++++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args +@@ -1,6 +1,6 @@ + LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test \ +-/usr/bin/qemu-system-ppc64 -S -M pseries -cpu POWER7_v2.3 -m 512 -smp 1 -nographic \ +--nodefconfig -nodefaults \ ++QEMU_AUDIO_DRV=none /usr/bin/qemu-system-ppc64 -S -M pseries -cpu POWER7_v2.3 \ ++-m 512 -smp 1 -nographic -nodefconfig -nodefaults \ + -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait \ + -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -usb \ + -chardev pty,id=charserial0 \ +diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c +index 5c28253..60a5fdf 100644 +--- a/tests/qemuxml2argvtest.c ++++ b/tests/qemuxml2argvtest.c +@@ -922,7 +922,7 @@ mymain(void) + QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE, + QEMU_CAPS_DEVICE_QXL); + DO_TEST("graphics-spice-timeout", +- QEMU_CAPS_DRIVE, ++ QEMU_CAPS_KVM, QEMU_CAPS_DRIVE, + QEMU_CAPS_VGA, QEMU_CAPS_VGA_QXL, + QEMU_CAPS_DEVICE, QEMU_CAPS_SPICE, + QEMU_CAPS_DEVICE_QXL_VGA); +@@ -1194,14 +1194,14 @@ mymain(void) + DO_TEST("cpu-topology1", QEMU_CAPS_SMP_TOPOLOGY); + DO_TEST("cpu-topology2", QEMU_CAPS_SMP_TOPOLOGY); + DO_TEST("cpu-topology3", NONE); +- DO_TEST("cpu-minimum1", NONE); +- DO_TEST("cpu-minimum2", NONE); +- DO_TEST("cpu-exact1", NONE); +- DO_TEST("cpu-exact2", NONE); +- DO_TEST("cpu-exact2-nofallback", NONE); +- DO_TEST("cpu-fallback", NONE); +- DO_TEST_FAILURE("cpu-nofallback", NONE); +- DO_TEST("cpu-strict1", NONE); ++ DO_TEST("cpu-minimum1", QEMU_CAPS_KVM); ++ DO_TEST("cpu-minimum2", QEMU_CAPS_KVM); ++ DO_TEST("cpu-exact1", QEMU_CAPS_KVM); ++ DO_TEST("cpu-exact2", QEMU_CAPS_KVM); ++ DO_TEST("cpu-exact2-nofallback", QEMU_CAPS_KVM); ++ DO_TEST("cpu-fallback", QEMU_CAPS_KVM); ++ DO_TEST_FAILURE("cpu-nofallback", QEMU_CAPS_KVM); ++ DO_TEST("cpu-strict1", QEMU_CAPS_KVM); + DO_TEST("cpu-numa1", NONE); + DO_TEST("cpu-numa2", QEMU_CAPS_SMP_TOPOLOGY); + DO_TEST_PARSE_ERROR("cpu-numa3", NONE); +@@ -1286,7 +1286,8 @@ mymain(void) + DO_TEST("pseries-usb-kbd", QEMU_CAPS_PCI_OHCI, + QEMU_CAPS_DEVICE_USB_KBD, QEMU_CAPS_CHARDEV, + QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG); +- DO_TEST_FAILURE("pseries-cpu-exact", QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG); ++ DO_TEST("pseries-cpu-exact", QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, ++ QEMU_CAPS_NODEFCONFIG); + DO_TEST("disk-ide-drive-split", + QEMU_CAPS_DRIVE, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG, + QEMU_CAPS_IDE_CD); +diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml +index 44c4cf7..73ebcab 100644 +--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml ++++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml +@@ -1,4 +1,4 @@ +- ++ + f14 + 553effab-b5e1-2d80-dfe3-da4344826c43 + 1048576 +@@ -38,7 +38,7 @@ + restart + restart + +- /usr/bin/qemu ++ /usr/bin/qemu-kvm + + + diff --git a/libvirt.spec b/libvirt.spec index 8216f08..57d20f2 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -267,9 +267,6 @@ %if 0%{?fedora} >= 21 %define with_wireshark 0%{!?_without_wireshark:1} %endif -# Except this is presently busted on F21/rawhide with wireshark 1.12.0 -# https://bugzilla.redhat.com/show_bug.cgi?id=1129419 -%define with_wireshark 0 # Disable some drivers when building without libvirt daemon. # The logic is the same as in configure.ac @@ -366,7 +363,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 1.2.8 -Release: 4%{?dist}%{?extra_release} +Release: 5%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root @@ -387,24 +384,26 @@ Patch0004: 0004-remove-redundant-pidfile-path-constructions.patch Patch0005: 0005-util-fix-potential-leak-in-error-codepath.patch Patch0006: 0006-util-get-rid-of-unnecessary-umask-call.patch Patch0007: 0007-rpc-make-daemon-spawning-a-bit-more-intelligent.patch -# Disable wireshark building, currently broken on f21/rawhide -# Nonupstream patch -Patch0008: 0008-spec-Don-t-build-wireshark-on-f21-non-upstream.patch # Fix preun script (bz #1142367) -Patch0009: 0009-spec-Fix-preun-script-for-daemon.patch +Patch0008: 0008-spec-Fix-preun-script-for-daemon.patch # Don't mess up labelling of /dev/net/tun (bz #1141879) -Patch0010: 0010-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch +Patch0009: 0009-virSecuritySELinuxSetTapFDLabel-Temporarily-revert-t.patch # pflash/nvram support for UEFI/OVMF -Patch0011: 0011-conf-Extend-loader-and-introduce-nvram.patch -Patch0012: 0012-qemu-Implement-extended-loader-and-nvram.patch -Patch0013: 0013-qemu-Automatically-create-NVRAM-store.patch -Patch0014: 0014-nvram-Fix-permissions.patch -Patch0015: 0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch -Patch0016: 0016-formatdomain-Update-loader-example-to-match-the-rest.patch -Patch0017: 0017-domaincaps-Expose-UEFI-capability.patch -Patch0018: 0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch -Patch0019: 0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch -Patch0020: 0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch +Patch0010: 0010-conf-Extend-loader-and-introduce-nvram.patch +Patch0011: 0011-qemu-Implement-extended-loader-and-nvram.patch +Patch0012: 0012-qemu-Automatically-create-NVRAM-store.patch +Patch0013: 0013-nvram-Fix-permissions.patch +Patch0014: 0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch +Patch0015: 0015-formatdomain-Update-loader-example-to-match-the-rest.patch +Patch0016: 0016-domaincaps-Expose-UEFI-capability.patch +Patch0017: 0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch +Patch0018: 0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch +Patch0019: 0019-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.patch +Patch0020: 0020-spec-Re-run-autotools-for-ovmf-patches.patch + +# Fix specifying CPU for qemu aarch64 +Patch0101: 0101-qemu_command-Split-qemuBuildCpuArgStr.patch +Patch0102: 0102-qemu-Don-t-compare-CPU-against-host-for-TCG.patch %if %{with_libvirtd} Requires: libvirt-daemon = %{version}-%{release} @@ -1240,14 +1239,12 @@ driver %patch0005 -p1 %patch0006 -p1 %patch0007 -p1 -# Disable wireshark building, currently broken on f21/rawhide -# Nonupstream patch -%patch0008 -p1 # Fix preun script (bz #1142367) -%patch0009 -p1 +%patch0008 -p1 # Don't mess up labelling of /dev/net/tun (bz #1141879) -%patch0010 -p1 +%patch0009 -p1 # pflash/nvram support for UEFI/OVMF +%patch0010 -p1 %patch0011 -p1 %patch0012 -p1 %patch0013 -p1 @@ -1259,6 +1256,10 @@ driver %patch0019 -p1 %patch0020 -p1 +# Fix specifying CPU for qemu aarch64 +%patch0101 -p1 +%patch0102 -p1 + %build %if ! %{with_xen} %define _without_xen --without-xen @@ -2335,6 +2336,9 @@ exit 0 %doc examples/systemtap %changelog +* Tue Sep 23 2014 Cole Robinson - 1.2.8-5 +- Fix specifying CPU for qemu aarch64 + * Thu Sep 18 2014 Cole Robinson - 1.2.8-4 - Don't mess up labelling of /dev/net/tun (bz #1141879) - pflash/nvram support for UEFI/OVMF