intermittent network hang on geode when idle
tritius at rogers.com
tritius at rogers.com
Thu Aug 21 11:44:38 PDT 2003
I am currently using a custom built small FreeBSD implementation on multiple embedded type boards. I am currently having a rather strange problem with two of my Geode based boards.
The system functions perfectly for a time, but has intermittent network lockups where no packets are accepted, and any connected session times out. This is usually only after some ( ~20 minutes ) idle time.
This state continues until the first keystroke is sent via the serial console. The instant a key is pressed on the serial console, the unit functions normally again.
Normally I would just drop into DDB and start checking to see why the network could be locked up, but the problem disappears before I can get the debugger started.
I have made significant changes to the system, but mostly in the boot blocks / loader and look and feel departments, along with a new init and some extra boot flags through the kernel, but the way the kernel functions is basically identicalto stock.
The same software on other boards ( AMD K6, P-233, and P3-1Ghz ) does not exhibit this problem.
The system does entail some IRQ muxing for IRQs 9 an 11 however, and I am starting to lean towards that as a possible problem, although all serial ports on the system have their own dedicated IRQ.
The even stranger part, is that this has never manifested itself when pcic0 ( the device that shares an irq with pcn0 ) , has been used. The issue is manifesting itself now that there is no active PC-Card in that controller.
The board is not a Soekris 4801, but it may be subject to similar issues.
System is using i8254 as timecounter hardware due to some issues with TSC
Has anyone else ran into a similar problem with a system on a Geode processor?
I could also use some assistance as to what I could do to possibly track down a specific reason or specific point where the hang is coming.
I have been thinking of perhaps a more significant pcn watchdog, or setting up something to can automatically invoke DDB without human intervention and without a panic. There are no vga or kbd devices in the kernel ( or on the board for that matter )
Relevant dmesg entries from stock kernel
Timecounter "i8254" frequency 1193182 Hz
Timecounter "TSC" frequency 200458094 Hz
CPU: Cyrix GXm (200.46-MHz 586-class CPU)
Origin = "CyrixInstead" Id = 0x540 DIR=0x8143 Stepping=8 Revision=1
real memory = 62324736 (60864K bytes)
pcn0: <AMD PCnet/PCI 10/100BaseTX> port 0xdc00-0xdc1f mem 0xe0000000-0xe000001f irq 11 at device 13.0 on pci0
pcic0: <TI PCI-1225 PCI-CardBus Bridge> irq 9 at device 15.0 on pci0
pcic1: <TI PCI-1225 PCI-CardBus Bridge> irq 11 at device 15.1 on pci0
atapci0: <Cyrix 5530 ATA33 controller> port 0xfc00-0xfc7f at device 18.2 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ohci0: <OHCI (generic) USB controller> mem 0xe0002000-0xe0002fff irq 9 at device 19.0 on pci0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A, console
sio1 at port 0x500-0x507 irq 12 on isa0
sio1: type 16550A
sio2 at port 0x3e8-0x3ef irq 6 on isa0
sio2: type 16550A
sio3 at port 0x2e8-0x2ef irq 5 on isa0
sio3: type 16550A
ad0: 61MB <SanDisk SDCFB-64> [490/8/32] at ata0-master PIO1
kern.timecounter.hardware: TSC -> i8254
More information about the freebsd-small