On 1/21/2015 1:43 PM, Stefan Sperling wrote:
On Wed, Jan 21, 2015 at 12:21:46PM -0500, j...@johnmerriam.net wrote:
Synopsis: bce(4) infinite loop of descriptor error
Category: kernel
Environment:
System : OpenBSD 5.7
Details : OpenBSD 5.7-beta (GENERIC.MP) #0: Tue Jan 20 12:38:44 EST
2015
r...@test.johnmerriam.net:/usr/src/sys/arch/amd64/compile/GENERIC.MP
Architecture: OpenBSD.amd64
Machine : amd64
Description:
If I try to use the bce(4) on-board Broadcom NIC in OpenBSD
I get bce0: descriptor error repeated on the console in an
infinite loop. The machine is unusable once it gets stuck in
the infinite loop and a power cycle is required. It looks to
me like the descriptor error infinite loop is occurring in
the bce_intr() function in sys/dev/pci/if_bce.c but I don't
see how to diagnose/fix it further. I am currently using a
rl(4) add-in NIC to make the machine usable. It is running
-current amd64 from CVS sync'ed 1/20/2015.
How-To-Repeat:
ifconfig bce0 up
Fix:
Using a different add-in NIC makes the machine usable but
being able to use the on-board NIC would be nice.
dmesg:
OpenBSD 5.7-beta (GENERIC.MP) #0: Tue Jan 20 12:38:44 EST 2015
r...@test.johnmerriam.net:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 3437608960 (3278MB)
avail mem = 3342286848 (3187MB)
Try putting less than 1GB of memory in your machine and see if that
fixes it. IIRC the chip cannot do DMA access to memory above 1GB.
There is supposed to be a bounce buffer in bce to cope with
systems with more than 1GB but perhaps it is broken.
I installed the old 1GB DIMM that came with the machine when I acquired
it, and you are correct, it seems to work fine with <= 1GB RAM.
I haven't tested it for a long time but I did a ping -f to it from
another machine and it only dropped 9 out of about 1 million packets
when using the bce interface with 1GB RAM:
# ping -n -f -s 1472 1.2.3.4
PING 1.2.3.4 (1.2.3.4): 1472 data bytes
--- 1.2.3.4 ping statistics ---
1026488 packets transmitted, 1026479 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.439/0.710/14.295/0.249 ms
Much better than hanging the machine in an infinite loop when just
trying to use the bce interface at all.
Next question is how to fix it so it works with > 1GB RAM.
--
John Merriam