Fix specifying CPU for qemu aarch64

This commit is contained in:
Cole Robinson 2014-09-23 17:27:47 -04:00
parent a4b41a378b
commit aff97e0146
17 changed files with 896 additions and 67 deletions

View File

@ -1,24 +0,0 @@
From d437ccd8fef17c2bb119e98a034bdc56ff9425b2 Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
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

View File

@ -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 <jdenemar@redhat.com> From: Jiri Denemark <jdenemar@redhat.com>
Date: Wed, 3 Sep 2014 10:51:14 +0200 Date: Wed, 3 Sep 2014 10:51:14 +0200
Subject: [PATCH] spec: Fix preun script for daemon Subject: [PATCH] spec: Fix preun script for daemon
@ -14,10 +14,10 @@ Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
1 file changed, 1 insertion(+), 5 deletions(-) 1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in diff --git a/libvirt.spec.in b/libvirt.spec.in
index 7d8748d..6129f00 100644 index 0741c73..f408c64 100644
--- a/libvirt.spec.in --- a/libvirt.spec.in
+++ b/libvirt.spec.in +++ b/libvirt.spec.in
@@ -1680,11 +1680,7 @@ fi @@ -1677,11 +1677,7 @@ fi
%preun daemon %preun daemon
%if %{with_systemd} %if %{with_systemd}
%if %{with_systemd_macros} %if %{with_systemd_macros}

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Thu, 18 Sep 2014 15:17:29 +0200 Date: Thu, 18 Sep 2014 15:17:29 +0200
Subject: [PATCH] virSecuritySELinuxSetTapFDLabel: Temporarily revert to old Subject: [PATCH] virSecuritySELinuxSetTapFDLabel: Temporarily revert to old

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Wed, 6 Aug 2014 13:18:53 +0200 Date: Wed, 6 Aug 2014 13:18:53 +0200
Subject: [PATCH] conf: Extend <loader/> and introduce <nvram/> Subject: [PATCH] conf: Extend <loader/> and introduce <nvram/>

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Thu, 7 Aug 2014 13:50:00 +0200 Date: Thu, 7 Aug 2014 13:50:00 +0200
Subject: [PATCH] qemu: Implement extended loader and nvram Subject: [PATCH] qemu: Implement extended loader and nvram

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Thu, 7 Aug 2014 16:59:21 +0200 Date: Thu, 7 Aug 2014 16:59:21 +0200
Subject: [PATCH] qemu: Automatically create NVRAM store Subject: [PATCH] qemu: Automatically create NVRAM store
@ -87,10 +87,10 @@ index 5d9c21c..6ae940a 100644
</optional> </optional>
<optional> <optional>
diff --git a/libvirt.spec.in b/libvirt.spec.in diff --git a/libvirt.spec.in b/libvirt.spec.in
index 6129f00..935b8c8 100644 index f408c64..f99de39 100644
--- a/libvirt.spec.in --- a/libvirt.spec.in
+++ b/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/
%dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %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/ %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/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/cache/libvirt/qemu/
%{_datadir}/augeas/lenses/libvirtd_qemu.aug %{_datadir}/augeas/lenses/libvirtd_qemu.aug
%{_datadir}/augeas/lenses/tests/test_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/
%dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %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/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Thu, 11 Sep 2014 12:09:04 +0200 Date: Thu, 11 Sep 2014 12:09:04 +0200
Subject: [PATCH] nvram: Fix permissions Subject: [PATCH] nvram: Fix permissions
@ -22,10 +22,10 @@ Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2 files changed, 5 insertions(+), 2 deletions(-) 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in diff --git a/libvirt.spec.in b/libvirt.spec.in
index 935b8c8..3cd7b2e 100644 index f99de39..32e51f7 100644
--- a/libvirt.spec.in --- a/libvirt.spec.in
+++ b/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/
%dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/ %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/ %dir %attr(0750, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Thu, 11 Sep 2014 13:17:11 +0200 Date: Thu, 11 Sep 2014 13:17:11 +0200
Subject: [PATCH] virDomainUndefineFlags: Allow NVRAM unlinking Subject: [PATCH] virDomainUndefineFlags: Allow NVRAM unlinking

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Fri, 12 Sep 2014 13:18:32 +0200 Date: Fri, 12 Sep 2014 13:18:32 +0200
Subject: [PATCH] formatdomain: Update <loader/> example to match the rest Subject: [PATCH] formatdomain: Update <loader/> example to match the rest

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Tue, 16 Sep 2014 14:47:47 +0200 Date: Tue, 16 Sep 2014 14:47:47 +0200
Subject: [PATCH] domaincaps: Expose UEFI capability Subject: [PATCH] domaincaps: Expose UEFI capability

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Wed, 17 Sep 2014 11:33:35 +0200 Date: Wed, 17 Sep 2014 11:33:35 +0200
Subject: [PATCH] qemu_capabilities: Change virQEMUCapsFillDomainCaps signature Subject: [PATCH] qemu_capabilities: Change virQEMUCapsFillDomainCaps signature

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Tue, 16 Sep 2014 19:52:54 -0400 Date: Tue, 16 Sep 2014 19:52:54 -0400
Subject: [PATCH] domaincaps: Expose UEFI binary path, if it exists Subject: [PATCH] domaincaps: Expose UEFI binary path, if it exists

View File

@ -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 <mprivozn@redhat.com> From: Michal Privoznik <mprivozn@redhat.com>
Date: Wed, 17 Sep 2014 17:17:03 +0200 Date: Wed, 17 Sep 2014 17:17:03 +0200
Subject: [PATCH] domaincapstest: Run cleanly on systems missing OVMF firmware Subject: [PATCH] domaincapstest: Run cleanly on systems missing OVMF firmware

View File

@ -0,0 +1,22 @@
From 14622ac1f06ea3436c005e0728b81e33e3189ebd Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
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

View File

@ -0,0 +1,291 @@
From 5237e9b27b8102c6f91015f33bab8e892c5fa82b Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
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;
}

