X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbus%2Fpci%2Fbsd%2Fpci.c;h=6ec27b4b5be8f70757abeb6db37d7fe1bd796cf2;hb=8c98e3c539625b6dbdf8acb1817b55eae101e537;hp=77771796256ee475f190d417d797f7d007d9c9da;hpb=8ac3591694e105d47968f5f29b8c19511f21e41c;p=dpdk.git diff --git a/drivers/bus/pci/bsd/pci.c b/drivers/bus/pci/bsd/pci.c index 7777179625..6ec27b4b5b 100644 --- a/drivers/bus/pci/bsd/pci.c +++ b/drivers/bus/pci/bsd/pci.c @@ -338,6 +338,7 @@ rte_pci_scan(void) .match_buf_len = sizeof(matches), .matches = &matches[0], }; + struct rte_pci_addr pci_addr; /* for debug purposes, PCI can be disabled */ if (!rte_eal_has_pci()) @@ -357,9 +358,18 @@ rte_pci_scan(void) goto error; } - for (i = 0; i < conf_io.num_matches; i++) + for (i = 0; i < conf_io.num_matches; i++) { + pci_addr.domain = matches[i].pc_sel.pc_domain; + pci_addr.bus = matches[i].pc_sel.pc_bus; + pci_addr.devid = matches[i].pc_sel.pc_dev; + pci_addr.function = matches[i].pc_sel.pc_func; + + if (rte_pci_ignore_device(&pci_addr)) + continue; + if (pci_scan_one(fd, &matches[i]) < 0) goto error; + } dev_count += conf_io.num_matches; } while(conf_io.status == PCI_GETCONF_MORE_DEVS); @@ -539,6 +549,11 @@ rte_pci_ioport_map(struct rte_pci_device *dev, int bar, switch (dev->kdrv) { #if defined(RTE_ARCH_X86) case RTE_KDRV_NIC_UIO: + if (rte_eal_iopl_init() != 0) { + RTE_LOG(ERR, EAL, "%s(): insufficient ioport permissions for PCI device %s\n", + __func__, dev->name); + return -1; + } if ((uintptr_t) dev->mem_resource[bar].addr <= UINT16_MAX) { p->base = (uintptr_t)dev->mem_resource[bar].addr; ret = 0;