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. -- Len Sorensen _______________________________________________ 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