[dpdk-dev] [PATCH] bus/pci: optimize pci device probe

jerinj at marvell.com jerinj at marvell.com
Sun Apr 26 19:38:10 CEST 2020


From: Jerin Jacob <jerinj at marvell.com>

If the PCI device is not attached to any driver then there is no
point in probing it. As an optimization, skip the PCI device probe if
the PCI device driver of type RTE_KDRV_NONE.

Signed-off-by: Jerin Jacob <jerinj at marvell.com>
---
Notes:
------
- virtio drivers does special treatment based on RTE_KDRV_UNKNOWN, That is
the reason allowing RTE_KDRV_UNKNOWN in this patch.
- virio devices uses RTE_KDRV_UNKNOWN for some special meaning, IMO, if it would
  be better, if
a) Introduce the KDRV for virio
b) If the PCIe device of driver type NONE or UNKNOWN then not even add in pci
list
in the scan, It will improve the boot time by avoiding operation on
unwanted device like sorting the PCI devices, scanning it, probe it, managing
it etc.

- Initial problem reported at http://patches.dpdk.org/patch/64999/ as
boot time printf clutter on octeontx2 devices with a lot PCI devices which are
of type RTE_KDRV_NONE.

 drivers/bus/pci/pci_common.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
index 3f5542076..2fa3d85ae 100644
--- a/drivers/bus/pci/pci_common.c
+++ b/drivers/bus/pci/pci_common.c
@@ -271,6 +271,8 @@ pci_probe_all_drivers(struct rte_pci_device *dev)
 		return -EINVAL;

 	FOREACH_DRIVER_ON_PCIBUS(dr) {
+		if (dev->kdrv == RTE_KDRV_NONE)
+			continue;
 		rc = rte_pci_probe_one_driver(dr, dev);
 		if (rc < 0)
 			/* negative value is an error */
--
2.26.2



More information about the dev mailing list