Subject: Re: Powerpc - Include pagemap.h in asm/powerpc/tlb.h

From: Andrew Morton <[email-masked]>
Date: Wed, 18 Jul 2007 22:30:34 -0700

On Fri, 13 Jul 2007 21:20:33 -0400 Mathieu Desnoyers <[email-masked]> wrote:

> Powerpc - Include pagemap.h in asm/powerpc/tlb.h
> 
> Fixes this powerpc build error in 2.6.22-rc6-mm1 for powerpc 64 :
> 
> In file included from include2/asm/tlb.h:60,
>                  from /home/compudj/git/linux-2.6-lttng/arch/powerpc/mm/init_64.
> c:56:
> /home/compudj/git/linux-2.6-lttng/include/asm-generic/tlb.h: In function 'tlb_fl
> ush_mmu':
> /home/compudj/git/linux-2.6-lttng/include/asm-generic/tlb.h:76: error: implicit 
> declaration of function 'release_pages'
> /home/compudj/git/linux-2.6-lttng/include/asm-generic/tlb.h: In function 'tlb_re
> move_page':
> /home/compudj/git/linux-2.6-lttng/include/asm-generic/tlb.h:105: error: implicit
>  declaration of function 'page_cache_release'

You have some wordwrapping going on there.

> make[2]: *** [arch/powerpc/mm/init_64.o] Error 1
> 
> release_pages is declared in linux/pagemap.h, but cannot be included in
> linux/swap.h because of a sparc related comment:
> 
> /* only sparc can not include linux/pagemap.h in this file
>  * so leave page_cache_release and release_pages undeclared... */
> #define free_page_and_swap_cache(page) \
>         page_cache_release(page)
> #define free_pages_and_swap_cache(pages, nr) \
>         release_pages((pages), (nr), 0);

It's always a worry when this happens.  What change made us need this
inclusion?  How come you're hitting it but I (and test.kernel.org, at least)
did not?  How come so few other architectures include pagemap.h from
asm/tlb.h?  Why do header files get into such a mess?

> Signed-off-by: Mathieu Desnoyers <[email-masked]>
> CC: [email-masked]
> CC: Paul Mackerras <[email-masked]>
> ---
>  include/asm-powerpc/tlb.h |    2 ++
>  1 file changed, 2 insertions(+)
> 
> Index: linux-2.6-lttng/include/asm-powerpc/tlb.h
> ===================================================================
> --- linux-2.6-lttng.orig/include/asm-powerpc/tlb.h	2007-07-13 11:30:54.000000000 -0400
> +++ linux-2.6-lttng/include/asm-powerpc/tlb.h	2007-07-13 11:31:22.000000000 -0400
> @@ -23,6 +23,8 @@
>  #include <asm/mmu.h>
>  #endif
>  
> +#include <linux/pagemap.h>
> +
>  struct mmu_gather;
>  

Oh well.  I queued it up for someone else to worry over ;)