[PATCH 17/20] virpci.c: use virPCIDeviceAddressPtr in virPCIDeviceListFind()

Daniel Henrique Barboza danielhb413 at gmail.com
Mon Jan 4 12:54:41 UTC 2021


Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
---
 src/hypervisor/virhostdev.c | 12 ++++++++----
 src/util/virpci.c           | 16 ++++++++--------
 src/util/virpci.h           |  2 +-
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c
index 16a21f240b..e7ef615f60 100644
--- a/src/hypervisor/virhostdev.c
+++ b/src/hypervisor/virhostdev.c
@@ -657,7 +657,8 @@ virHostdevReattachAllPCIDevices(virHostdevManagerPtr mgr,
 
         /* We need to look up the actual device because that's what
          * virPCIDeviceReattach() expects as its argument */
-        if (!(actual = virPCIDeviceListFind(mgr->inactivePCIHostdevs, pci)))
+        if (!(actual = virPCIDeviceListFind(mgr->inactivePCIHostdevs,
+                                            virPCIDeviceGetAddress(pci))))
             continue;
 
         if (virPCIDeviceGetManaged(actual)) {
@@ -777,7 +778,8 @@ virHostdevPreparePCIDevicesImpl(virHostdevManagerPtr mgr,
 
             /* Unmanaged devices should already have been marked as
              * inactive: if that's the case, we can simply move on */
-            if (virPCIDeviceListFind(mgr->inactivePCIHostdevs, pci)) {
+            if (virPCIDeviceListFind(mgr->inactivePCIHostdevs,
+                                     virPCIDeviceGetAddress(pci))) {
                 VIR_DEBUG("Not detaching unmanaged PCI device %s",
                           virPCIDeviceGetName(pci));
                 continue;
@@ -860,7 +862,8 @@ virHostdevPreparePCIDevicesImpl(virHostdevManagerPtr mgr,
          * there because 'pci' only contain address information and will
          * be released at the end of the function */
         pci = virPCIDeviceListGet(pcidevs, i);
-        actual = virPCIDeviceListFind(mgr->activePCIHostdevs, pci);
+        actual = virPCIDeviceListFind(mgr->activePCIHostdevs,
+                                      virPCIDeviceGetAddress(pci));
 
         VIR_DEBUG("Setting driver and domain information for PCI device %s",
                   virPCIDeviceGetName(pci));
@@ -992,7 +995,8 @@ virHostdevReAttachPCIDevicesImpl(virHostdevManagerPtr mgr,
          * information such as by which domain and driver it is used. As a
          * side effect, by looking it up we can also tell whether it was
          * really active in the first place */
-        actual = virPCIDeviceListFind(mgr->activePCIHostdevs, pci);
+        actual = virPCIDeviceListFind(mgr->activePCIHostdevs,
+                                      virPCIDeviceGetAddress(pci));
         if (actual) {
             const char *actual_drvname;
             const char *actual_domname;
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 122056dbe0..938ffeaaed 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -705,7 +705,7 @@ virPCIDeviceSharesBusWithActive(virPCIDevicePtr dev, virPCIDevicePtr check, void
         return 0;
 
     /* same bus, but inactive, i.e. about to be assigned to guest */
-    if (inactiveDevs && virPCIDeviceListFind(inactiveDevs, check))
+    if (inactiveDevs && virPCIDeviceListFind(inactiveDevs, &check->address))
         return 0;
 
     return 1;
@@ -1022,7 +1022,7 @@ virPCIDeviceReset(virPCIDevicePtr dev,
         return -1;
     }
 
-    if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) {
+    if (activeDevs && virPCIDeviceListFind(activeDevs, &dev->address)) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Not resetting active device %s"), dev->name);
         return -1;
@@ -1294,7 +1294,7 @@ virPCIDeviceDetach(virPCIDevicePtr dev,
     if (virPCIProbeStubDriver(dev->stubDriver) < 0)
         return -1;
 
-    if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) {
+    if (activeDevs && virPCIDeviceListFind(activeDevs, &dev->address)) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Not detaching active device %s"), dev->name);
         return -1;
@@ -1306,7 +1306,7 @@ virPCIDeviceDetach(virPCIDevicePtr dev,
     /* Add *a copy of* the dev into list inactiveDevs, if
      * it's not already there.
      */
-    if (inactiveDevs && !virPCIDeviceListFind(inactiveDevs, dev)) {
+    if (inactiveDevs && !virPCIDeviceListFind(inactiveDevs, &dev->address)) {
         VIR_DEBUG("Adding PCI device %s to inactive list", dev->name);
         if (virPCIDeviceListAddCopy(inactiveDevs, dev) < 0)
             return -1;
@@ -1324,7 +1324,7 @@ virPCIDeviceReattach(virPCIDevicePtr dev,
                      virPCIDeviceListPtr activeDevs,
                      virPCIDeviceListPtr inactiveDevs)
 {
-    if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) {
+    if (activeDevs && virPCIDeviceListFind(activeDevs, &dev->address)) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Not reattaching active device %s"), dev->name);
         return -1;
@@ -1684,7 +1684,7 @@ int
 virPCIDeviceListAdd(virPCIDeviceListPtr list,
                     virPCIDevicePtr dev)
 {
-    if (virPCIDeviceListFind(list, dev)) {
+    if (virPCIDeviceListFind(list, &dev->address)) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Device %s is already in use"), dev->name);
         return -1;
@@ -1795,11 +1795,11 @@ virPCIDeviceListFindByIDs(virPCIDeviceListPtr list,
 
 
 virPCIDevicePtr
-virPCIDeviceListFind(virPCIDeviceListPtr list, virPCIDevicePtr dev)
+virPCIDeviceListFind(virPCIDeviceListPtr list, virPCIDeviceAddressPtr devAddr)
 {
     int idx;
 
-    if ((idx = virPCIDeviceListFindIndex(list, &dev->address)) >= 0)
+    if ((idx = virPCIDeviceListFindIndex(list, devAddr)) >= 0)
         return list->devs[idx];
     else
         return NULL;
diff --git a/src/util/virpci.h b/src/util/virpci.h
index 8c6776da21..628a293972 100644
--- a/src/util/virpci.h
+++ b/src/util/virpci.h
@@ -167,7 +167,7 @@ virPCIDevicePtr virPCIDeviceListStealIndex(virPCIDeviceListPtr list,
 void virPCIDeviceListDel(virPCIDeviceListPtr list,
                          virPCIDevicePtr dev);
 virPCIDevicePtr virPCIDeviceListFind(virPCIDeviceListPtr list,
-                                     virPCIDevicePtr dev);
+                                     virPCIDeviceAddressPtr devAddr);
 virPCIDevicePtr
 virPCIDeviceListFindByIDs(virPCIDeviceListPtr list,
                           unsigned int domain,
-- 
2.26.2




More information about the libvir-list mailing list