2.6.24 panics initializing ne2k in mips.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: <linux-mips@...>, Ralf Baechle <ralf@...>
Date: Monday, January 28, 2008 - 4:17 am

The 2.6.23 kernel built for mips with the attached .config works fine for me 
under qemu (both big endian and little endian), but a 2.6.24 mips kernel 
segfaults initializing the ne2k driver (again when run under qemu).

I've traced it to this commit:

  http://kernel.org/hg/linux-2.6/rev/74258

Version 74257 works, 74258 does not.

The qemu invocation is:

  qemu-system-mips -M mips -no-reboot -nographic -hda /dev/zero -kernel \
    vmlinux -append "panic=1 console=ttyS0"

The panic is:

Linux version 2.6.24-rc2 (landley@driftwood) (libc/sysdeps/linux/mips/crt1.S:
(.text+0x1c): undefined reference to `main') #2 Mon Jan 28 02:08:00 CST 2008
console [early0] enabled
CPU revision is: 00019300 (MIPS 24K)
FPU revision is: 00739300
Determined physical RAM map:
 memory: 08000000 @ 00000000 (usable)
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: panic=1 console=ttyS0
Primary instruction cache 2kB, VIPT, 2-way, linesize 16 bytes.
Primary data cache 2kB, 2-way, VIPT, no aliases, linesize 16 bytes
Synthesized clear page handler (13 instructions).
Synthesized copy page handler (22 instructions).
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection enabled
PID hash table entries: 512 (order: 9, 2048 bytes)
Using 100.000 MHz high precision timer.
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
CPU 0 Unable to handle kernel paging request at virtual address 00000004, epc 
== 80053414, ra == 80054960
Oops[#1]:
Cpu 0
$ 0   : 00000000 10008400 ffff7fff 10000400
$ 4   : 00000017 00000000 801db96c 00000011
$ 8   : 10008400 1000001f 00000005 81100000
$12   : 801e0000 801e0000 3b9aca00 801b1868
$16   : 801b64d8 00000017 00000200 00000000
$20   : ffffffff 00007e20 0000001f 00015c00
$24   : 00091a6f 801b1a50
$28   : 801ae000 801afe08 00008000 80054960
Hi    : 03b9aca0
Lo    : 00000000
epc   : 80053414     Not tainted
ra    : 80054960 Status: 10000402    KERNEL EXL
Cause : 40008408
BadVA : 00000004
PrId  : 00019300 (MIPS 24K)
Process swapper (pid: 0, threadinfo=801ae000, task=801b0160)
Stack : 801dc407 801dc7d4 801aff3c 801c0000 801b64d8 00000017 00000200 
00000000
        ffffffff 80054960 10000000 801b0000 000004b2 000004b2 00000000 
0000001f
        80010b6c 000005b8 80031348 8003129c 801aff2c 801d0000 00000000 
800111e4
        801dc414 8019f9c4 801dc413 801d0000 00000040 801b0000 00000000 
10008400
        00000000 fffffbff 00000001 81015e20 00000001 00000011 81015e40 
81015c00
        ...
Call Trace:[<801c0000>][<80054960>][<80010b6c>][<80031348>][<8003129c>]
[<801d0000>][<800111e4>][<801d0000>][<8005d5b8>][<801ca414>][<801cb820>]
[<801cb744>][<801cb5a0>][<801d0000>][<801c3314>][<801c9b10>][<801cd79c>]
[<801d0000>][<801bfb30>][<801bf118>]

Code: afb3001c  afb20018  afb10014 <8ca20004> 00a08021  30420020  14400009  
0080a021  40016000
Kernel panic - not syncing: Fatal exception in interrupt
Rebooting in 1 seconds..

The final 2.6.24 release panics slightly differently, it waits until the ne2k 
init and then loses it.  I'm not quite sure this is the same problem (since 
the error is now occuring in a different place), but I haven't found any 
kernel _after_ that which won't panic during init.  Only the placement of the 
panic changes.

I fiddled around a bit in the debug menu, but didn't figure out how to get 
actual function names of out a mips trace...

The way I reproduce this is with my http://landley.net/hg/firmware/ build 
script, download the most recent version (links to tarballs at the top), 
run "./build.sh mips" and let it grind a lot, then extract the 
build/qemu-image-mips.tar.bz2 tarball, cd qemu-image-mips and 
run "./run-mips.sh" in that directory.  (I have qemu 0.9.1 installed.)

More details in my blog at http://landley.net/notes-2008.html#27-01-2008

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.24 panics initializing ne2k in mips., Rob Landley, (Mon Jan 28, 4:17 am)
Re: 2.6.24 panics initializing ne2k in mips., Ralf Baechle, (Tue Jan 29, 7:16 am)
Re: 2.6.24 panics initializing ne2k in mips., Samuel Masham, (Fri Feb 22, 10:17 am)
Re: 2.6.24 panics initializing ne2k in mips., Rob Landley, (Fri Feb 22, 6:19 pm)
Re: 2.6.24 panics initializing ne2k in mips., Samuel Masham, (Sat Feb 23, 3:56 am)
Re: 2.6.24 panics initializing ne2k in mips., Rob Landley, (Sat Feb 23, 5:43 pm)
[PATCH 1/2] IRQ_NOPROBE helper functions, Ralf Baechle, (Tue Jan 29, 7:20 am)
Re: [PATCH 1/2] IRQ_NOPROBE helper functions, Rob Landley, (Thu Jan 31, 3:56 am)
Re: 2.6.24 panics initializing ne2k in mips., Rob Landley, (Tue Jan 29, 1:51 am)