[libvirt] [PATCH v2 1/8] Revert "prevent hot unplugging multi function PCI device"

Shivaprasad bhat shivaprasadbhat at gmail.com
Mon May 23 09:03:30 UTC 2016


On Thu, May 19, 2016 at 11:13 PM, Laine Stump <laine at laine.org> wrote:

> If you're going to say in the commit that you're reverting something, you
> should list the commit id of the patch you're reverting (even if, as in
> this case, the revert couldn't be done with "git revert").
>
> Usually, though, a revert is done to remove something that shouldn't have
> been committed in the first place, while these bits were correct.
>
> Of course I think that after review it would be more proper to squash this
> patch into the one that actually enables hot-unplug of multifunction
> devices. ACK on what it does, though.
>
>
Agree. Will change the commit message.


>
> On 05/18/2016 05:29 PM, Shivaprasad G Bhat wrote:
>
>> This has to go. The unlugging is going to be supported.
>>
>> Signed-off-by: Shivaprasad G Bhat <sbhat at linux.vnet.ibm.com>
>> ---
>>   src/qemu/qemu_hotplug.c |   60
>> -----------------------------------------------
>>   1 file changed, 60 deletions(-)
>>
>> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
>> index f40b34d..5b822f9 100644
>> --- a/src/qemu/qemu_hotplug.c
>> +++ b/src/qemu/qemu_hotplug.c
>> @@ -2770,35 +2770,6 @@ qemuDomainChangeGraphics(virQEMUDriverPtr driver,
>>       return ret;
>>   }
>>   -
>> -static int qemuComparePCIDevice(virDomainDefPtr def ATTRIBUTE_UNUSED,
>> -                                virDomainDeviceDefPtr device
>> ATTRIBUTE_UNUSED,
>> -                                virDomainDeviceInfoPtr info1,
>> -                                void *opaque)
>> -{
>> -    virDomainDeviceInfoPtr info2 = opaque;
>> -
>> -    if (info1->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI ||
>> -        info2->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI)
>> -        return 0;
>> -
>> -    if (info1->addr.pci.domain == info2->addr.pci.domain &&
>> -        info1->addr.pci.bus == info2->addr.pci.bus &&
>> -        info1->addr.pci.slot == info2->addr.pci.slot &&
>> -        info1->addr.pci.function != info2->addr.pci.function)
>> -        return -1;
>> -    return 0;
>> -}
>> -
>> -static bool qemuIsMultiFunctionDevice(virDomainDefPtr def,
>> -                                      virDomainDeviceInfoPtr dev)
>> -{
>> -    if (virDomainDeviceInfoIterate(def, qemuComparePCIDevice, dev) < 0)
>> -        return true;
>> -    return false;
>> -}
>> -
>> -
>>   static int
>>   qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver,
>>                              virDomainObjPtr vm,
>> @@ -3407,13 +3378,6 @@ qemuDomainDetachVirtioDiskDevice(virQEMUDriverPtr
>> driver,
>>       int ret = -1;
>>       qemuDomainObjPrivatePtr priv = vm->privateData;
>>   -    if (qemuIsMultiFunctionDevice(vm->def, &detach->info)) {
>> -        virReportError(VIR_ERR_OPERATION_FAILED,
>> -                       _("cannot hot unplug multifunction PCI device:
>> %s"),
>> -                       detach->dst);
>> -        goto cleanup;
>> -    }
>> -
>>       if (qemuDomainMachineIsS390CCW(vm->def) &&
>>           virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_CCW)) {
>>           if (!virDomainDeviceAddressIsValid(&detach->info,
>> @@ -3636,14 +3600,6 @@ int
>> qemuDomainDetachControllerDevice(virQEMUDriverPtr driver,
>>           goto cleanup;
>>       }
>>   -    if (detach->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
>> -        qemuIsMultiFunctionDevice(vm->def, &detach->info)) {
>> -        virReportError(VIR_ERR_OPERATION_FAILED,
>> -                       _("cannot hot unplug multifunction PCI device:
>> %s"),
>> -                       dev->data.disk->dst);
>> -        goto cleanup;
>> -    }
>> -
>>       if (qemuDomainControllerIsBusy(vm, detach)) {
>>           virReportError(VIR_ERR_OPERATION_FAILED, "%s",
>>                          _("device cannot be detached: device is busy"));
>> @@ -3679,17 +3635,8 @@ qemuDomainDetachHostPCIDevice(virQEMUDriverPtr
>> driver,
>>                                 virDomainHostdevDefPtr detach)
>>   {
>>       qemuDomainObjPrivatePtr priv = vm->privateData;
>> -    virDomainHostdevSubsysPCIPtr pcisrc = &detach->source.subsys.u.pci;
>>       int ret;
>>   -    if (qemuIsMultiFunctionDevice(vm->def, detach->info)) {
>> -        virReportError(VIR_ERR_OPERATION_FAILED,
>> -                       _("cannot hot unplug multifunction PCI device:
>> %.4x:%.2x:%.2x.%.1x"),
>> -                       pcisrc->addr.domain, pcisrc->addr.bus,
>> -                       pcisrc->addr.slot, pcisrc->addr.function);
>> -        return -1;
>> -    }
>> -
>>       if (!virDomainDeviceAddressIsValid(detach->info,
>>
>>  VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI)) {
>>           virReportError(VIR_ERR_OPERATION_FAILED,
>> @@ -3921,13 +3868,6 @@ qemuDomainDetachNetDevice(virQEMUDriverPtr driver,
>>                               "%s", _("device cannot be detached without
>> a PCI address"));
>>               goto cleanup;
>>           }
>> -
>> -        if (qemuIsMultiFunctionDevice(vm->def, &detach->info)) {
>> -            virReportError(VIR_ERR_OPERATION_FAILED,
>> -                            _("cannot hot unplug multifunction PCI
>> device :%s"),
>> -                            dev->data.disk->dst);
>> -            goto cleanup;
>> -        }
>>       }
>>         if (!detach->info.alias) {
>>
>> --
>> libvir-list mailing list
>> libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160523/69524d46/attachment-0001.htm>


More information about the libvir-list mailing list