bus/pci: fix UIO bind check
When checking if any devices bound to uio, we did not exclude
those which are blacklisted (or in the case that a whitelist
is specified).
This patch fixes it by only checking whitelisted devices, or
not-blacklisted devices depending on the bus scan mode.
Fixes: 815c7deaed
("pci: get IOMMU class on Linux")
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
This commit is contained in:
parent
3964426e58
commit
633e4c7d71
@ -524,8 +524,29 @@ static inline int
|
||||
pci_one_device_bound_uio(void)
|
||||
{
|
||||
struct rte_pci_device *dev = NULL;
|
||||
struct rte_devargs *devargs;
|
||||
int need_check;
|
||||
|
||||
FOREACH_DEVICE_ON_PCIBUS(dev) {
|
||||
devargs = dev->device.devargs;
|
||||
|
||||
need_check = 0;
|
||||
switch (rte_pci_bus.bus.conf.scan_mode) {
|
||||
case RTE_BUS_SCAN_WHITELIST:
|
||||
if (devargs && devargs->policy == RTE_DEV_WHITELISTED)
|
||||
need_check = 1;
|
||||
break;
|
||||
case RTE_BUS_SCAN_UNDEFINED:
|
||||
case RTE_BUS_SCAN_BLACKLIST:
|
||||
if (devargs == NULL ||
|
||||
devargs->policy != RTE_DEV_BLACKLISTED)
|
||||
need_check = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!need_check)
|
||||
continue;
|
||||
|
||||
if (dev->kdrv == RTE_KDRV_IGB_UIO ||
|
||||
dev->kdrv == RTE_KDRV_UIO_GENERIC) {
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user