Re: [PATCH v3 1/1] mm: page_alloc: skip over regions of invalid pfns on UMA

From: Michal Hocko
Date: Mon Jan 29 2018 - 13:47:57 EST


On Wed 24-01-18 15:35:45, Eugeniu Rosca wrote:
[...]
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 76c9688b6a0a..4a3d5936a9a0 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -5344,14 +5344,12 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
> goto not_early;
>
> if (!early_pfn_valid(pfn)) {
> -#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
> /*
> * Skip to the pfn preceding the next valid one (or
> * end_pfn), such that we hit a valid pfn (or end_pfn)
> * on our next iteration of the loop.
> */
> pfn = memblock_next_valid_pfn(pfn, end_pfn) - 1;
> -#endif
> continue;

Wouldn't it be just simpler to have ifdef CONFIG_HAVE_MEMBLOCK rather
than define memblock_next_valid_pfn for !HAVE_MEMBLOCK and then do the
(pfn + 1 ) - 1 games. I am usually against ifdefs in the code but that
would require a larger surgery to memmap_init_zone.

To be completely honest, I would like to see HAVE_MEMBLOCK_NODE_MAP
gone.

Other than that, the patch looks sane to me.

> }
> if (!early_pfn_in_nid(pfn, nid))
> --
> 2.15.1
>

--
Michal Hocko
SUSE Labs