Kernel boot hangs by parallel flood pings
Rune Torgersen
runet at innovsys.com
Thu Jan 13 02:32:28 EST 2005
I have had the problem before (and so has several other people)
This is a reply I got on the old Linux PPC mailinglist last year
(from Gerard Guevel [gguevel at interfaceconcept.com])
---- Original message -----
RE: FCC ethernets not stable
I received the right solution from Jean-Denis Boyer (thanks to him...)
>>
It registers the IPv4 handling functions AFTER initializing the IP
routing
stuff.
Early packets could enter the stack and crash the system.
--- Kernel.old/net/ipv4/ip_output.c Thu Jun 5 09:00:39 2003
+++ Kernel/net/ipv4/ip_output.c Thu Jun 5 09:00:28 2003
@@ -1087,11 +1087,11 @@
void __init ip_init(void)
{
- dev_add_pack(&ip_packet_type);
-
ip_rt_init();
inet_initpeers();
+ dev_add_pack(&ip_packet_type);
+
#ifdef CONFIG_IP_MULTICAST
proc_net_create("igmp", 0, ip_mc_procinfo);
#endif
>>
I never saw this problem after installing this patch.
Regards
Gerard Guevel
> -----Original Message-----
> From: linuxppc-embedded-bounces at ozlabs.org
> [mailto:linuxppc-embedded-bounces at ozlabs.org] On Behalf Of
> Steffen Rumler
> Sent: Wednesday, January 12, 2005 02:38
> To: linuxppc
> Subject: Kernel boot hangs by parallel flood pings
>
> I'm using a 2.4.20 kernel (PPC).
>
> When I run multiple 'ping -f' directed to my board
> during the kernel boots, sometimes it hangs with
> the following messages:
>
>
> Memory BAT mapping: BAT2=64Mb, BAT3=32Mb, residual: 84Mb
> Linux version 2.4.20-rthal5 (ru at styx) (gcc version 2.95.3
> 20010111 (prerelease/franzo/20010111))
> #9 Tue Jan 11 17:09:22 CET 2005
> On node 0 totalpages: 29859
> zone(0): 29859 pages.
> zone(1): 0 pages.
> zone(2): 0 pages.
> Kernel command line: bootdev=aps0
> ip=218.1.36.70:218.1.36.47:218.1.36.254:255.255.255.0::eth0:off
> panic=1 mem=119436k
> Calibrating delay loop... 194.15 BogoMIPS
> ...
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP
> IP: routing cache ha
> ^^^^^^^
> the kernel boot hangs here
>
>
> I have checked this with the BDI2000 and found that the
> kernel loops anywhere inside ip_route_input().
>
> I think this is because the ethernet driver (fcc_enet.c)
> enables the hardware too already inside it's init routine
> (fec_enet_init()).
>
> In this way, frames may be received and forwarded to the upper
> layers with netif_rx(), before the TCP/IP was initialized.
>
> I suggest to delay the lines
>
> /* Enable transmit/receive */
> fccp->fcc_gfmr |= FCC_GFMR_ENR | FCC_GFMR_ENT;
>
> to the open entry point (fcc_enet_open()), which is
> triggered by 'ifconfig up' in the following way:
>
>
> if(!((fccp->fcc_gfmr) & FCC_GFMR_ENR))
> fccp->fcc_gfmr |= (FCC_GFMR_ENR | FCC_GFMR_ENT);
>
> By the way, fcc_enet_close() does _NOT_ stop the hardware.
> Hopefully, this is not a real problem.
>
>
> Steffen
>
> --
>
>
> --------------------------------------------------------------
>
> Steffen Rumler
> ICN CP D NT SW 3
> Siemens AG
> Hofmannstr. 51 Email: Steffen.Rumler at siemens.com
> D-81359 Munich Phone: +49 89 722-44061
> Germany Fax : +49 89 722-36703
>
> --------------------------------------------------------------
>
>
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
>
More information about the Linuxppc-embedded
mailing list