FCC Ethernet startup crash

Rune Torgersen runet at innovsys.com
Wed Apr 6 01:37:52 EST 2005

I've been running into the old problem of the kernel ip stack crasheing
the kernel, because of early packets again.

This has been mentioned on this list several times before, but the
worarounds that used to work doesn't seem to work anymore.
(like changing the order of things in ip_init())

As far as I can tell, it is because the FCC enet drivers starts to
receive packets way before the ip stack is initialized.

Does anybody have any good ideas on how to fix this?

Kernel: 2.6.12-rc2 on a MPC8265
I can almost reliably recreate this by flood-pinging the board while the
kernel is booting.

The crach is as follows:
eth0: FCC ENET Version 0.3, 00:30:d7:00:01:08
eth1: FCC ENET Version 0.3, 00:30:d7:00:01:09
NET: Registered protocol family 2
IP: routing cache hash table of 4096 buckets, 32Kbytes
Oops: kernel access of bad area, sig: 11 [#1]
NIP: A0141440 LR: A012ACA0 SP: AFFB1D80 REGS: affb1cd0 TRAP: 0300    Not
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 00000004, DSISR: 20000000
TASK = afde5ae0[1] 'swapper' THREAD: affb0000
Last syscall: 120
GPR00: 00000000 AFFB1D80 AFDE5AE0 A07069E0 AFF44000 A01E2C04 00001032
GPR08: A01E2C04 A0200000 AFFB0000 00000000 8010C082 000000B1 10000000
GPR16: 00000000 00000001 007FFF00 0FFFA6F0 00000000 FFFFFFFF 00000003
GPR24: 00000000 FFFB72C3 A01E1324 00000040 AFFB1DF8 A07069E0 A07069E0
Call trace: [a012aca0]  [a012ae58]  [a012afd8]  [a001b30c]  [a001b374]
[a001b464]  [a0005a60]  [a000480c]  [a01fcfcc]  [a01fd2bc]
[a01fddd0]  [a01ec718]  [a01ec7d8]  [a0003a20]  [a0006b44]
Kernel panic - not syncing: Aiee, killing interrupt handler!
 <0>Rebooting in 180 seconds..

Call trace:
$ call2sym
Ready for call trace list.  <ctrl-d> on a blank line when done.

[A0141440] [a012aca0]  [a012ae58]  [a012afd8]  [a001b30c]  [a001b374]
[a001b464]  [a0005a60]  [a000480c]  [a01fcfcc]  [a01fd2bc]
[a01fddd0]  [a01ec718]  [a01ec7d8]  [a0003a20]  [a0006b44]


Address         Function

A0141440        ip_rcv
a012aca0        netif_receive_skb
a012ae58        process_backlog
a012afd8        net_rx_action
a001b30c        __do_softirq
a001b374        do_softirq
a001b464        irq_exit
a0005a60        do_IRQ
a000480c        ret_from_except
a01fcfcc        ip_rt_init
a01fd2bc        ip_init
a01ec718        do_initcalls
a01ec7d8        do_basic_setup
a0003a20        init
a0006b44        kernel_thread
[runet at pib linux-innsys]$

Gdb list of excact line 

(gdb) list *0xA0141440
0xa0141440 is in ip_rcv (net/ipv4/ip_input.c:370).
365              * that it receives, do not try to analyse it.
366              */
367             if (skb->pkt_type == PACKET_OTHERHOST)
368                     goto drop;
372             if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) {
373                     IP_INC_STATS_BH(IPSTATS_MIB_INDISCARDS);
374                     goto out;

Rune Torgersen
System Developer
Innovative Systems LLC
1000 Innovative Drive
Mitchell, SD 57301
Ph: 605-995-6120

More information about the Linuxppc-embedded mailing list