kern/128833: [bge] Network packets corrupted when bge card is in 64-bit PCI slot

David Christensen davidch at
Mon Nov 17 11:49:48 PST 2008

>  Ok, thanks for testing anyway.
>  I still think that this isn't really a driver bug though but
>  you are hitting some hardware-related problem like f.e. a
>  silicon bug and the question is how to work around it.

There is a documented errata for the 5701 A3 where a 64bit DMA
read can be terminated early by the bridge and then completed 
later as a 32bit access, causing corruption on the 5701. The 
errata states this type of behavior is rare in bridges and that
the workaround is to force 32bit operation (set bit 15 of register
0x6800).  It's not clear whether this errata is occurring without
seeing a but trace but it certainly sounds right.  The only 
question would be knowing "when" to force 32bit operation.  Should
it be done in all cases or only for this bridge?

>  Looking at the bge(4) versions of the other BSDs and the
>  corresponding Linux and OpenSolaris drivers I can't spot
>  a such a workaround apart from the already known PCI-X
>  issue, unfortunately. The only other thing that comes to
>  my mind is that you might suffer from sort of the opposite
>  of the problem worked around by ti_64bitslot_war() (the NICs
>  driven by ti(4) are the predecessors of those supported by
>  bge(4)). Given that this also involves the BIOS that could
>  then explain why you're see first person to hit this problem.
>  Could you please instrument bge(4) to print the content
>  of the BGE_PCI_PCISTATE register and report back which
>  values it's initialized to depending on which type of slot
>  the card is plugged into?


More information about the freebsd-net mailing list