[libvirt/f21] Don't reject aarch64 + uefi

Cole Robinson crobinso at fedoraproject.org
Tue Dec 2 20:21:15 UTC 2014


commit 0ceadbef5096f03ad395b046885d4cf7d98e5027
Author: Cole Robinson <crobinso at redhat.com>
Date:   Tue Dec 2 15:21:18 2014 -0500

    Don't reject aarch64 + uefi

 ...emu-Support-OVMF-on-armv7l-aarch64-guests.patch |   30 +++++++
 0007-qemu-Drop-OVMF-whitelist.patch                |   84 ++++++++++++++++++++
 libvirt.spec                                       |   11 +++-
 3 files changed, 124 insertions(+), 1 deletions(-)
---
diff --git a/0006-qemu-Support-OVMF-on-armv7l-aarch64-guests.patch b/0006-qemu-Support-OVMF-on-armv7l-aarch64-guests.patch
new file mode 100644
index 0000000..1221b88
--- /dev/null
+++ b/0006-qemu-Support-OVMF-on-armv7l-aarch64-guests.patch
@@ -0,0 +1,30 @@
+From: Michal Privoznik <mprivozn at redhat.com>
+Date: Wed, 19 Nov 2014 16:25:56 +0100
+Subject: [PATCH] qemu: Support OVMF on armv7l aarch64 guests
+
+Currently, we are whitelisting architectures, that we know how to run
+OVMF on. So far, only x86_64 was enabled. However, looking at qemu
+code, the same commandline can be used to enable OVMF for armv7l and
+aarch64.
+
+Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
+(cherry picked from commit 6d8054b68407a3385b33c867a425ad8278b0b8f0)
+---
+ src/qemu/qemu_command.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
+index 9619d28..b12cf55 100644
+--- a/src/qemu/qemu_command.c
++++ b/src/qemu/qemu_command.c
+@@ -7571,7 +7571,9 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd,
+ 
+     case VIR_DOMAIN_LOADER_TYPE_PFLASH:
+         /* UEFI is supported only for x86_64 currently */
+-        if (def->os.arch != VIR_ARCH_X86_64) {
++        if (def->os.arch != VIR_ARCH_X86_64 &&
++            def->os.arch != VIR_ARCH_ARMV7L &&
++            def->os.arch != VIR_ARCH_AARCH64) {
+             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                            _("pflash is not supported for %s guest architecture"),
+                            virArchToString(def->os.arch));
diff --git a/0007-qemu-Drop-OVMF-whitelist.patch b/0007-qemu-Drop-OVMF-whitelist.patch
new file mode 100644
index 0000000..2b73c24
--- /dev/null
+++ b/0007-qemu-Drop-OVMF-whitelist.patch
@@ -0,0 +1,84 @@
+From: Michal Privoznik <mprivozn at redhat.com>
+Date: Wed, 19 Nov 2014 18:16:12 +0100
+Subject: [PATCH] qemu: Drop OVMF whitelist
+
+As discussed on the upstream list, it's better not to make this
+kind of predictions in libvirt. It may happen that qemu learns
+how to enable OVMF on other architectures too and we shouldn't
+try to chase that.
+
+Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
+(cherry picked from commit 36148120c1c1e6ad7f4eb6f0995eb7b18ba95922)
+---
+ src/qemu/qemu_capabilities.c |  9 +++------
+ src/qemu/qemu_command.c      | 10 ----------
+ 2 files changed, 3 insertions(+), 16 deletions(-)
+
+diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
+index 59a38b2..363e4e2 100644
+--- a/src/qemu/qemu_capabilities.c
++++ b/src/qemu/qemu_capabilities.c
+@@ -3627,7 +3627,6 @@ virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps)
+ static int
+ virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps,
+                                 virDomainCapsLoaderPtr capsLoader,
+-                                virArch arch,
+                                 char **loader,
+                                 size_t nloader)
+ {
+@@ -3655,8 +3654,7 @@ virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps,
+     VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type,
+                              VIR_DOMAIN_LOADER_TYPE_ROM);
+ 
+-    if (arch == VIR_ARCH_X86_64 &&
+-        virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE) &&
++    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE) &&
+         virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_FORMAT))
+         VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type,
+                                  VIR_DOMAIN_LOADER_TYPE_PFLASH);
+@@ -3673,14 +3671,13 @@ virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps,
+ static int
+ virQEMUCapsFillDomainOSCaps(virQEMUCapsPtr qemuCaps,
+                             virDomainCapsOSPtr os,
+-                            virArch arch,
+                             char **loader,
+                             size_t nloader)
+ {
+     virDomainCapsLoaderPtr capsLoader = &os->loader;
+ 
+     os->device.supported = true;
+-    if (virQEMUCapsFillDomainLoaderCaps(qemuCaps, capsLoader, arch,
++    if (virQEMUCapsFillDomainLoaderCaps(qemuCaps, capsLoader,
+                                         loader, nloader) < 0)
+         return -1;
+     return 0;
+@@ -3776,7 +3773,7 @@ virQEMUCapsFillDomainCaps(virDomainCapsPtr domCaps,
+ 
+     domCaps->maxvcpus = maxvcpus;
+ 
+-    if (virQEMUCapsFillDomainOSCaps(qemuCaps, os, domCaps->arch,
++    if (virQEMUCapsFillDomainOSCaps(qemuCaps, os,
+                                     loader, nloader) < 0 ||
+         virQEMUCapsFillDomainDeviceDiskCaps(qemuCaps, disk) < 0 ||
+         virQEMUCapsFillDomainDeviceHostdevCaps(qemuCaps, hostdev) < 0)
+diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
+index b12cf55..423692e 100644
+--- a/src/qemu/qemu_command.c
++++ b/src/qemu/qemu_command.c
+@@ -7570,16 +7570,6 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd,
+         break;
+ 
+     case VIR_DOMAIN_LOADER_TYPE_PFLASH:
+-        /* UEFI is supported only for x86_64 currently */
+-        if (def->os.arch != VIR_ARCH_X86_64 &&
+-            def->os.arch != VIR_ARCH_ARMV7L &&
+-            def->os.arch != VIR_ARCH_AARCH64) {
+-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+-                           _("pflash is not supported for %s guest architecture"),
+-                           virArchToString(def->os.arch));
+-            goto cleanup;
+-        }
+-
+         if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE)) {
+             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                            _("this QEMU binary doesn't support -drive"));
diff --git a/libvirt.spec b/libvirt.spec
index a2b78f0..d61f861 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -363,7 +363,7 @@
 Summary: Library providing a simple virtualization API
 Name: libvirt
 Version: 1.2.9.1
-Release: 1%{?dist}%{?extra_release}
+Release: 2%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -380,6 +380,9 @@ Patch0002: 0002-PowerPC-Add-support-for-launching-VM-in-compat-mode.patch
 Patch0003: 0003-PowerPC-Improve-PVR-handling-to-fall-back-to-cpu-gen.patch
 Patch0004: 0004-docs-Add-documentation-for-compat-mode.patch
 Patch0005: 0005-Test-Add-a-testcase-for-PowerPC-compat-mode-cpu-spec.patch
+# Don't reject aarch64 + uefi
+Patch0006: 0006-qemu-Support-OVMF-on-armv7l-aarch64-guests.patch
+Patch0007: 0007-qemu-Drop-OVMF-whitelist.patch
 
 %if %{with_libvirtd}
 Requires: libvirt-daemon = %{version}-%{release}
@@ -1211,6 +1214,9 @@ driver
 %patch0003 -p1
 %patch0004 -p1
 %patch0005 -p1
+# Don't reject aarch64 + uefi
+%patch0006 -p1
+%patch0007 -p1
 
 %build
 %if ! %{with_xen}
@@ -2288,6 +2294,9 @@ exit 0
 %doc examples/systemtap
 
 %changelog
+* Tue Dec 02 2014 Cole Robinson <crobinso at redhat.com> - 1.2.9.1-2
+- Don't reject aarch64 + uefi
+
 * Sat Nov 15 2014 Cole Robinson <crobinso at redhat.com> - 1.2.9.1-1
 - Rebased to version 1.2.9.1
 - ppc64le fixes (bz #1163439)


More information about the scm-commits mailing list