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 | Name:          virt-v2v | ||||||
| Epoch:         1 | Epoch:         1 | ||||||
| Version:       2.0.7 | Version:       2.0.7 | ||||||
| Release:       2%{?dist} | Release:       3%{?dist} | ||||||
| Summary:       Convert a virtual machine to run on KVM | Summary:       Convert a virtual machine to run on KVM | ||||||
| 
 | 
 | ||||||
| License:       GPLv2+ | 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 | 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 | 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 | 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} | %if !0%{?rhel} | ||||||
| # libguestfs hasn't been built on i686 for a while since there is no | # 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 | %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 | * Fri Jul 15 2022 Richard W.M. Jones <rjones@redhat.com> - 1:2.0.7-2 | ||||||
| - Rebase to stable branch version 2.0.7 | - Rebase to stable branch version 2.0.7 | ||||||
|   resolves: rhbz#2059287, rhbz#1658126, rhbz#1788823, rhbz#1854275 |   resolves: rhbz#2059287, rhbz#1658126, rhbz#1788823, rhbz#1854275 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user