Commit 10ed0eb7 authored by David Marchand's avatar David Marchand Committed by Tomasz Zawadzki
Browse files

env_dpdk/pci: adapt to 20.11 EAL changes

DPDK 20.11 renamed device and bus control enums [1].
This is a simple renaming, no change in semantics.

1: https://git.dpdk.org/dpdk/commit/?id=a65a34a85ebf



Signed-off-by: default avatarDavid Marchand <david.marchand@redhat.com>
Change-Id: Ia40bae750ad74f405eb700b47514fca021ffd052
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5116


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 00a126be
Loading
Loading
Loading
Loading
+20 −13
Original line number Diff line number Diff line
@@ -40,6 +40,13 @@

#define SYSFS_PCI_DRIVERS	"/sys/bus/pci/drivers"

/* Compatibility for versions < 20.11 */
#ifndef RTE_DEV_ALLOWED
#define RTE_DEV_ALLOWED RTE_DEV_WHITELISTED
#define RTE_DEV_BLOCKED RTE_DEV_BLACKLISTED
#define RTE_BUS_SCAN_ALLOWLIST RTE_BUS_SCAN_WHITELIST
#endif

#define PCI_CFG_SIZE		256
#define PCI_EXT_CAP_ID_SN	0x03

@@ -340,7 +347,7 @@ _pci_env_init(void)
{
	/* We assume devices were present on the bus for more than 2 seconds
	 * before initializing SPDK and there's no need to wait more. We scan
	 * the bus, but we don't blacklist any devices.
	 * the bus, but we don't block any devices.
	 */
	scan_pci_bus(false);

@@ -459,7 +466,7 @@ pci_device_fini(struct rte_pci_device *_dev)
		return -1;
	}

	/* remove our whitelist_at option */
	/* remove our allowed_at option */
	if (_dev->device.devargs) {
		_dev->device.devargs->data = NULL;
	}
@@ -518,7 +525,7 @@ scan_pci_bus(bool delay_init)
		if (!da) {
			char devargs_str[128];

			/* the device was never blacklisted or whitelisted */
			/* the device was never blocked or allowed */
			da = calloc(1, sizeof(*da));
			if (!da) {
				return -1;
@@ -535,21 +542,21 @@ scan_pci_bus(bool delay_init)
		}

		if (da->data) {
			uint64_t whitelist_at = (uint64_t)(uintptr_t)da->data;
			uint64_t allowed_at = (uint64_t)(uintptr_t)da->data;

			/* this device was seen by spdk before... */
			if (da->policy == RTE_DEV_BLACKLISTED && whitelist_at <= now) {
				da->policy = RTE_DEV_WHITELISTED;
			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_WHITELIST &&
			    da->policy == RTE_DEV_WHITELISTED) || da->policy != RTE_DEV_BLACKLISTED) {
			/* override the policy only if not permanently blacklisted */
		} else if ((driver->driver.bus->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 */

			if (delay_init) {
				da->policy = RTE_DEV_BLACKLISTED;
				da->policy = RTE_DEV_BLOCKED;
				da->data = (void *)(now + 2 * spdk_get_ticks_hz());
			} else {
				da->policy = RTE_DEV_WHITELISTED;
				da->policy = RTE_DEV_ALLOWED;
				da->data = (void *)(uintptr_t)now;
			}
		}
@@ -619,7 +626,7 @@ spdk_pci_device_attach(struct spdk_pci_driver *driver,
		return -1;
	}

	/* explicit attach ignores the whitelist, so if we blacklisted this
	/* explicit attach ignores the allowlist, so if we blocked this
	 * device before let's enable it now - just for clarity.
	 */
	TAILQ_FOREACH(dev, &g_pci_devices, internal.tailq) {
@@ -633,7 +640,7 @@ spdk_pci_device_attach(struct spdk_pci_driver *driver,
	da = rte_dev->device.devargs;
	if (da && da->data) {
		da->data = (void *)(uintptr_t)spdk_get_ticks();
		da->policy = RTE_DEV_WHITELISTED;
		da->policy = RTE_DEV_ALLOWED;
	}

	return 0;