> -----Original Message-----
> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Stephen
> Hemminger
> Sent: Tuesday, July 11, 2017 9:13 AM
> To: dev@dpdk.org
> Cc: Stephen Hemminger
> Subject: [dpdk-dev] [RFC] pci: force address of mappings in secondary
> process
> 
> The PCI memory resources in the secondary process should be in
> the exact same location as the primary process. Otherwise
> there is a risk of a stray pointer.
> 
> Not sure if this is right, but it looks like a potential
> problem.
> 
> ---
>  lib/librte_eal/common/eal_common_pci_uio.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/common/eal_common_pci_uio.c
> b/lib/librte_eal/common/eal_common_pci_uio.c
> index 367a6816dcb8..2156b1a436c4 100644
> --- a/lib/librte_eal/common/eal_common_pci_uio.c
> +++ b/lib/librte_eal/common/eal_common_pci_uio.c
> @@ -77,7 +77,7 @@ pci_uio_map_secondary(struct rte_pci_device *dev)
> 
>                       void *mapaddr = pci_map_resource(uio_res-
> >maps[i].addr,
>                                       fd, (off_t)uio_res->maps[i].offset,
> -                                     (size_t)uio_res->maps[i].size, 0);
> +                                     (size_t)uio_res->maps[i].size,
> MAP_FIXED);
>                       /* fd is not needed in slave process, close it */
>                       close(fd);
>                       if (mapaddr != uio_res->maps[i].addr) {
> --
> 2.11.0

+1 for this RFC. I also once encounter such problem, and I use the same way to 
solve it. The addr parameter of mmap() syscall is only a hint instead of a must 
even the VMA is not occupied yet.

Thanks,
Jianfeng

Reply via email to