On Tue, Jan 04, 2022 at 07:52:44PM +0100, Andrea Bolognani wrote: > From: Roman Bolshakov <r.bolshakov@xxxxxxxxx> > > It replaces hardcoded checks that select accelCPU/accelCPUModels > (formerly known as kvmCPU/kvmCPUModels) for KVM. It'll be cleaner to use > the function when multiple accelerators are supported in qemu driver. > > Explicit KVM domain checks should be done only when a feature is > available only for KVM. > > Signed-off-by: Roman Bolshakov <r.bolshakov@xxxxxxxxx> > Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx> > --- > src/qemu/qemu_capabilities.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index ca060485fa..e2ce2a5d07 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -788,6 +788,11 @@ const char *virQEMUCapsArchToString(virArch arch) > return virArchToString(arch); > } > > +static bool > +virQEMUCapsTypeIsAccelerated(virDomainVirtType type) > +{ > + return type == VIR_DOMAIN_VIRT_KVM; > +} > > /* Checks whether a domain with @guest arch can run natively on @host. > */ > @@ -2328,7 +2333,7 @@ virQEMUCapsIsCPUModeSupported(virQEMUCaps *qemuCaps, > > switch (mode) { > case VIR_CPU_MODE_HOST_PASSTHROUGH: > - return type == VIR_DOMAIN_VIRT_KVM && > + return virQEMUCapsTypeIsAccelerated(type) && > virQEMUCapsGuestIsNative(hostarch, qemuCaps->arch); > > case VIR_CPU_MODE_HOST_MODEL: > @@ -2990,7 +2995,7 @@ virQEMUCapsProbeQMPHostCPU(virQEMUCaps *qemuCaps, > qemuMonitor *mon, > virDomainVirtType virtType) > { > - const char *model = virtType == VIR_DOMAIN_VIRT_KVM ? "host" : "max"; > + const char *model = virQEMUCapsTypeIsAccelerated(virtType) ? "host" : "max"; > g_autoptr(qemuMonitorCPUModelInfo) modelInfo = NULL; > g_autoptr(qemuMonitorCPUModelInfo) nonMigratable = NULL; > g_autoptr(GHashTable) hash = NULL; > @@ -3700,7 +3705,7 @@ virQEMUCapsInitHostCPUModel(virQEMUCaps *qemuCaps, > virArchToString(qemuCaps->arch), > virDomainVirtTypeToString(type)); > goto error; > - } else if (type == VIR_DOMAIN_VIRT_KVM && > + } else if (virQEMUCapsTypeIsAccelerated(type) && > virCPUGetHostIsSupported(qemuCaps->arch)) { > if (!(fullCPU = virQEMUCapsProbeHostCPU(qemuCaps->arch, NULL))) > goto error; > @@ -5827,7 +5832,7 @@ virQEMUCapsCacheLookupDefault(virFileCache *cache, > if (virttype == VIR_DOMAIN_VIRT_NONE) > virttype = capsType; > > - if (virttype == VIR_DOMAIN_VIRT_KVM && capsType == VIR_DOMAIN_VIRT_QEMU) { > + if (virQEMUCapsTypeIsAccelerated(virttype) && capsType == VIR_DOMAIN_VIRT_QEMU) { > virReportError(VIR_ERR_INVALID_ARG, > _("KVM is not supported by '%s' on this host"), > binary); s/KVM/Hardware acceleration/ Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|