X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbus%2Fpci%2Fpci_common.c;h=35d7d092d1bf4264fe10ad02e7a79d4d96251e9b;hb=cc4219d1f0f0598d4f05ac9e24bafd6532122399;hp=39eea464b4c030061d66ede07e0df62234284cd1;hpb=e00d2b4cead0fba1af517f38938db41a7f10b729;p=dpdk.git diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c index 39eea464b4..35d7d092d1 100644 --- a/drivers/bus/pci/pci_common.c +++ b/drivers/bus/pci/pci_common.c @@ -67,8 +67,9 @@ pci_name_set(struct rte_pci_device *dev) dev->name, sizeof(dev->name)); devargs = pci_devargs_lookup(&dev->addr); dev->device.devargs = devargs; - /* In blacklist mode, if the device is not blacklisted, no - * rte_devargs exists for it. + + /* When using a blocklist, only blocked devices will have + * an rte_devargs. Allowed devices won't have one. */ if (devargs != NULL) /* If an rte_devargs exists, the generic rte_device uses the @@ -132,18 +133,18 @@ rte_pci_match(const struct rte_pci_driver *pci_drv, id_table++) { /* check if device's identifiers match the driver's ones */ if (id_table->vendor_id != pci_dev->id.vendor_id && - id_table->vendor_id != PCI_ANY_ID) + id_table->vendor_id != RTE_PCI_ANY_ID) continue; if (id_table->device_id != pci_dev->id.device_id && - id_table->device_id != PCI_ANY_ID) + id_table->device_id != RTE_PCI_ANY_ID) continue; if (id_table->subsystem_vendor_id != pci_dev->id.subsystem_vendor_id && - id_table->subsystem_vendor_id != PCI_ANY_ID) + id_table->subsystem_vendor_id != RTE_PCI_ANY_ID) continue; if (id_table->subsystem_device_id != pci_dev->id.subsystem_device_id && - id_table->subsystem_device_id != PCI_ANY_ID) + id_table->subsystem_device_id != RTE_PCI_ANY_ID) continue; if (id_table->class_id != pci_dev->id.class_id && id_table->class_id != RTE_CLASS_ANY_ID) @@ -172,7 +173,7 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr, loc = &dev->addr; - /* The device is not blacklisted; Check if driver supports it */ + /* The device is not blocked; Check if driver supports it */ if (!rte_pci_match(dr, dev)) /* Match of device and driver failed */ return 1; @@ -181,12 +182,10 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr, loc->domain, loc->bus, loc->devid, loc->function, dev->device.numa_node); - /* no initialization when blacklisted, return without error */ + /* no initialization when marked as blocked, return without error */ if (dev->device.devargs != NULL && - dev->device.devargs->policy == - RTE_DEV_BLACKLISTED) { - RTE_LOG(INFO, EAL, " Device is blacklisted, not" - " initializing\n"); + dev->device.devargs->policy == RTE_DEV_BLOCKED) { + RTE_LOG(INFO, EAL, " Device is blocked, not initializing\n"); return 1; } @@ -629,14 +628,13 @@ rte_pci_ignore_device(const struct rte_pci_addr *pci_addr) struct rte_devargs *devargs = pci_devargs_lookup(pci_addr); switch (rte_pci_bus.bus.conf.scan_mode) { - case RTE_BUS_SCAN_WHITELIST: - if (devargs && devargs->policy == RTE_DEV_WHITELISTED) + case RTE_BUS_SCAN_ALLOWLIST: + if (devargs && devargs->policy == RTE_DEV_ALLOWED) return false; break; case RTE_BUS_SCAN_UNDEFINED: - case RTE_BUS_SCAN_BLACKLIST: - if (devargs == NULL || - devargs->policy != RTE_DEV_BLACKLISTED) + case RTE_BUS_SCAN_BLOCKLIST: + if (devargs == NULL || devargs->policy != RTE_DEV_BLOCKED) return false; break; } @@ -748,6 +746,34 @@ rte_pci_find_ext_capability(struct rte_pci_device *dev, uint32_t cap) return 0; } +int +rte_pci_set_bus_master(struct rte_pci_device *dev, bool enable) +{ + uint16_t old_cmd, cmd; + + if (rte_pci_read_config(dev, &old_cmd, sizeof(old_cmd), + RTE_PCI_COMMAND) < 0) { + RTE_LOG(ERR, EAL, "error in reading PCI command register\n"); + return -1; + } + + if (enable) + cmd = old_cmd | RTE_PCI_COMMAND_MASTER; + else + cmd = old_cmd & ~RTE_PCI_COMMAND_MASTER; + + if (cmd == old_cmd) + return 0; + + if (rte_pci_write_config(dev, &cmd, sizeof(cmd), + RTE_PCI_COMMAND) < 0) { + RTE_LOG(ERR, EAL, "error in writing PCI command register\n"); + return -1; + } + + return 0; +} + struct rte_pci_bus rte_pci_bus = { .bus = { .scan = rte_pci_scan,