Hi all,
i did some further steps on this issue:
1) replaced busybox httpd with standard httpd, the issue happen again,
in the same way, clicking refresh on the borwser, after 3 o 4 times the
panic happen:
# BUG: failure at mm/slab.c:3002/cache_alloc_refill()!
Kernel panic - not syncing: BUG!
2)i added some "printk" in the dm9000 network driver, where i suspect i
did something wrong, and added some kernel debug support: issue seems to
happen while the driver transmit out packets, inside dm9000_start_xmit
dm9000_start_xmit entering
dm9000_outblk_32bit start 003B8866
dm9000_outblk_32bit stop 003B88AA
dm9000_outblk_8bit start 00C65A9C
dm9000_outblk_8bit stop 00C65AA0
dm9000_outblk_8bit start 0024A812
dm9000_outblk_8bit stop 0024A85A
dm9000_start_xmit exiting
dm9000_start_xmit entering
dm9000_outblk_32bit start 003B8866
dm9000_outblk_32bit stop 003B88DE
dm9000_start_xmit exiting
BUG: recent printk recursion!
dm9000_outblk_8bit start 00C65B18
dm9000_outblk_8bit stop 00C65B1C
dm9000_outblk_8bit start 0024AE12
dm9000_outblk_8bit stop 0024AE5A
dm9000_start_xmit entering
dm9000_outblk_32bit start 003B8866
dm9000_outblk_32bit stop 003B88EE
*** ILLEGAL INSTRUCTION *** FORMAT=4
Current process id is 30
BAD KERNEL TRAP: 00000000
PC: [<00000000>]
SR: 2700 SP: 00c65a28 a2: 002e1b40
d0: 00002700 d1: 00002000 d2: 00000000 d3: 00000000
d4: 0000001f d5: ffff9d5c a0: 30000004 a1: 30000000
Process httpd (pid: 30, stackpage=00301060)
Stack from 00c65a5c:
43fc2700 000b863c 002e1b40 000000ff 00000080 00000000 00000000
0000001f
ffff9d5c 000e5034 000de41e 002ed6a0 0002331a 00023fce 0000a36c
00002000
48780002 407c2000 00c65ac4 0002334a 0000001f 002e1800 0000001f
002ed6a0
002e1af0 00153000 00c65ae8 00023442 0000001f 002ed6a0 0000001f
00c65b5c
000b7ca2 002e1b40 002e1800 00c65afc 00000d86 0000001f 0000001d
00000000
00c65b4c 0000390e 0000001f 00c65b0c 00000074 0000001d 00000000
002e1af0
Call Trace:
[000b863c]
Kernel panic - not syncing: Aiee, killing interrupt handler!
I am proceeding with investigations, any suggestion is still appreciated,
Regards,
Angelo
On 21/06/2010 16:18, Lennart Sorensen wrote:
On Sun, Jun 20, 2010 at 10:11:28PM +0200, angelo wrote:
Dear all,
i am running kernel 2.6.X uClinux on a MCF5307 / dm9000 custom board.
dm9000 driver was written for little endian cpu, i adapted it to big
endian cpu with some byte swapping here and there.
So the network is mostly working, ping commands and ping replies are
executing correctly.
Anyway, when i refresh from the browser the board httpd default page,
after some refresh i get this error:
------------[ cut here ]------------
WARNING: at net/core/dst.c:270 ()
Stack from 00c87d90:
00c87e84 00008342 003b59f0 003b59f0 00004820 00000000 00000001 00145520
00020be0 00021854 000d55c4 0000540c 00166950 00385660 00000000 00385660
00000000 00c87dd4 0000ffae 00000081 00000100 00000004 00000001 000228c4
00c87000 000089c8 00022ad0 0014abc4 0016ccc0 0014abb0 0016cc84 0016b6ec
0000c944 0000c9b8 00002714 00000000 00000004 00164820 00000000 003b59f0
00c768d0 00c76870 0000c9d4 0000ca08 0000001d 0000cb92 00000d78 003b59f0
Call Trace with CONFIG_FRAME_POINTER disabled:
[00008342] [00004820] [00020be0] [00021854] [000d55c4]
[0000540c] [0000ffae] [000228c4] [000089c8] [00022ad0]
[0000c944] [0000c9b8] [00002714] [0000c9d4] [0000ca08]
[0000cb92] [00000d78] [000038a2] [00032d2e] [000e0184]
[00141304] [000d4c92] [000d5e9c] [000d55d0] [000fd270]
[001166d4] [000d0c60] [000d13ee] [000353a6] [001282fe]
[00035674] [00032d62] [00009b7c] [0000b330] [00009ba0]
[0000ab14] [0000b330] [0000b342] [0000374c]
---[ end trace d2c968cda5769f30 ]---
I afraid that the dm9000 driver i modified have some issue, or still
need some change. Any help is appreciated.
I think you are going to have to build your kernel with some minimal
debug info. Those values have no meaning to anyone unfortunately.
If the kernel was build with the symbols, you would get function names
printed instead which is much more helpful. It does make the kernel
slightly bigger, but not that much.
This is not the same as full debuging symbols though. Those would make
the kernel much larger.
CONFIG_FRAME_POINTER is really nice to have on.
Now it appears to be a warning.
Also kernel 2.6.x is not much more precise than just saying 'linux'.
2.6.x has been around for 7 or 8 years now.
Now the only warning in net/core/dst.c on current 2.6 code is:
void dst_release(struct dst_entry *dst)
{
if (dst) {
int newrefcnt;
smp_mb__before_atomic_dec();
newrefcnt = atomic_dec_return(&dst->__refcnt);
WARN_ON(newrefcnt< 0);
}
}
So that would mean something failed to keep track of the refcnt properly.
It may be that a buffer was freed and then reused after freeing.
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev