relax qemu64 VCPU feature checking in the libvirt output
resolves: rhbz#2107503 Signed-off-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
3a13726152
commit
cb0feb7db4
@ -0,0 +1,69 @@
|
||||
From 29c6ee9322da082e3be9faa94cf4a6840b49cd97 Mon Sep 17 00:00:00 2001
|
||||
From: Laszlo Ersek <lersek@redhat.com>
|
||||
Date: Fri, 22 Jul 2022 09:36:27 +0200
|
||||
Subject: [PATCH] output/create_libvirt_xml: relax VCPU feature checking for
|
||||
"qemu64"
|
||||
|
||||
When the source domain doesn't specify a VCPU model ("s_cpu_model" is
|
||||
None), and the guest OS is assumed to work with the default VCPU model
|
||||
("gcaps_default_cpu" is true), we don't output any <cpu> element. In that
|
||||
case, libvirtd augments the domain config with:
|
||||
|
||||
[1] <cpu mode='custom' match='exact' check='none'>
|
||||
<model fallback='forbid'>qemu64</model>
|
||||
</cpu>
|
||||
|
||||
where the @check='none' attribute ensures that the converted domain will
|
||||
be launched, for example, on an Intel host, despite the "qemu64" VCPU
|
||||
model containing AMD-only feature flags such as "svm".
|
||||
|
||||
However, if the source domain explicitly specifies the "qemu64" model
|
||||
(mostly seen with "-i libvirt -ic qemu://..."), we presently output
|
||||
|
||||
[2] <cpu match='minimum'>
|
||||
<model fallback='allow'>qemu64</model>
|
||||
</cpu>
|
||||
|
||||
which libvirtd completes as
|
||||
|
||||
[3] <cpu mode='custom' match='minimum' check='partial'>
|
||||
<model fallback='allow'>qemu64</model>
|
||||
</cpu>
|
||||
|
||||
In [3], cpu/@match='minimum' and cpu/model/@fallback='allow' are both
|
||||
laxer than @match='exact' and @fallback='forbid', respectively, in [1].
|
||||
|
||||
However, cpu/@check='partial' in [3] is stricter than @check='none' in
|
||||
[1]; it causes libvirtd to catch the "svm" feature flag on an Intel host,
|
||||
and prevents the converted domain from starting.
|
||||
|
||||
The "qemu64" VCPU model is supposed to run on every possible host
|
||||
<https://gitlab.com/qemu-project/qemu/-/blob/master/docs/system/cpu-models-x86.rst.inc>,
|
||||
therefore make an exception for the explicitly specified "qemu64" VCPU
|
||||
model, and generate the @check='none' attribute.
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2107503
|
||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
||||
Message-Id: <20220722073627.6511-1-lersek@redhat.com>
|
||||
Acked-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
(cherry picked from commit e5297c3180fd3ebea41a40f4c5a66969a24b9ff3)
|
||||
---
|
||||
output/create_libvirt_xml.ml | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml
|
||||
index 531a4f75..bd01304d 100644
|
||||
--- a/output/create_libvirt_xml.ml
|
||||
+++ b/output/create_libvirt_xml.ml
|
||||
@@ -192,6 +192,8 @@ let create_libvirt_xml ?pool source inspect
|
||||
List.push_back cpu_attrs ("mode", "host-passthrough");
|
||||
| Some model ->
|
||||
List.push_back cpu_attrs ("match", "minimum");
|
||||
+ if model = "qemu64" then
|
||||
+ List.push_back cpu_attrs ("check", "none");
|
||||
(match source.s_cpu_vendor with
|
||||
| None -> ()
|
||||
| Some vendor ->
|
||||
--
|
||||
2.31.1
|
||||
|
@ -16,7 +16,7 @@
|
||||
Name: virt-v2v
|
||||
Epoch: 1
|
||||
Version: 2.0.7
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: Convert a virtual machine to run on KVM
|
||||
|
||||
License: GPLv2+
|
||||
@ -62,6 +62,7 @@ Patch0026: 0026-common-Adapt-to-renamed-function-On_exit.rmdir-On_ex.patch
|
||||
Patch0027: 0027-o-rhv-Unmount-the-temporary-NFS-mountpoint-as-late-a.patch
|
||||
Patch0028: 0028-output-Permit-output-modes-to-wait-on-the-local-NBD-.patch
|
||||
Patch0029: 0029-o-rhv-Wait-for-the-NBD-server-to-exit-to-avoid-a-rac.patch
|
||||
Patch0030: 0030-output-create_libvirt_xml-relax-VCPU-feature-checkin.patch
|
||||
|
||||
%if !0%{?rhel}
|
||||
# libguestfs hasn't been built on i686 for a while since there is no
|
||||
@ -340,6 +341,9 @@ rm $RPM_BUILD_ROOT%{_mandir}/man1/virt-v2v-in-place.1*
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Jul 25 Laszlo Ersek <lersek@redhat.com> - 1:2.0.7-3
|
||||
- relax qemu64 VCPU feature checking in the libvirt output
|
||||
resolves rhbz#2107503
|
||||
* Fri Jul 15 2022 Richard W.M. Jones <rjones@redhat.com> - 1:2.0.7-2
|
||||
- Rebase to stable branch version 2.0.7
|
||||
resolves: rhbz#2059287, rhbz#1658126, rhbz#1788823, rhbz#1854275
|
||||
|
Loading…
Reference in New Issue
Block a user