Re: linux-next: build failure after merge of the akpm-current tree

Davidlohr Bueso
2014-03-06T07:20:20Z

On Thu, 2014-03-06 at 18:08 +1100, Stephen Rothwell wrote:
> Hi Andrew,
>
> After merging the akpm-current tree, today's linux-next build (arm
> multi_v7_defconfig) failed like this:
>
> In file included from include/linux/vmacache.h:4:0,
> from include/linux/sched.h:28,
> from arch/arm/include/asm/tlbflush.h:204,
> from arch/arm/include/asm/pgtable.h:28,
> from arch/arm/include/asm/idmap.h:5,
> from arch/arm/mm/idmap.c:6:
> include/linux/mm.h: In function 'is_vmalloc_addr':
> include/linux/mm.h:359:17: error: 'VMALLOC_START' undeclared (first use in this function)
> include/linux/mm.h:359:41: error: 'VMALLOC_END' undeclared (first use in this function)
> include/linux/mm.h: In function 'maybe_mkwrite':
> include/linux/mm.h:589:3: error: implicit declaration of function 'pte_mkwrite' [-Werror=implicit-function-declaration]
> In file included from include/linux/vmacache.h:4:0,
> from include/linux/sched.h:28,
> from arch/arm/include/asm/tlbflush.h:204,
> from arch/arm/include/asm/pgtable.h:28,
> from arch/arm/include/asm/idmap.h:5,
> from arch/arm/mm/idmap.c:6:
> include/linux/mm.h: In function 'pmd_alloc':
> include/linux/mm.h:1396:2: error: implicit declaration of function 'pud_none' [-Werror=implicit-function-declaration]
> include/linux/mm.h:1397:3: error: implicit declaration of function 'pmd_offset' [-Werror=implicit-function-declaration]
> include/linux/mm.h:1397:7: warning: pointer/integer type mismatch in conditional expression [enabled by default]
> include/linux/mm.h: In function 'pte_lockptr':
> include/linux/mm.h:1433:2: error: implicit declaration of function 'pmd_page' [-Werror=implicit-function-declaration]
> include/linux/mm.h:1433:2: warning: passing argument 1 of 'ptlock_ptr' makes pointer from integer without a cast [enabled by default]
> include/linux/mm.h:1425:27: note: expected 'struct page *' but argument is of type 'int'
> include/linux/mm.h: In function 'pgtable_init':
> include/linux/mm.h:1476:2: error: implicit declaration of function 'pgtable_cache_init' [-Werror=implicit-function-declaration]
> In file included from arch/arm/include/asm/pgtable.h:33:0,
> from arch/arm/include/asm/idmap.h:5,
> from arch/arm/mm/idmap.c:6:
> arch/arm/include/asm/pgtable-2level.h: At top level:
> arch/arm/include/asm/pgtable-2level.h:159:22: error: conflicting types for 'pmd_offset'
> include/linux/mm.h:1397:9: note: previous implicit declaration of 'pmd_offset' was here
> In file included from arch/arm/include/asm/idmap.h:5:0,
> from arch/arm/mm/idmap.c:6:
> arch/arm/include/asm/pgtable.h:255:1: error: conflicting types for 'pte_mkwrite'
> include/linux/mm.h:589:9: note: previous implicit declaration of 'pte_mkwrite' was here
>
> and on and on ...
>
> Caused by commit 0d9ad4220e6d ("mm: per-thread vma caching") which adds
> the include of linux/vmacache.h (which includes linux/mm.h) into
> linux/sched.h ... There is a reason that we did not include linux/mm.h
> into sched.h.

Apologies, I was not aware of the "no mm.h in sched.h" rule. It broke
builds on several archs.

Thanks for looking into this.