seeking help on JFFS2
Junping Zhang
JZhang at erinc.com
Wed Nov 6 11:09:09 EST 2002
David,
I changed mtd.h to make unpoint take four params, it doesn't seem to
have any effect.
So here is what I have:
linux-2.4.19 + shared-zlib patch + mtd-20021022 snapshot, but I
used the original
patchin.sh, so JFFS2 in 2.4.19 is used.
It always crashed at the same point in kernel.
Here is the oops, ksymoops result and the source lines.
Thanks a lot -- Junping
This is the oops message
========================
Oops: kernel access of bad area, sig: 11
NIP: C00E0008 XER: 00000000 LR: C00DFFB4 SP: C3E0DCC0 REGS: c3e0dc10 TRAP:
0300 Not tainted
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000005, DSISR: 20000000
TASK = c3e0c000[32] 'cp' Last syscall: 4
last math c3e0c000 last altivec 00000000
GPR00: C00E0004 C3E0DCC0 C3E0C000 80808080 C3F88560 C3F885E0 C3E0DCD4
00000010
GPR08: C3E0DDB0 00000000 00000000 00000010 00000000 10055EF0 00000000
C3ACFEC0
GPR16: C3E0DEBC C01CE670 C01CE670 00001000 C3E0DDB0 00000010 00000000
C3F885E0
GPR24: 0012E1D8 80808080 00005DDA 00000000 0012E1D8 C3F8861C C3F88560
00000010
Call backtrace:
C0013610 C00DDD38 C00E22B8 C00A62CC C00A6484 C00A2378 C002A024
C00375A4 C0005BBC FFFFFFFF 0FF2463C 0FF253A0 0FF1A1B0 1002FB8C
1002F874 1002F6A0 100056C4 1002F2C8 1002EF18 0FECEF70 00000000
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
<0>Rebooting in 180 seconds..
This is the oops through ksymoops
(on my mount nfs. MTD & JFFS2 are compiled in, so no modules)
=============================================================
# ./ksymoops -v ./vmlinux -m ./System.map oops.now
ksymoops 2.4.1 on ppc 2.4.19. Options used
-v ./vmlinux (specified)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.19/ (default)
-m ./System.map (specified)
/usr/bin/nm: not found
Error (pclose_local): read_nm_symbols pclose failed 0xff00
Warning (read_vmlinux): no kernel symbols in vmlinux, is ./vmlinux a valid
vmlinux file?
No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod
file?
Warning (compare_maps): mismatch on symbol xchg_u32 , ksyms_base says
c000d300, System.map says c0008yOops: kernel access of bad area, sig: 11
NIP: C00E0008 XER: 00000000 LR: C00DFFB4 SP: C3E0DCC0 REGS: c3e0dc10 TRAP:
0300 Not tainted
Using defaults from ksymoops -t elf32-powerpc -a powerpc:common
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c3e0c000[32] 'cp' Last syscall: 4
last math c3e0c000 last altivec 00000000
GPR00: C00E0004 C3E0DCC0 C3E0C000 80808080 C3F88560 C3F885E0 C3E0DCD4
00000010
GPR08: C3E0DDB0 00000000 00000000 00000010 00000000 10055EF0 00000000
C3ACFEC0
GPR16: C3E0DEBC C01CE670 C01CE670 00001000 C3E0DDB0 00000010 00000000
C3F885E0
GPR24: 0012E1D8 80808080 00005DDA 00000000 0012E1D8 C3F8861C C3F88560
00000010
Call backtrace:
C0013610 C00DDD38 C00E22B8 C00A62CC C00A6484 C00A2378 C002A024
C00375A4 C0005BBC FFFFFFFF 0FF2463C 0FF253A0 0FF1A1B0 1002FB8C
1002F874 1002F6A0 100056C4 1002F2C8 1002EF18 0FECEF70 00000000
Kernel panic: Aiee, killing interrupt handler!
Warning (Oops_read): Code line not seen, dumping what data is available
>>NIP; c00e0008 <do_read_onechip+b8/4ec> <=====
Trace; c0013610 <call_console_drivers+a0/168>
Trace; c00ddd38 <cfi_intelext_read+b4/100>
Trace; c00e22b8 <part_read+68/a0>
Trace; c00a62cc <writecheck+34/12c>
Trace; c00a6484 <jffs2_write_dnode+c0/2b4>
Trace; c00a2378 <jffs2_commit_write+364/614>
Trace; c002a024 <generic_file_write+49c/7ac>
Trace; c00375a4 <sys_write+bc/150>
Trace; c0005bbc <ret_from_syscall_1+0/b4>
Trace; ffffffff <END_OF_CODE+3fe0f237/????>
Trace; 0ff2463c Before first symbol
Trace; 0ff253a0 Before first symbol
Trace; 0ff1a1b0 Before first symbol
Trace; 1002fb8c Before first symbol
Trace; 1002f874 Before first symbol
Trace; 1002f6a0 Before first symbol
Trace; 100056c4 Before first symbol
Trace; 1002f2c8 Before first symbol
Trace; 1002ef18 Before first symbol
Trace; 0fecef70 Before first symbol
Trace; 00000000 Before first symbol
4 warnings and 1 error issued. Results may not be reliable.
This is the source positions for the oops (for the last four)
=============================================================
I don't know how call_console_drivers got in the trace ...
(gdb) l *0xc00e0008
0xc00e0008 is in do_read_onechip (cfi_cmdset_0001.c:473).
468 /* Check that the chip's ready to talk to us.
469 * If it's in FL_ERASING state, suspend it and make it talk now.
470 */
471 switch (chip->state) {
472 case FL_ERASING:
473 if (!(((struct cfi_pri_intelext
*)cfi->cmdset_priv)->FeatureSupport & 2))
474 goto sleep; /* We don't support erase suspend */
475
476 cfi_write (map, CMD(0xb0), cmd_addr);
477 /* If the flash has finished erasing, then 'erase suspend'
(gdb) l *0xc0013610
0xc0013610 is in call_console_drivers (printk.c:379).
374 start_print = cur_index;
375 break;
376 }
377 }
378 }
379 _call_console_drivers(start_print, end, msg_level);
380 }
381
382 static void emit_log_char(char c)
383 {
(gdb) l *0xc00ddd38
0xc00ddd38 is in cfi_intelext_read (cfi_cmdset_0001.c:607).
602 if ((len + ofs -1) >> cfi->chipshift)
603 thislen = (1<<cfi->chipshift) - ofs;
604 else
605 thislen = len;
606
607 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen,
buf);
608 if (ret)
609 break;
610
611 *retlen += thislen;
(gdb) l *0xc00e22b8
0xc00e22b8 is in part_read (mtdpart.c:57).
52 struct mtd_part *part = PART(mtd);
53 if (from >= mtd->size)
54 len = 0;
55 else if (from + len > mtd->size)
56 len = mtd->size - from;
57 return part->master->read (part->master, from + part->offset,
58 len, retlen, buf);
59 }
60
61 static int part_point (struct mtd_info *mtd, loff_t from, size_t len,
(gdb)
> -----Original Message-----
> From: David Woodhouse [SMTP:dwmw2 at infradead.org]
> Sent: Tuesday, November 05, 2002 4:37 PM
> To: Junping Zhang
> Subject: Re: seeking help on JFFS2
>
>
> JZhang at erinc.com said:
> > Here is the oops message through ksymoops:
>
> Can you show the whole oops, preferably also using gdb to identify the
> precise line of code.
>
> --
> dwmw2
>
More information about the linux-mtd
mailing list