* [dpdk-dev] [PATCH v4] bus/pci: align next mapping address on page boundary
[not found] <1573628749-5572-1-git-send-email-dengxiaofeng@huawei.com>
@ 2019-11-13 7:17 ` Wangyu (Eric)
2019-11-14 13:14 ` David Marchand
0 siblings, 1 reply; 2+ messages in thread
From: Wangyu (Eric) @ 2019-11-13 7:17 UTC (permalink / raw)
To: dev; +Cc: ferruh.yigit, Linuxarm, humin (Q), Liyuan (Larry), dengxiaofeng
Currently, the next address picked by PCI mapping infrastructure
may be page-unaligned due to BAR length being smaller than page size.
This leads to a situation where the requested map address is invalid,
resulting in mmap() call returning an arbitrary address,
which will later interfere with device BAR mapping in secondary processes.
Fix it by always aligning the next requested address on page boundary.
Signed-off-by: Xiaofeng Deng <dengxiaofeng@huawei.com>
Signed-off-by: Wangyu (Eric) <seven.wangyu@huawei.com>
Acked-by: Wei Hu <xavier.huwei@huawei.com>
Acked-by: Min Hu <humin29@huawei.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Gavin Hu (Arm Technology China) <Gavin.Hu@arm.com>
Fixes: c752998b5e2e ("pci: introduce library and driver")
Cc: stable@dpdk.org
---
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dpdk-dev] [PATCH v4] bus/pci: align next mapping address on page boundary
2019-11-13 7:17 ` [dpdk-dev] [PATCH v4] bus/pci: align next mapping address on page boundary Wangyu (Eric)
@ 2019-11-14 13:14 ` David Marchand
0 siblings, 0 replies; 2+ messages in thread
From: David Marchand @ 2019-11-14 13:14 UTC (permalink / raw)
To: Wangyu (Eric)
Cc: dev, ferruh.yigit, Linuxarm, humin (Q), Liyuan (Larry),
dengxiaofeng, dpdk stable
On Wed, Nov 13, 2019 at 8:17 AM Wangyu (Eric) <seven.wangyu@huawei.com> wrote:
>
> Currently, the next address picked by PCI mapping infrastructure
> may be page-unaligned due to BAR length being smaller than page size.
> This leads to a situation where the requested map address is invalid,
> resulting in mmap() call returning an arbitrary address,
> which will later interfere with device BAR mapping in secondary processes.
>
> Fix it by always aligning the next requested address on page boundary.
>
> Signed-off-by: Xiaofeng Deng <dengxiaofeng@huawei.com>
> Signed-off-by: Wangyu (Eric) <seven.wangyu@huawei.com>
> Acked-by: Wei Hu <xavier.huwei@huawei.com>
> Acked-by: Min Hu <humin29@huawei.com>
> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Gavin Hu (Arm Technology China) <Gavin.Hu@arm.com>
>
> Fixes: c752998b5e2e ("pci: introduce library and driver")
> Cc: stable@dpdk.org
Cc'd stable.
Applied, thanks.
--
David Marchand
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-11-14 13:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1573628749-5572-1-git-send-email-dengxiaofeng@huawei.com>
2019-11-13 7:17 ` [dpdk-dev] [PATCH v4] bus/pci: align next mapping address on page boundary Wangyu (Eric)
2019-11-14 13:14 ` David Marchand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).