Cfi can't probe the flash(am29lv320db)

Koen Martens gmc at sonologic.nl
Tue Jul 5 05:04:50 EDT 2005


Hi,

I had something similar happening, with some broken chip. The problem
was that the chip reported (through CFI) that it was 2mbyte, whereas in
reality it was only 512kbytes (which was also the size of the mapping of
the chip's address space in the linux address space). If this happens,
the cfi probe routine skips certain initialisations, most notably the
base offset and the wakeup queue are not initialized properly. The chip
is registered nonetheles..

Result: as soon as I accessed the flash -> kernel panic.

Just my 2 cents..

Koen

red dot wrote:
> If i use "map_rom" to probe the flash, the kernel can run normally.
> When i probe it with "cfi_probe", it can be found.
> 
> Following the messages:
> 
> CPU: ARM720T [41807202] revision 2 (ARMv4T)
> Machine: Hynix HMS30C7202
> Warning: bad configuration page, trying to continue
> Memory policy: ECC disabled, Data cache writeback
> Built 1 zonelists
> Kernel command line: console=ttyS2,57600 mem=8M rootfstype=romfs
> root=/dev/mtdblock2 ro
> Trying to install chained handler for IRQ16
> PID hash table entries: 64 (order: 6, 1024 bytes)
> Console: colour dummy device 80x30
> Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
> Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
> Memory: 8MB = 8MB total
> Memory: 6784KB available (991K code, 237K data, 52K init)
> Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
> CPU: Testing write buffer coherency: ok
> Linux NoNET1.0 for Linux 2.6
> NetWinder Floating Point Emulator V0.97 (double precision)
> JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc.
> Initializing Cryptographic API
> h720x Framebuffer driver
> h720xfb_init_fbinfo
> h720xfb_set_par
> var: xres=320 hslen=4 lm=0 rm=0
> var: yres=240 vslen=0 um=0 bm=0
> h720xfb_check_var
> var->bits_per_pixel=4
> RGBT length = 8:8:8:0
> RGBT offset = 0:0:0:0
> h7202 PS/2 port driver
> Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled
> ttyS0 at MMIO 0x0 (irq = 8) is a 16550A
> ttyS1 at MMIO 0x0 (irq = 9) is a 16550A
> ttyS2 at MMIO 0x0 (irq = 10) is a 16550A
> ttyS3 at MMIO 0x0 (irq = 11) is a 16550A
> Using anticipatory io scheduler
> H720x remap virt=c1080000
> H720x-MTD probing 16bit FLASH
> file:drivers/mtd/chips/cfi_probe.c line:70 base=0
> file:drivers/mtd/chips/cfi_probe.c line:86 
> file:drivers/mtd/chips/cfi_probe.c line:88 
> Unable to handle kernel paging request at virtual address c1080055
> pgd = c0004000
> [c1080055] *pgd=4019f031, *pte=000000a3, *ppte=00000552
> Internal error: Oops: 1a00081f [#1]
> Modules linked in:
> CPU: 0
> PC is at cfi_probe_chip+0x2c8/0x10d8
> LR is at cfi_probe_chip+0x248/0x10d8
> pc : [<c00ead84>]    lr : [<c00ead04>]    Not tainted
> sp : c01a3eb0  ip : 00000000  fp : c01a3f34
> r10: 00000000  r9 : 00000055  r8 : c01a3f3c
> r7 : 00000002  r6 : c0122d38  r5 : 00000001  r4 : 00000002
> r3 : c1080000  r2 : 00000098  r1 : 00000002  r0 : 00000001
> Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
> Control: 217F  Table: 4000401D  DAC: 0000001D
> Process swapper (pid: 1, stack limit = 0xc01a2190)
> Stack: (0xc01a3eb0 to 0xc01a4000)
> 3ea0:                                     0000001e c01a3f34 c01a3ec4 c0016ac0 
> 3ec0: c0017c38 00000000 0000000d 00000000 00000020 c0147920 00002702 00000020 
> 3ee0: c013c930 00000003 00000000 0000001e c01a3f34 00000002 c01a3f0c c01a3f34 
> 3f00: 00000098 000000ff 000000f0 00000001 00000002 00000000 c0014d38 c0122d38 
> 3f20: c01a3f3c c0122c9c c01a3f9c c01a3f38 c00f06c8 c00eaacc 00000763 00000000 
> 3f40: 00000000 00000001 00000001 00000000 00000000 00000000 00000000 00000000 
> 3f60: 00000000 00000000 00000000 00000000 00000000 c0122c84 c010b284 c0122d38 
> 3f80: c0014d38 00000000 00000000 00000000 c01a3fb8 c01a3fa0 c00ea6f8 c00f0658 
> 3fa0: c0122d38 c01a2000 00000000 c01a3fd4 c01a3fbc c00135dc c00ea6b0 c0014d1c 
> 3fc0: c01a2000 00000000 c01a3ff4 c01a3fd8 c00150e0 c001355c 00000000 00000000 
> 3fe0: 00000000 00000000 00000000 c01a3ff8 c002b030 c0015064 00000000 00000000 
> Backtrace: 
> [<c00eaabc>] (cfi_probe_chip+0x0/0x10d8) from [<c00f06c8>]
> (mtd_do_chip_probe+0x80/0x304)
> [<c00f0648>] (mtd_do_chip_probe+0x0/0x304) from [<c00ea6f8>]
> (do_map_probe+0x58/0xa0)
> [<c00ea6a0>] (do_map_probe+0x0/0xa0) from [<c00135dc>]
> (h720x_mtd_init+0x90/0x164)
>  r6 = 00000000  r5 = C01A2000  r4 = C0122D38 
> [<c001354c>] (h720x_mtd_init+0x0/0x164) from [<c00150e0>] (init+0x8c/0x1c8)
>  r6 = 00000000  r5 = C01A2000  r4 = C0014D1C 
> [<c0015054>] (init+0x0/0x1c8) from [<c002b030>] (do_exit+0x0/0xae4)
>  r7 = 00000000  r6 = 00000000  r5 = 00000000  r4 = 00000000
> Code: 07c32009 0a000006 e3530002 0596300c (018320b9) 
>  <0>Kernel panic - not syncing: Attempted to kill init!
>  
> The kernel is broken at cfi_send_gen_cmd(0x98, 0x55, base, map, cfi,
> cfi->device_type, NULL).


-- 
K.F.J. Martens, Sonologic, http://www.sonologic.nl/
Networking, hosting, embedded systems, unix, artificial intelligence.
Public PGP key: http://www.metro.cx/pubkey-gmc.asc
Wondering about the funny attachment your mail program
can't read? Visit http://www.openpgp.org/




More information about the linux-mtd mailing list