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

Andrew Morton
2007-07-19T20:14:20Z

On Thu, 19 Jul 2007 14:55:23 -0500
Kumar Gala <galak@kernel.crashing.org> wrote:

>
> On Jul 19, 2007, at 12:30 AM, Andrew Morton wrote:
>
> > On Fri, 13 Jul 2007 21:20:33 -0400 Mathieu Desnoyers
> > <mathieu.desnoyers@polymtl.ca> 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 <mathieu.desnoyers@polymtl.ca>
> >> CC: linuxppc-dev@ozlabs.org
> >> CC: Paul Mackerras <paulus@samba.org>
> >> ---
> >> 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 ;)
>
> Andrew,
>
> Are you sending this to linus directly or should this go via paul and
> me?
>

I queued it up for Paul. I can send it over to Linus today if we have a
reason for that. It's just that I dont understand the patch: does it fix
-mm-only breakage? Does it fix something which already got fixed, or what?

One might think "gee, it's trivial, just slam it in", but these nested
includes are often not-trivial and something else can explode as a result.