All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Dong Aisheng <aisheng.dong@nxp.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	dongas86@gmail.com, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 3/5] mm/sparse: move mem_sections allocation out of memory_present()
Date: Tue, 18 May 2021 13:12:30 +0300	[thread overview]
Message-ID: <YKOTDumqMIFfqc+f@kernel.org> (raw)
In-Reply-To: <20210517112044.233138-4-aisheng.dong@nxp.com>

On Mon, May 17, 2021 at 07:20:42PM +0800, Dong Aisheng wrote:
> The only path to call memory_present() is from memblocks_present().
> The struct mem_section **mem_section only needs to be initialized once,
> so no need put the initialization/allocation code in memory_present()
> which will be called multiple times for each section.
> 
> After moving, the 'unlikely' condition statement becomes to be
> meaningless as it's only initialized one time, so dropped as well.
> 
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> ---
>  mm/sparse.c | 23 ++++++++++-------------
>  1 file changed, 10 insertions(+), 13 deletions(-)
> 
> diff --git a/mm/sparse.c b/mm/sparse.c
> index 98bfacc763da..df4418c12f04 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -254,19 +254,6 @@ static void __init memory_present(int nid, unsigned long start, unsigned long en
>  {
>  	unsigned long pfn;
>  
> -#ifdef CONFIG_SPARSEMEM_EXTREME
> -	if (unlikely(!mem_section)) {
> -		unsigned long size, align;
> -
> -		size = sizeof(struct mem_section *) * NR_SECTION_ROOTS;
> -		align = 1 << (INTERNODE_CACHE_SHIFT);
> -		mem_section = memblock_alloc(size, align);
> -		if (!mem_section)
> -			panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
> -			      __func__, size, align);
> -	}
> -#endif

Maybe split this into a helper function and call it directly from
sparse_init()?

> -
>  	start &= PAGE_SECTION_MASK;
>  	mminit_validate_memmodel_limits(&start, &end);
>  	for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {
> @@ -292,9 +279,19 @@ static void __init memory_present(int nid, unsigned long start, unsigned long en
>   */
>  static void __init memblocks_present(void)
>  {
> +	unsigned long __maybe_unused size, align;
>  	unsigned long start, end;
>  	int i, nid;
>  
> +#ifdef CONFIG_SPARSEMEM_EXTREME
> +	size = sizeof(struct mem_section *) * NR_SECTION_ROOTS;
> +	align = 1 << (INTERNODE_CACHE_SHIFT);
> +	mem_section = memblock_alloc(size, align);
> +	if (!mem_section)
> +		panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
> +		      __func__, size, align);
> +#endif
> +
>  	for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid)
>  		memory_present(nid, start, end);
>  }
> -- 
> 2.25.1
> 
> 

-- 
Sincerely yours,
Mike.


  reply	other threads:[~2021-05-18 10:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17 11:20 [PATCH 0/5] mm/sparse: a few minor fixes and improvements Dong Aisheng
2021-05-17 11:20 ` [PATCH 1/5] mm: correct SECTION_SHIFT name in code comments Dong Aisheng
2021-05-17 17:17   ` Yu Zhao
2021-05-18  2:48     ` Aisheng Dong
2021-05-17 11:20 ` [PATCH 2/5] mm/sparse: free section usage memory in case populate_section_memmap failed Dong Aisheng
2021-05-18 10:09   ` Mike Rapoport
2021-05-18 10:25     ` Dong Aisheng
2021-05-18 11:43       ` Mike Rapoport
2021-05-19  4:04         ` Dong Aisheng
2021-05-25  7:52   ` David Hildenbrand
2021-05-25  8:15     ` Dong Aisheng
2021-05-17 11:20 ` [PATCH 3/5] mm/sparse: move mem_sections allocation out of memory_present() Dong Aisheng
2021-05-18 10:12   ` Mike Rapoport [this message]
2021-05-18 10:45     ` Dong Aisheng
2021-05-17 11:20 ` [PATCH 4/5] mm: rename the global section array to mem_sections Dong Aisheng
2021-05-17 11:20   ` Dong Aisheng
2021-05-25  7:55   ` David Hildenbrand
2021-05-25  7:55     ` David Hildenbrand
2021-05-25  8:32     ` Dong Aisheng
2021-05-25  8:32       ` Dong Aisheng
2021-05-17 11:20 ` [PATCH 5/5] mm/page_alloc: improve memmap_pages and dma_reserve dbg msg Dong Aisheng
2021-05-25  8:01   ` David Hildenbrand
2021-05-25  8:39     ` Dong Aisheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YKOTDumqMIFfqc+f@kernel.org \
    --to=rppt@kernel.org \
    --cc=aisheng.dong@nxp.com \
    --cc=akpm@linux-foundation.org \
    --cc=dongas86@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.