On 3/9/20 3:54 PM, David Marchand wrote:
> When the memory allocator reserves virtual addresses, it still does not
> know what they will be used for.
> Besides, huge areas are reserved for memory hotplug in multiprocess
> setups. But most of the pages are unused in the whole life of the
> processes.
>
> Change protection mode to PROT_NONE when only reserving VA.
> The memory allocator already switches to the right mode when making use
> of it.
>
> It also has the nice effect of getting those pages skipped by the kernel
> when calling mlockall() or when a coredump gets generated.
>
> Cc: sta...@dpdk.org
>
> Suggested-by: Andrea Arcangeli <aarca...@redhat.com>
> Signed-off-by: David Marchand <david.march...@redhat.com>
> ---
> lib/librte_eal/common/eal_common_memory.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/common/eal_common_memory.c
> b/lib/librte_eal/common/eal_common_memory.c
> index 4a9cc1f19..cc7d54e0c 100644
> --- a/lib/librte_eal/common/eal_common_memory.c
> +++ b/lib/librte_eal/common/eal_common_memory.c
> @@ -97,7 +97,7 @@ eal_get_virtual_area(void *requested_addr, size_t *size,
> return NULL;
> }
>
> - mapped_addr = mmap(requested_addr, (size_t)map_sz, PROT_READ,
> + mapped_addr = mmap(requested_addr, (size_t)map_sz, PROT_NONE,
> mmap_flags, -1, 0);
> if (mapped_addr == MAP_FAILED && allow_shrink)
> *size -= page_sz;
>
Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
Thanks!
Maxime