View File

@ -0,0 +1,536 @@
From 25acf3c750c2dd636f82cbf555591552ae2f07cf Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
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 @@
<features>
<acpi/>
</features>
+ <cpu match='exact'>
+ <model>cortex-a53</model>
+ </cpu>
<os>
<type arch="aarch64" machine="virt">hvm</type>
<kernel>/aarch64.kernel</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 @@
<apic/>
<pae/>
</features>
+ <cpu match='exact'>
+ <model>cortex-a53</model>
+ </cpu>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -23,6 +23,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -30,6 +30,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -30,6 +30,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -20,6 +20,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -16,6 +16,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -20,6 +20,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219100</memory>
@@ -33,6 +33,6 @@
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
</devices>
</domain>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>f14</name>
<uuid>553effab-b5e1-2d80-dfe3-da4344826c43</uuid>
<memory unit='KiB'>1048576</memory>
@@ -38,7 +38,7 @@
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/f14.img'/>
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 @@
-<domain type='qemu'>
+<domain type='kvm'>
<name>f14</name>
<uuid>553effab-b5e1-2d80-dfe3-da4344826c43</uuid>
<memory unit='KiB'>1048576</memory>
@@ -38,7 +38,7 @@
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
- <emulator>/usr/bin/qemu</emulator>
+ <emulator>/usr/bin/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/f14.img'/>

View File

