pci: fix probing blacklisted device with RTE_PCI_DRV_MULTIPLE flag

When blacklisting network adapters that share a PCI bus address with multiple
ports such as Mellanox ConnectX-3 (librte_pmd_mlx4), RTE applications
enter infinite loops while probing PCI devices.

This commit removes this probe on subsequent instances for blacklisted devices
that have RTE_PCI_DRV_MULTIPLE set.

Signed-off-by: Julien Courtat <julien.courtat@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
Julien Courtat 2013-06-03 00:00:00 +00:00 committed by Thomas Monjalon
parent a22f5ce8fc
commit 06bcaf50ca

View File

@ -121,7 +121,8 @@ pci_probe_all_drivers(struct rte_pci_device *dev)
if (rte_eal_pci_probe_one_driver(dr, dev))
continue;
/* initialize subsequent driver instances for this device */
if (dr->drv_flags & RTE_PCI_DRV_MULTIPLE)
if ((dr->drv_flags & RTE_PCI_DRV_MULTIPLE) &&
(!dev->blacklisted))
while (rte_eal_pci_probe_one_driver(dr, dev) == 0)
;
return 0;