[dpdk-stable] patch 'mem: mark pages as not accessed when reserving VA' has been queued to stable release 19.11.3

Kevin Traynor ktraynor at redhat.com
Tue Jun 9 15:45:19 CEST 2020


On 19/05/2020 13:53, luca.boccassi at gmail.com wrote:
> Hi,
> 
> FYI, your patch has been queued to stable release 19.11.3
> 
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 05/21/20. So please
> shout if anyone has objections.
> 
> Also note that after the patch there's a diff of the upstream commit vs the
> patch applied to the branch. This will indicate if there was any rebasing
> needed to apply to the stable branch. If there were code changes for rebasing
> (ie: not only metadata diffs), please double check that the rebase was
> correctly done.
> 
> Thanks.
> 
> Luca Boccassi
> 
> ---
> From d0e456e9b1af8594ed22382e33bc6e1d5acec994 Mon Sep 17 00:00:00 2001
> From: David Marchand <david.marchand at redhat.com>
> Date: Mon, 9 Mar 2020 15:54:42 +0100
> Subject: [PATCH] mem: mark pages as not accessed when reserving VA
> 
> [ upstream commit 8a4baf06c17a806696fb10aba36fce7471983028 ]
> 
> 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.
> 

Hi, discussed this patch for 18.11 with David and he pointed out that
there is a fix for it on master:

commit 76e91e3f14fc13f31608167d698682790be45cba
Author: Li Feng <fengli at smartx.com>
Date:   Fri Apr 24 18:42:05 2020 +0800

    mem: mark pages as not accessed when freeing memory

    Commit 8a4baf06c17a ("mem: mark pages as not accessed when reserving
VA")
    has mapped the initialized memory with PROT_NONE, and when it's
unmapped,
    eal_memalloc.c should remmap the anonymous memory with PROT_NONE too.

    Fixes: 8a4baf06c17a ("mem: mark pages as not accessed when reserving
VA")
    Cc: stable at dpdk.org

    Signed-off-by: Li Feng <fengli at smartx.com>
    Acked-by: Anatoly Burakov <anatoly.burakov at intel.com>


> Suggested-by: Andrea Arcangeli <aarcange at redhat.com>
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> Acked-by: Aaron Conole <aconole at redhat.com>
> Acked-by: Anatoly Burakov <anatoly.burakov at intel.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 4a9cc1f19a..cc7d54e0c7 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;
> 



More information about the stable mailing list