@ -267,9 +267,6 @@
%if 0%{?fedora} >= 21 %if 0%{?fedora} >= 21
%define with_wireshark 0%{!?_without_wireshark:1} %define with_wireshark 0%{!?_without_wireshark:1}
%endif %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. # Disable some drivers when building without libvirt daemon.
# The logic is the same as in configure.ac # The logic is the same as in configure.ac
@ -366,7 +363,7 @@
Summary: Library providing a simple virtualization API Summary: Library providing a simple virtualization API
Name: libvirt Name: libvirt
Version: 1.2.8 Version: 1.2.8
Release: 4%{?dist}%{?extra_release} Release: 5%{?dist}%{?extra_release}
License: LGPLv2+ License: LGPLv2+
Group: Development/Libraries Group: Development/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 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 Patch0005: 0005-util-fix-potential-leak-in-error-codepath.patch
Patch0006: 0006-util-get-rid-of-unnecessary-umask-call.patch Patch0006: 0006-util-get-rid-of-unnecessary-umask-call.patch
Patch0007: 0007-rpc-make-daemon-spawning-a-bit-more-intelligent.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) # 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) # 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 # pflash/nvram support for UEFI/OVMF
Patch0011: 0011-conf-Extend-loader-and-introduce-nvram.patch Patch0010: 0010-conf-Extend-loader-and-introduce-nvram.patch
Patch0012: 0012-qemu-Implement-extended-loader-and-nvram.patch Patch0011: 0011-qemu-Implement-extended-loader-and-nvram.patch
Patch0013: 0013-qemu-Automatically-create-NVRAM-store.patch Patch0012: 0012-qemu-Automatically-create-NVRAM-store.patch
Patch0014: 0014-nvram-Fix-permissions.patch Patch0013: 0013-nvram-Fix-permissions.patch
Patch0015: 0015-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch Patch0014: 0014-virDomainUndefineFlags-Allow-NVRAM-unlinking.patch
Patch0016: 0016-formatdomain-Update-loader-example-to-match-the-rest.patch Patch0015: 0015-formatdomain-Update-loader-example-to-match-the-rest.patch
Patch0017: 0017-domaincaps-Expose-UEFI-capability.patch Patch0016: 0016-domaincaps-Expose-UEFI-capability.patch
Patch0018: 0018-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch Patch0017: 0017-qemu_capabilities-Change-virQEMUCapsFillDomainCaps-s.patch
Patch0019: 0019-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch Patch0018: 0018-domaincaps-Expose-UEFI-binary-path-if-it-exists.patch
Patch0020: 0020-domaincapstest-Run-cleanly-on-systems-missing-OVMF-f.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} %if %{with_libvirtd}
Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon = %{version}-%{release}
@ -1240,14 +1239,12 @@ driver
%patch0005 -p1 %patch0005 -p1
%patch0006 -p1 %patch0006 -p1
%patch0007 -p1 %patch0007 -p1
# Disable wireshark building, currently broken on f21/rawhide
# Nonupstream patch
%patch0008 -p1
# Fix preun script (bz #1142367) # Fix preun script (bz #1142367)
%patch0009 -p1 %patch0008 -p1
# Don't mess up labelling of /dev/net/tun (bz #1141879) # Don't mess up labelling of /dev/net/tun (bz #1141879)
%patch0010 -p1 %patch0009 -p1
# pflash/nvram support for UEFI/OVMF # pflash/nvram support for UEFI/OVMF
%patch0010 -p1
%patch0011 -p1 %patch0011 -p1
%patch0012 -p1 %patch0012 -p1
%patch0013 -p1 %patch0013 -p1
@ -1259,6 +1256,10 @@ driver
%patch0019 -p1 %patch0019 -p1
%patch0020 -p1 %patch0020 -p1
# Fix specifying CPU for qemu aarch64
%patch0101 -p1
%patch0102 -p1
%build %build
%if ! %{with_xen} %if ! %{with_xen}
%define _without_xen --without-xen %define _without_xen --without-xen
@ -2335,6 +2336,9 @@ exit 0
%doc examples/systemtap %doc examples/systemtap
%changelog %changelog
* Tue Sep 23 2014 Cole Robinson <crobinso@redhat.com> - 1.2.8-5
- Fix specifying CPU for qemu aarch64
* Thu Sep 18 2014 Cole Robinson <crobinso@redhat.com> - 1.2.8-4 * Thu Sep 18 2014 Cole Robinson <crobinso@redhat.com> - 1.2.8-4
- Don't mess up labelling of /dev/net/tun (bz #1141879) - Don't mess up labelling of /dev/net/tun (bz #1141879)
- pflash/nvram support for UEFI/OVMF - pflash/nvram support for UEFI/OVMF