[dpdk-dev] [PATCH 04/12] eal/pci: Collapse two loops in rte_pci_get_iommu_class

Ben Walker benjamin.walker at intel.com
Thu May 30 19:48:11 CEST 2019


Two of these loops easily collapse into a single loop.
This sets the stage for future simplifications.

Signed-off-by: Ben Walker <benjamin.walker at intel.com>
Change-Id: I3353f2e3585808cebff3f11805f96e4a1cc7fb3a
---
 drivers/bus/pci/linux/pci.c | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index 70815e4f0..b7a66d717 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -571,7 +571,6 @@ rte_pci_get_iommu_class(void)
 	bool has_iova_va = false;
 	bool is_bound_uio = false;
 	bool iommu_no_va = false;
-	bool break_out;
 	bool need_check;
 	struct rte_pci_device *dev = NULL;
 	struct rte_pci_driver *drv = NULL;
@@ -592,8 +591,16 @@ rte_pci_get_iommu_class(void)
 	FOREACH_DEVICE_ON_PCIBUS(dev) {
 		if (dev->kdrv == RTE_KDRV_VFIO) {
 			FOREACH_DRIVER_ON_PCIBUS(drv) {
-				if (drv->drv_flags & RTE_PCI_DRV_IOVA_AS_VA &&
-				    rte_pci_match(drv, dev)) {
+				if (!rte_pci_match(drv, dev))
+					continue;
+
+				/*
+				* just one PCI device needs to be checked out because
+				* the IOMMU hardware is the same for all of them.
+				*/
+				iommu_no_va = !pci_one_device_iommu_support_va(dev);
+
+				if (drv->drv_flags & RTE_PCI_DRV_IOVA_AS_VA) {
 					has_iova_va = true;
 					break;
 				}
@@ -630,24 +637,6 @@ rte_pci_get_iommu_class(void)
 		}
 	}
 
-	break_out = false;
-	FOREACH_DEVICE_ON_PCIBUS(dev) {
-		FOREACH_DRIVER_ON_PCIBUS(drv) {
-			if (!rte_pci_match(drv, dev))
-				continue;
-			/*
-			 * just one PCI device needs to be checked out because
-			 * the IOMMU hardware is the same for all of them.
-			 */
-			iommu_no_va = !pci_one_device_iommu_support_va(dev);
-			break_out = true;
-			break;
-		}
-
-		if (break_out)
-			break;
-	}
-
 #ifdef VFIO_PRESENT
 	is_vfio_noiommu_enabled = rte_vfio_noiommu_is_enabled() == true ?
 					true : false;
-- 
2.20.1



More information about the dev mailing list