[libvirt] [PATCH 08/19] util: new function virPCIDeviceRebind()
Michal Privoznik
mprivozn at redhat.com
Fri Mar 17 13:32:50 UTC 2017
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.
Michal
More information about the libvir-list
mailing list