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)
|
pci_one_device_bound_uio(void)
|
||||||
{
|
{
|
||||||
struct rte_pci_device *dev = NULL;
|
struct rte_pci_device *dev = NULL;
|
||||||
|
struct rte_devargs *devargs;
|
||||||
|
int need_check;
|
||||||
|
|
||||||
FOREACH_DEVICE_ON_PCIBUS(dev) {
|
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 ||
|
if (dev->kdrv == RTE_KDRV_IGB_UIO ||
|
||||||
dev->kdrv == RTE_KDRV_UIO_GENERIC) {
|
dev->kdrv == RTE_KDRV_UIO_GENERIC) {
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user