[libvirt] [PATCHv2 01/16] qemu: Add KVM CPUs into cache only if KVM is present

Roman Bolshakov r.bolshakov at yadro.com
Wed Nov 21 17:50:50 UTC 2018


On Wed, Nov 21, 2018 at 05:04:07PM +0100, Jiri Denemark wrote:
> On Wed, Nov 21, 2018 at 17:01:44 +0300, Roman Bolshakov wrote:
> > From: Roman Bolshakov <roolebo at gmail.com>
> > 
> > virQEMUCapsFormatCache/virQEMUCapsLoadCache adds/reads KVM CPUs to/from
> > capabilities cache regardless of QEMU_CAPS_KVM. That can cause undesired
> > side-effects when KVM CPUs are present in the cache on a platform that
> > doesn't support it, e.g. macOS or Linux without KVM support.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> > Signed-off-by: Roman Bolshakov <roolebo at gmail.com>
> 
> This doesn't look like a patch written by Daniel so why did you include
> the Signed-off-by line? Or did I miss anything?

Daniel kindly helped to root cause an issue I had with
qemucapabilitiestest in v1:
https://www.redhat.com/archives/libvir-list/2018-November/msg00740.html

and provided a diff that resolves the issue:
https://www.redhat.com/archives/libvir-list/2018-November/msg00767.html

Should I remove his Signed-off-by tag?

> 
> > ---
> >  src/qemu/qemu_capabilities.c | 18 ++++++++++++------
> >  1 file changed, 12 insertions(+), 6 deletions(-)
> > 
> > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> > index fde27010e4..4ba8369e3a 100644
> > --- a/src/qemu/qemu_capabilities.c
> > +++ b/src/qemu/qemu_capabilities.c
> > @@ -3467,11 +3467,13 @@ virQEMUCapsLoadCache(virArch hostArch,
> >      }
> >      VIR_FREE(str);
> >  
> > -    if (virQEMUCapsLoadHostCPUModelInfo(qemuCaps, ctxt, VIR_DOMAIN_VIRT_KVM) < 0 ||
> > +    if ((virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) &&
> > +         virQEMUCapsLoadHostCPUModelInfo(qemuCaps, ctxt, VIR_DOMAIN_VIRT_KVM) < 0) ||
> >          virQEMUCapsLoadHostCPUModelInfo(qemuCaps, ctxt, VIR_DOMAIN_VIRT_QEMU) < 0)
> >          goto cleanup;
> 
> I don't think we should introduce these guards in all the places. All
> the loading and formatting functions should return success if the
> appropriate info is not available, so you should just make sure the
> relevant info is NULL in qemuCaps.
> 

Do you mean the capabilities checks should be moved inside the
functions? Either way they're needed to avoid loading KVM cpus into QEMU
caps cache on the hosts without KVM support.

> > @@ -3584,7 +3586,8 @@ virQEMUCapsLoadCache(virArch hostArch,
> >      if (virQEMUCapsParseSEVInfo(qemuCaps, ctxt) < 0)
> >          goto cleanup;
> >  
> > -    virQEMUCapsInitHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_KVM);
> > +    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM))
> > +      virQEMUCapsInitHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_KVM);
> 
> Please, follow our coding style, i.e., indent by 4 spaces.
> 
> >      virQEMUCapsInitHostCPUModel(qemuCaps, hostArch, VIR_DOMAIN_VIRT_QEMU);
> >  
> >      ret = 0;
> ...

Will do, thank you for catching this!

Best regards,
Roman




More information about the libvir-list mailing list