env_dpdk/pci: Refactor PCI bus scan
Preparing for potential 22.11 changes, refactor this code using DPDK api: - a bus device list can be walked through via RTE_DEV_FOREACH, - a reference to the bus object is directly available under the device, Signed-off-by: David Marchand <david.marchand@redhat.com> Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Id3a21a6e62dfa1619a92465fac5a82afb9b43cb0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14532 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
36644ef32f
commit
b313652b30
@ -572,22 +572,21 @@ spdk_pci_device_detach(struct spdk_pci_device *dev)
|
||||
static int
|
||||
scan_pci_bus(bool delay_init)
|
||||
{
|
||||
struct spdk_pci_driver *driver;
|
||||
struct rte_pci_device *rte_dev;
|
||||
struct rte_dev_iterator it;
|
||||
struct rte_device *rte_dev;
|
||||
uint64_t now;
|
||||
|
||||
rte_bus_scan();
|
||||
now = spdk_get_ticks();
|
||||
|
||||
driver = TAILQ_FIRST(&g_pci_drivers);
|
||||
if (!driver) {
|
||||
if (!TAILQ_FIRST(&g_pci_drivers)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(rte_dev, &driver->driver.bus->device_list, next) {
|
||||
RTE_DEV_FOREACH(rte_dev, "bus=pci", &it) {
|
||||
struct rte_devargs *da;
|
||||
|
||||
da = rte_dev->device.devargs;
|
||||
da = rte_dev->devargs;
|
||||
if (!da) {
|
||||
char devargs_str[128];
|
||||
|
||||
@ -597,14 +596,14 @@ scan_pci_bus(bool delay_init)
|
||||
return -1;
|
||||
}
|
||||
|
||||
snprintf(devargs_str, sizeof(devargs_str), "pci:%s", rte_dev->device.name);
|
||||
snprintf(devargs_str, sizeof(devargs_str), "pci:%s", rte_dev->name);
|
||||
if (rte_devargs_parse(da, devargs_str) != 0) {
|
||||
free(da);
|
||||
return -1;
|
||||
}
|
||||
|
||||
rte_devargs_insert(&da);
|
||||
rte_dev->device.devargs = da;
|
||||
rte_dev->devargs = da;
|
||||
}
|
||||
|
||||
if (get_allowed_at(da)) {
|
||||
@ -614,7 +613,7 @@ scan_pci_bus(bool delay_init)
|
||||
if (da->policy == RTE_DEV_BLOCKED && allowed_at <= now) {
|
||||
da->policy = RTE_DEV_ALLOWED;
|
||||
}
|
||||
} else if ((driver->driver.bus->bus.conf.scan_mode == RTE_BUS_SCAN_ALLOWLIST &&
|
||||
} else if ((rte_dev->bus->conf.scan_mode == RTE_BUS_SCAN_ALLOWLIST &&
|
||||
da->policy == RTE_DEV_ALLOWED) || da->policy != RTE_DEV_BLOCKED) {
|
||||
/* override the policy only if not permanently blocked */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user