On Wed 21-02-18 15:58:41, Randy Dunlap wrote: > On 02/21/2018 02:48 PM, akpm@xxxxxxxxxxxxxxxxxxxx wrote: > > The mm-of-the-moment snapshot 2018-02-21-14-48 has been uploaded to > > > > http://www.ozlabs.org/~akpm/mmotm/ > > > > mmotm-readme.txt says > > > > README for mm-of-the-moment: > > > > http://www.ozlabs.org/~akpm/mmotm/ > > > > This is a snapshot of my -mm patch queue. Uploaded at random hopefully > > more than once a week. > > > > You will need quilt to apply these patches to the latest Linus release (4.x > > or 4.x-rcY). The series file is in broken-out.tar.gz and is duplicated in > > http://ozlabs.org/~akpm/mmotm/series > > > > The file broken-out.tar.gz contains two datestamp files: .DATE and > > .DATE-yyyy-mm-dd-hh-mm-ss. Both contain the string yyyy-mm-dd-hh-mm-ss, > > followed by the base kernel version against which this patch series is to > > be applied. > > um (or uml) defconfig on i386 and/or x86_64: > > ../mm/page_alloc.c: In function 'memmap_init_zone': > ../mm/page_alloc.c:5450:5: error: implicit declaration of function 'memblock_next_valid_pfn' [-Werror=implicit-function-declaration] > pfn = memblock_next_valid_pfn(pfn, end_pfn) - 1; > ^ > > > probably (?): > From: Eugeniu Rosca <erosca@xxxxxxxxxxxxxx> > Subject: mm: page_alloc: skip over regions of invalid pfns on UMA Yes. Steven has already reported the same [1]. There are two possible ways around this. Either provide and empty stub or use ifdef around memblock_next_valid_pfn. I would use the later because it is less confusing. We really do not want memblock_next_valid_pfn to be used outside of memblock aware code. [1] http://lkml.kernel.org/r/20180222143057.3a1b3746@xxxxxxxxxxxxxxxx diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4334d3a9c6a2..2836bc9e0999 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5446,8 +5446,9 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, * end_pfn), such that we hit a valid pfn (or end_pfn) * on our next iteration of the loop. */ - if (IS_ENABLED(CONFIG_HAVE_MEMBLOCK)) - pfn = memblock_next_valid_pfn(pfn, end_pfn) - 1; +#ifdef CONFIG_HAVE_MEMBLOCK + pfn = memblock_next_valid_pfn(pfn, end_pfn) - 1; +#endif continue; } if (!early_pfn_in_nid(pfn, nid)) -- Michal Hocko SUSE Labs