Hi all, On Tue, 2 Feb 2021 20:03:24 +1100 Stephen Rothwell wrote: > > After merging the akpm-current tree, today's linux-next build (x86_64 > allnoconfig) failed like this: > > In file included from arch/x86/include/asm/page.h:76, > from arch/x86/include/asm/thread_info.h:12, > from include/linux/thread_info.h:56, > from arch/x86/include/asm/preempt.h:7, > from include/linux/preempt.h:78, > from include/linux/spinlock.h:51, > from include/linux/mmzone.h:8, > from include/linux/gfp.h:6, > from include/linux/slab.h:15, > from include/linux/crypto.h:20, > from arch/x86/kernel/asm-offsets.c:9: > include/linux/mm.h: In function 'is_pinnable_page': > include/asm-generic/memory_model.h:64:14: error: implicit declaration of function 'page_to_section'; did you mean 'present_section'? [-Werror=implicit-function-declaration] > 64 | int __sec = page_to_section(__pg); \ > | ^~~~~~~~~~~~~~~ > include/asm-generic/memory_model.h:81:21: note: in expansion of macro '__page_to_pfn' > 81 | #define page_to_pfn __page_to_pfn > | ^~~~~~~~~~~~~ > include/linux/mm.h:1134:15: note: in expansion of macro 'page_to_pfn' > 1134 | is_zero_pfn(page_to_pfn(page)); > | ^~~~~~~~~~~ > In file included from include/linux/kallsyms.h:12, > from include/linux/bpf.h:21, > from include/linux/bpf-cgroup.h:5, > from include/linux/cgroup-defs.h:22, > from include/linux/cgroup.h:28, > from include/linux/memcontrol.h:13, > from include/linux/swap.h:9, > from include/linux/suspend.h:5, > from arch/x86/kernel/asm-offsets.c:13: > include/linux/mm.h: At top level: > include/linux/mm.h:1505:29: error: conflicting types for 'page_to_section' > 1505 | static inline unsigned long page_to_section(const struct page *page) > | ^~~~~~~~~~~~~~~ > In file included from arch/x86/include/asm/page.h:76, > from arch/x86/include/asm/thread_info.h:12, > from include/linux/thread_info.h:56, > from arch/x86/include/asm/preempt.h:7, > from include/linux/preempt.h:78, > from include/linux/spinlock.h:51, > from include/linux/mmzone.h:8, > from include/linux/gfp.h:6, > from include/linux/slab.h:15, > from include/linux/crypto.h:20, > from arch/x86/kernel/asm-offsets.c:9: > include/asm-generic/memory_model.h:64:14: note: previous implicit declaration of 'page_to_section' was here > 64 | int __sec = page_to_section(__pg); \ > | ^~~~~~~~~~~~~~~ > include/asm-generic/memory_model.h:81:21: note: in expansion of macro '__page_to_pfn' > 81 | #define page_to_pfn __page_to_pfn > | ^~~~~~~~~~~~~ > include/linux/mm.h:1134:15: note: in expansion of macro 'page_to_pfn' > 1134 | is_zero_pfn(page_to_pfn(page)); > | ^~~~~~~~~~~ > > This build has CONFIG_SPARSEMEM set and CONFIG_SPARSEMEM_VMEMMAP not set. > > Caused by commit > > 983cb10d3f90 ("mm/gup: do not migrate zero page") > > I have applied the following patch for today: > > From: Stephen Rothwell > Date: Tue, 2 Feb 2021 19:49:00 +1100 > Subject: [PATCH] make is_pinnable_page a macro > > As it is currently defined before page_to_section() which it needs. > > Signed-off-by: Stephen Rothwell > --- > include/linux/mm.h | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 58f250cabea6..a608feb0d42e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1128,11 +1128,9 @@ static inline bool is_zone_movable_page(const struct page *page) > } > > /* MIGRATE_CMA and ZONE_MOVABLE do not allow pin pages */ > -static inline bool is_pinnable_page(struct page *page) > -{ > - return !(is_zone_movable_page(page) || is_migrate_cma_page(page)) || > - is_zero_pfn(page_to_pfn(page)); > -} > +#define is_pinnable_page(page) \ > + (!(is_zone_movable_page(page) || is_migrate_cma_page(page)) || \ > + is_zero_pfn(page_to_pfn(page))) > > #ifdef CONFIG_DEV_PAGEMAP_OPS > void free_devmap_managed_page(struct page *page); > -- > 2.29.2 OK, so today I will add the following to linux-next as it is still needed. From: Stephen Rothwell Date: Thu, 4 Feb 2021 12:05:57 +1100 Subject: [PATCH] make is_pinnable_page a macro As it is currently defined before page_to_section() which it needs. Signed-off-by: Stephen Rothwell --- include/linux/mm.h | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index baa3d3a9b655..8b1f889c6715 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1123,16 +1123,11 @@ static inline bool is_zone_movable_page(const struct page *page) #ifdef CONFIG_MIGRATION /* MIGRATE_CMA and ZONE_MOVABLE do not allow pin pages */ -static inline bool is_pinnable_page(struct page *page) -{ - return !(is_zone_movable_page(page) || is_migrate_cma_page(page)) || - is_zero_pfn(page_to_pfn(page)); -} +#define is_pinnable_page(page) \ + (!(is_zone_movable_page(page) || is_migrate_cma_page(page)) || \ + is_zero_pfn(page_to_pfn(page))) #else -static inline bool is_pinnable_page(struct page *page) -{ - return true; -} +#define is_pinnable_page(page) true #endif #ifdef CONFIG_DEV_PAGEMAP_OPS -- 2.30.0 -- Cheers, Stephen Rothwell