[libvirt] [PATCH] add a new API pciDeviceReAttachInit() in pci.c to initialize state values for nodedev reattach

Wen Congyang wency at cn.fujitsu.com
Mon Jul 4 02:14:37 UTC 2011


At 07/03/2011 08:09 PM, Guannan Ren Write:
> Initilize three state value of device driver to 1. This is just for a new call to
> qemudNodeDeviceReAttach()
> 
> ---
>  src/libvirt_private.syms |    1 +
>  src/qemu/qemu_driver.c   |    2 ++
>  src/util/pci.c           |    8 ++++++++
>  src/util/pci.h           |    1 +
>  4 files changed, 12 insertions(+), 0 deletions(-)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 626ac6c..062dcff 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -807,6 +807,7 @@ pciGetDevice;
>  pciReAttachDevice;
>  pciResetDevice;
>  pciWaitForDeviceCleanup;
> +pciDeviceReAttachInit;
>  
>  
>  # processinfo.h
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 363a361..56ccf44 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7193,6 +7193,8 @@ qemudNodeDeviceReAttach (virNodeDevicePtr dev)
>      if (!pci)
>          return -1;
>  
> +    pciDeviceReAttachInit(pci);
> +
>      qemuDriverLock(driver);
>      if (pciReAttachDevice(pci, driver->activePciHostdevs) < 0)
>          goto out;
> diff --git a/src/util/pci.c b/src/util/pci.c
> index 21c12b9..e3f978c 100644
> --- a/src/util/pci.c
> +++ b/src/util/pci.c
> @@ -1382,6 +1382,14 @@ unsigned pciDeviceGetManaged(pciDevice *dev)
>      return dev->managed;
>  }
>  
> +void pciDeviceReAttachInit(pciDevice *pci)
> +{
> +    pci->unbind_from_stub = 1;
> +    pci->remove_slot = 1;
> +    pci->reprobe = 1;
> +}
> +
> +
>  pciDeviceList *
>  pciDeviceListNew(void)
>  {
> diff --git a/src/util/pci.h b/src/util/pci.h
> index b767930..a351baf 100644
> --- a/src/util/pci.h
> +++ b/src/util/pci.h
> @@ -40,6 +40,7 @@ int        pciResetDevice    (pciDevice     *dev,
>  void      pciDeviceSetManaged(pciDevice     *dev,
>                                unsigned       managed);
>  unsigned  pciDeviceGetManaged(pciDevice     *dev);
> +void      pciDeviceReAttachInit(pciDevice   *dev);
>  
>  pciDeviceList *pciDeviceListNew  (void);
>  void           pciDeviceListFree (pciDeviceList *list);

This patch works for me.
ACK




More information about the libvir-list mailing list