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

Guannan Ren gren at redhat.com
Sun Jul 3 12:09:44 UTC 2011


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);
-- 
1.7.1




More information about the libvir-list mailing list