NIC address conflicts on 64K pagesize when using multiple NICs, as system will mmap 64K pagesize for NIC,
but dev->mem_resource[i].len is 16K. Signed-off-by: beard-627 <dengxiaof...@huawei.com> Signed-off-by: Wangyu (Eric) <seven.wan...@huawei.com> Acked-by: Wei Hu <xavier.hu...@huawei.com> Acked-by: Min Hu <humi...@huawei.com> --- drivers/bus/pci/linux/pci_uio.c | 2 ++ drivers/bus/pci/linux/pci_vfio.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c index 6dca05a..097dc19 100644 --- a/drivers/bus/pci/linux/pci_uio.c +++ b/drivers/bus/pci/linux/pci_uio.c @@ -351,6 +351,8 @@ 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; diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c index b8faa23..64cd84a 100644 --- a/drivers/bus/pci/linux/pci_vfio.c +++ b/drivers/bus/pci/linux/pci_vfio.c @@ -750,6 +750,9 @@ bar_addr = pci_map_addr; pci_map_addr = RTE_PTR_ADD(bar_addr, (size_t) reg->size); + pci_map_addr = RTE_PTR_ALIGN(pci_map_addr, + sysconf(_SC_PAGE_SIZE)); + maps[i].addr = bar_addr; maps[i].offset = reg->offset; maps[i].size = reg->size; -- 1.8.3.1