[libvirt] [PATCH 7/7] qemu: Allow making vcpus hotpluggable with virDomainSetVcpusFlags

Peter Krempa pkrempa at redhat.com
Thu Sep 29 12:02:57 UTC 2016


On Thu, Sep 29, 2016 at 16:29:13 +0530, Shivaprasad G Bhat wrote:
> 
> On 09/21/2016 05:19 PM, Peter Krempa wrote:
> > Implement support for VIR_DOMAIN_VCPU_HOTPLUGGABLE so that users can
> > choose to make vcpus added by the API removable.
> > ---
> >   src/qemu/qemu_driver.c | 22 ++++++++++++++++------
> >   1 file changed, 16 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> > index 357be4e..8453628 100644
> > --- a/src/qemu/qemu_driver.c
> > +++ b/src/qemu/qemu_driver.c
> > @@ -4912,7 +4912,8 @@ qemuDomainSetVcpusLive(virQEMUDriverPtr driver,
> >    */
> >   static void
> >   qemuDomainSetVcpusConfig(virDomainDefPtr def,
> > -                         unsigned int nvcpus)
> > +                         unsigned int nvcpus,
> > +                         bool hotpluggable)
> >   {
> >       virDomainVcpuDefPtr vcpu;
> Here  if (curvcpus == nvcpus)
> 
>                      return
>     we still need to allow if someone wants to switch from hotpluggable 
> = yes to no/ vice versa.

No. As no new vcpus were added there's nothing to turn to hotpluggable.
The flag turns only the newly added vcpus as hotpluggable.

> 
> 
> >       size_t curvcpus = virDomainDefGetVcpus(def);
> > @@ -4933,7 +4934,12 @@ qemuDomainSetVcpusConfig(virDomainDefPtr def,
> >                   continue;
> >
> >               vcpu->online = true;
> > -            vcpu->hotpluggable = VIR_TRISTATE_BOOL_NO;
> > +            if (hotpluggable) {
> > +                vcpu->hotpluggable = VIR_TRISTATE_BOOL_YES;
> > +                def->individualvcpus = true;
> > +            } else {
> > +                vcpu->hotpluggable = VIR_TRISTATE_BOOL_NO;
> > +            }
> >
> >               if (++curvcpus == nvcpus)
> >                   break;
> 
> Can we add checks here to see on PPC, the config is valid with a check 
> when topology is given in xml to see (curvcpus%threads_per_core == 0)

No. For PPC and all the weird archs that don't have thread level hotplug
we can't really know what to use and what is a legitimate configuration
until we start the VM and query qemu.

> Otherwise with virsh setvcpus rhel71 13 --config --hotpluggable
> for a guest with topology     <topology sockets='8' cores='2' threads='4'/>
> we would see,
> 2016-09-29 10:12:05.929+0000: 1137: error : 
> qemuProcessValidateHotpluggableVcpus:4829 : unsupported configuration: 
> vcpus '12' and '13' are in the same hotplug group but differ in 
> configuration

Yes, you can configure the same thing manually in the XML.

> 
> OR
> 
> Even when setvcpus live to a number not leading to a complete core, we 
> have checks leading to sensible error (error: unsupported configuration: 
> target vm vcpu granularity does not allow the desired vcpu count ) . So, 
> in case of --config also may be we can add the check to bring the 
> consistency.

As said above. Libvirt can't surely detect that the "weird" approach is
needed.

Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160929/d2a0b1af/attachment-0001.sig>


More information about the libvir-list mailing list