git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pci: use OS generic memory mapping functions
[dpdk.git]
/
drivers
/
bus
/
pci
/
linux
/
pci_uio.c
diff --git
a/drivers/bus/pci/linux/pci_uio.c
b/drivers/bus/pci/linux/pci_uio.c
index
e031361
..
b622001
100644
(file)
--- a/
drivers/bus/pci/linux/pci_uio.c
+++ b/
drivers/bus/pci/linux/pci_uio.c
@@
-345,12
+345,14
@@
pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx,
mapaddr = pci_map_resource(pci_map_addr, fd, 0,
(size_t)dev->mem_resource[res_idx].len, 0);
close(fd);
mapaddr = pci_map_resource(pci_map_addr, fd, 0,
(size_t)dev->mem_resource[res_idx].len, 0);
close(fd);
- if (mapaddr ==
MAP_FAILED
)
+ if (mapaddr ==
NULL
)
goto error;
pci_map_addr = RTE_PTR_ADD(mapaddr,
(size_t)dev->mem_resource[res_idx].len);
goto error;
pci_map_addr = RTE_PTR_ADD(mapaddr,
(size_t)dev->mem_resource[res_idx].len);
+ pci_map_addr = RTE_PTR_ALIGN(pci_map_addr, sysconf(_SC_PAGE_SIZE));
+
maps[map_idx].phaddr = dev->mem_resource[res_idx].phys_addr;
maps[map_idx].size = dev->mem_resource[res_idx].len;
maps[map_idx].addr = mapaddr;
maps[map_idx].phaddr = dev->mem_resource[res_idx].phys_addr;
maps[map_idx].size = dev->mem_resource[res_idx].len;
maps[map_idx].addr = mapaddr;
@@
-375,6
+377,12
@@
pci_uio_ioport_map(struct rte_pci_device *dev, int bar,
int uio_num;
unsigned long start;
int uio_num;
unsigned long start;
+ if (rte_eal_iopl_init() != 0) {
+ RTE_LOG(ERR, EAL, "%s(): insufficient ioport permissions for PCI device %s\n",
+ __func__, dev->name);
+ return -1;
+ }
+
uio_num = pci_get_uio_dev(dev, dirname, sizeof(dirname), 0);
if (uio_num < 0)
return -1;
uio_num = pci_get_uio_dev(dev, dirname, sizeof(dirname), 0);
if (uio_num < 0)
return -1;