[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