eraseall causes kernel panic with newer kernel
Robert P. J. Day
rpjday at mindspring.com
Mon Jul 12 08:23:48 EDT 2004
i've been fighting with this all weekend, so i hope someone here can
give me a pointer (or two). in a nutshell, with older 2.4.22-pre8
kernel, define single large 8M filesystem on second (user) 8M flash on
850DE-based board, boot and get:
...
JFFS2 version 2.1. (C) 2001 Red Hat, Inc...
...
Synergy Flash device: 800000 at e0000000 <-- that's user flash
Synergy Flash device: 10000 at fc000000 <-- ignore that one
Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Creating 1 MTD partitions on "user flash":
0x00000000-0x00800000 : "check image area" <-- looks good, 8M fs
...
# ls -l /dev/mtd
crw-rw-rw- 1 root root 90, 0 Dec 31 1969 0
cr--r--r-- 1 root root 90, 1 Dec 31 1969 0ro
# cat /proc/mtd
dev: size erasesize name
mtd0: 00800000 00010000 "check image area" <-- again, looks good
mtd1: 00010000 00010000 "secsi sector"
# eraseall /dev/mtd/0
Erased 8192 Kibyte @ 0 -- 100% complete.
#
in short, it all worked. now, move up to 2.4.25 kernel (and clean
up the maps file to get rid of cruft), and try the same thing:
...
Registering user flash device at: e0000000, size: 800000 <-- OK
uflash: Found 1 x16 devices at 0x0 in 16-bit mode
Amd/Fujitsu Extended Query Table at 0x0040
uflash: CFI does not contain boot bank location. Assuming top. ???
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code
brokenness.
Creating 1 MTD partitions on "uflash":
0x00000000-0x00800000 : "ufs" <-- again, looks good
...
# ls -l /dev/mtd
crw-rw-rw- 1 root root 90, 0 Dec 31 1969 0
cr--r--r-- 1 root root 90, 1 Dec 31 1969 0ro
# cat /proc/mtd
dev: size erasesize name
mtd0: 00800000 00010000 "ufs" <-- good ...
so apart from that weird boot bank location diagnostic, it sure
looks like i've defined my flash chip properly, no?
# eraseall /dev/mtd/0
Erasing 64 Kibyte @ 0 -- 0 % complete.Oops: kernel access of bad
area, sig: 11
NIP: C000DD78 XER: 00000000 LR: C000DD74 SP: C0433D90 REGS: c0433ce0
TRAP: 0300dMSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000000, DSISR: 0000017E
TASK = c0432000[36] 'eraseall' Last syscall: 54
last math 00000000 last altivec 00000000
GPR00: 00001032 C0433D90 C0432000 00000001 00009032 00000001 C00D02D8
00000018
GPR08: C00D02D8 00000000 00000000 C0433DE0 00010000 10018E20 00000000
00000000
GPR16: 00000000 00000000 00000000 00000000 00009032 C00EEED0 C00EEED0
00000000
GPR24: 00000000 C00EEED0 00000000 00000003 00000001 C05ED7A4 00000000
C0433D90
Call backtrace:
C000D7B0 C0097060 C0099C14 C00980D0 C009819C C0091440 C0092C60
C0047A4C C000447C 0FF13EF8 10000688 0FEBCE88 00000000
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
seriously baffled here, and this has been absolutely consistent.
help?
rday
p.s. note the different diagnostics from cfi_cmdset_0002. is this
something i have to deal with?
More information about the linux-mtd
mailing list