Subject: PROBLEM: kernel 2.6.20.6 build failed for ppc board chestnut(ibm ppc 750GX/FX)

From: "Wang, Baojun" <[email-masked]>
Date: Mon, 16 Apr 2007 13:13:01 +0800

PROBLEM: linux kernel 2.6.20.6 build failed for ppc board chestnut(ibm ppc 
750GX/FX)

STEPS I followed:
1) make ARCH=ppc CROSS_COMPILE=ppc_4xx- chestnut_defconfig # toolchain from 
eldk 4.1

2) make ARCH=ppc CROSS_COMPILE=ppc_4xx- V=1

...

make -f scripts/Makefile.build obj=arch/ppc/platforms
  
ppc_4xx-gcc -m32 -Wp,-MD,arch/ppc/platforms/.chestnut.o.d  -nostdinc -isystem /opt/eldk/usr/bin/../lib/gcc/powerpc-linux/4.0.0/include -D__KERNEL__ -Iinclude  -include 
include/linux/autoconf.h -Iarch/ppc -Iarch/ppc/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2 -Iarch/ppc -msoft-float -pipe -ffixed-r2 -mmultiple  -mno-altivec -mstring -Wa,-maltivec -fomit-frame-pointer  -Wdeclaration-after-statement -Wno-pointer-sign    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(chestnut)"  -D"KBUILD_MODNAME=KBUILD_STR(chestnut)" -c -o 
arch/ppc/platforms/chestnut.o arch/ppc/platforms/chestnut.c
arch/ppc/platforms/chestnut.c: In function 'chestnut_setup_mtd':
arch/ppc/platforms/chestnut.c:435: error: 'physmap_map' undeclared (first use 
in this function)
arch/ppc/platforms/chestnut.c:435: error: (Each undeclared identifier is 
reported only once
arch/ppc/platforms/chestnut.c:435: error: for each function it appears in.)
make[1]: *** [arch/ppc/platforms/chestnut.o] Error 1
make: *** [arch/ppc/platforms] Error 2

This PROBLEM should also affect these boards:
find -name '*.[chS]' -exec grep physmap_map {} \; -print
        physmap_map.size = CHESTNUT_32BIT_SIZE;
./arch/ppc/platforms/chestnut.c
        physmap_map.size = size;
./arch/ppc/platforms/ev64360.c
        physmap_map.size = size;
./arch/ppc/platforms/katana.c

I've veryfied 2.6.15, 2.6.19.2 2.6.20.1 2.6.20.6

ONLY 2.6.15 can build successfully. sounds like the problem is caused by the 
interface change of mtd.

this brute force patch sould solve the problem:

diff -Nru /tmp/linux-2.6.20.6/arch/ppc/platforms/chestnut.c \  
linux-2.6.20.6/arch/ppc/platforms/chestnut.c

--- /tmp/linux-2.6.20.6/arch/ppc/platforms/chestnut.c   2007-04-07 
04:02:48.000000000 +0800
+++ linux-2.6.20.6/arch/ppc/platforms/chestnut.c        2007-04-13 
17:09:03.000000000 +0800
@@ -432,7 +432,9 @@
        ptbl.name = "User FS";
        ptbl.size = CHESTNUT_32BIT_SIZE;

-       physmap_map.size = CHESTNUT_32BIT_SIZE;
+       // physmap_map.size = CHESTNUT_32BIT_SIZE;
+       physmap_configure(CHESTNUT_32BIT_BASE, CHESTNUT_32BIT_SIZE, 
CONFIG_MTD_PHYSMAP_BANKWIDTH, NULL);
+
        physmap_set_partitions(&ptbl, 1);
        return 0;
 }

-- 
Wang, Baojun                                        Lanzhou University
Distributed & Embedded System Lab              http://dslab.lzu.edu.cn
School of Information Science and Engeneering        [email-masked]
Tianshui South Road 222. Lanzhou 730000                     .P.R.China
Tel:+86-931-8912025                                Fax:+86-931-8912022