bus/pci: optimise scanning with whitelist/blacklist
authorSunil Kumar Kori <skori@marvell.com>
Sat, 2 May 2020 07:42:05 +0000 (13:12 +0530)
committerDavid Marchand <david.marchand@redhat.com>
Mon, 11 May 2020 14:59:58 +0000 (16:59 +0200)
commit463a5245d557000c7f2f49ebe6eaa781d58e538a
tree42a1a0f6de5275b3e69ecabc3e6b8c3218158e0f
parent87db93e07aeeecc96a9e63b43a652511b95013d6
bus/pci: optimise scanning with whitelist/blacklist

rte_bus_scan API scans all the available PCI devices irrespective of white
or black listing parameters then further devices are probed based on white
or black listing parameters. So unnecessary CPU cycles are wasted during
rte_pci_scan.

For Octeontx2 platform with core frequency 2.4 Ghz, rte_bus_scan consumes
around 26ms to scan around 90 PCI devices but all may not be used by the
application. So for the application which uses 2 NICs, rte_bus_scan
consumes few microseconds and rest time is saved with this patch.

Patch restricts devices to be scanned as per below mentioned conditions:
 - All devices will be scanned if no parameters are passed.
 - Only white listed devices will be scanned if white list is available.
 - All devices, except black listed, will be scanned if black list is
   available.

Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Gaetan Rivet <grive@u256.net>
drivers/bus/pci/bsd/pci.c
drivers/bus/pci/linux/pci.c
drivers/bus/pci/pci_common.c
drivers/bus/pci/private.h