[libvirt] [PATCH 08/19] util: new function virPCIDeviceRebind()

Laine Stump laine at laine.org
Fri Mar 17 14:02:04 UTC 2017


On 03/17/2017 09:32 AM, Michal Privoznik wrote:
> On 03/10/2017 09:35 PM, Laine Stump wrote:
>> This function unbinds a device from its driver, then immediately
>> rebinds it to its driver again.
>> ---
>>  src/libvirt_private.syms |  1 +
>>  src/util/virpci.c        | 25 +++++++++++++++++++++++++
>>  src/util/virpci.h        |  1 +
>>  3 files changed, 27 insertions(+)
>>
>> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>> index b44a6ee..ef027cc 100644
>> --- a/src/libvirt_private.syms
>> +++ b/src/libvirt_private.syms
>> @@ -2217,6 +2217,7 @@ virPCIDeviceListSteal;
>>  virPCIDeviceListStealIndex;
>>  virPCIDeviceNew;
>>  virPCIDeviceReattach;
>> +virPCIDeviceRebind;
>>  virPCIDeviceReset;
>>  virPCIDeviceSetManaged;
>>  virPCIDeviceSetRemoveSlot;
>> diff --git a/src/util/virpci.c b/src/util/virpci.c
>> index 9878398..a007eea 100644
>> --- a/src/util/virpci.c
>> +++ b/src/util/virpci.c
>> @@ -1101,6 +1101,31 @@ virPCIDeviceUnbind(virPCIDevicePtr dev)
>>      return ret;
>>  }
>>
>> +
>> +/**
>> + * virPCIDeviceRebind:
>> + *  @dev: virPCIDevice object describing the device to rebind
>> + *
>> + * unbind a device from its driver, then immediately rebind it.
>> + *
>> + * Returns 0 on success, -1 on failure
>> + */
>> +int virPCIDeviceRebind(virPCIDevicePtr dev)
>> +{
>> +    if (virPCIDeviceUnbind(dev) < 0)
>> +        return -1;
>> +
>> +    if (virFileWriteStr(PCI_SYSFS "drivers_probe", dev->name, 0) < 0) {
>> +        virReportSystemError(errno,
>> +                             _("Failed to trigger a probe for PCI
>> device '%s'"),
>> +                             dev->name);
>> +        return -1;
>> +    }
>> +
>> +    return 0;
>> +}
>> +
> 
> This is the same code as in virPCIDeviceBindWithDriverOverride(). ACK if
> you replace it with call to this function.

Ah, okay. It took me a second to parse your request - at first I was
thinking "No, it's not the same as virPCIDeviceBindWithDriverOverride()
- there's extra stuff in that function!". Then I realized you meant I
should replace those lines in ....WithDriverOverride() with a call to
this new function. Sure, that makes sense.

> 
> Michal
> 




More information about the libvir-list mailing list