Re: sparc compile error caused by x86 arch updates

From: Jeremy Fitzhardinge
Date: Thu Jan 31 2008 - 11:51:23 EST


Adrian Bunk wrote:
On Thu, Jan 31, 2008 at 05:15:23PM +0100, Ingo Molnar wrote:
* Adrian Bunk <bunk@xxxxxxxxxx> wrote:

On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote:
* Adrian Bunk <bunk@xxxxxxxxxx> wrote:

You tested x86 but broke more than half a dozen other archtectures, with at least 3 different commits breaking other architectures.
Note that all known breakages are fixed in current -git, except for the s390 problem that Martin/Nick posted the fix.
What about the breakages caused by commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the defconfig compilation on at least avr32, blackfin, sh, sparc and uml)?
the patch below fixes that.

The sparc breakage (might not have been reported until now and I bisected it just a few minutes ago) is caused by the following part of commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380:

--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -6,6 +6,7 @@
#include <linux/mmzone.h>
#include <linux/list.h>
#include <linux/sched.h>
+#include <linux/pagemap.h>
#include <asm/atomic.h>
#include <asm/page.h>



Drat. I added that because of

/* 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);


But I guess I overlooked the comment...

I guess the fix is to scatter linux/pagemap.h into the appropriate places where these macros are used (asm-generic/tlb.h, for a start).

J
The compile error with the sparc defconfig is:

<-- snip -->

...
CC init/main.o
In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:24,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:10,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9,
from include2/asm/pgtable.h:15,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17,
from include2/asm/dma-mapping.h:6,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52,
from include2/asm/sbus.h:10,
from include2/asm/dma.h:13,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26:
include2/asm/highmem.h: In function 'kmap':
include2/asm/highmem.h:60: error: implicit declaration of function 'PageHighMem'
include2/asm/highmem.h:61: error: implicit declaration of function 'page_address'
include2/asm/highmem.h:61: warning: return makes pointer from integer without a cast
In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9,
from include2/asm/pgtable.h:15,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17,
from include2/asm/dma-mapping.h:6,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52,
from include2/asm/sbus.h:10,
from include2/asm/dma.h:13,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26:
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'lock_page':
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:169: error: implicit declaration of function 'TestSetPageLocked'
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_locked':
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:199: error: implicit declaration of function 'PageLocked'
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: 'PG_locked' undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: for each function it appears in.)
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_writeback':
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:208: error: implicit declaration of function 'PageWriteback'
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:209: error: 'PG_writeback' undeclared (first use in this function)
In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17,
from include2/asm/dma-mapping.h:6,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52,
from include2/asm/sbus.h:10,
from include2/asm/dma.h:13,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8,
from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26:
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h: At top level:
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:556: error: conflicting types for 'page_address'
include2/asm/highmem.h:61: error: previous implicit declaration of 'page_address' was here
make[2]: *** [init/main.o] Error 1
make[1]: *** [init] Error 2
make: *** [sub-make] Error 2

<-- snip -->


Ingo

cu
Adrian


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/