On 09/29/2016 05:32 PM, Peter Krempa wrote:
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.
What if someone had the hotplug = yes. And He wants to make it "no". ?
With no changes to the vcpus.
>
>> 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