kern/168217: [bce] Watchdog timeouts with bce(4) on BCM5716
Xin Li
delphij at delphij.net
Mon Jun 4 08:48:38 UTC 2012
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On 06/04/12 17:32, YongHyeon PYUN wrote:
> On Tue, May 22, 2012 at 10:34:00AM -0700, Xin Li wrote:
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
>>
>> On 05/22/12 03:37, yongari at FreeBSD.org wrote:
>>> Your release information(i386) and environment(amd64) does not
>>> match. Are you using i386 or PAE?
>>
>> Sorry if there is mismatch then it must be I didn't cleared out
>> freefall information properly. The system is running
>> FreeBSD/amd64 and not i386 nor PAE.
>>
>>> Having backtrace would be nice.
>>
>> Will do.
>>
>>> It seems you have two differnt controllers(5716 and 5709). Does
>>> the issue happen only on 5716?
>>
>> We have not yet tested on the 5709 part as they are not
>> connected.
>>
>> By the way there are some updates from yesterday. Disabling
>> hdr_split did not helped and the system stops responding again;
>> disabling both hdr_split and tso seems to make the system survive
>> after 8 hours, we will continue to watch it and report back if
>> new information available.
>>
>> Another thing to note is that we found that on systems that does
>> not exhibit the same problem, they have oui=0x50ef for the four
>> brgphy's, and on this system the four have oui=0xaf7 (brgphy0
>> pnpinfo oui=0xaf7 model=0x3c rev=0x8 at phyno=1). Not sure if
>> this is related though.
>>
>
> Xin, I'm under the impression that bce_intr() might be called when
> IFF_DRV_RUNNING is not set. Could you check whether
> sc->bce_ifp->if_drv_flags set IFF_DRV_RUNNING in bce_intr()? Sorry,
> one of my box that can host quad-port bce(4) controller died so I
> can't verify this at the moment until I get a new MB.
I've made the following change:
Index: sys/dev/bce/if_bce.c
===================================================================
- --- sys/dev/bce/if_bce.c (revision 233291)
+++ sys/dev/bce/if_bce.c (working copy)
@@ -7678,6 +7678,9 @@ bce_intr(void *xsc)
BCE_LOCK(sc);
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != IFF_DRV_RUNNING)
+ BCE_PRINTF("Got interrupt without IFF_DRV_RUNNING!\n");
+
DBRUN(sc->interrupts_generated++);
/* Synchnorize before we read from interface's status block */
Should we run with that and see if we can catch something?
Cheers,
- --
Xin LI <delphij at delphij.net> https://www.delphij.net/
FreeBSD - The Power to Serve! Live free or die
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)
iQEcBAEBCAAGBQJPzHZQAAoJEG80Jeu8UPuzBBAIAL1Q/Nt+e5okB+8EB/Ah7Gkm
+4OT+Y2vB/eW+vP8HgOKsbtE6dJ3w6saTUP0RGPekpeLfdvUVxSfL1lVOCvDPyic
8IoftFoHsSOanfisrTPTiHJet2m2fYOywHPx4tfAXvYvyQON48YHRRugDaQW6WPz
azzOVHY27J4Zf2UGqDrbTY5m8yWx8MCePJ3fsBKLcY6RDLHOVpE58ebW+LfNZ9RQ
fdZPkRTXcAcvZo8Cgv2F5lo6PdRv6C5MoWgk37rR24DZD3bVcXFCM7qRrkd86TqH
OY7mNjfC0QqTDgv/EKty//TtA8C0IO5iu0mRI71ONDKEEte73RiqMz1dC43IEnE=
=inpj
-----END PGP SIGNATURE-----
More information about the freebsd-net
mailing list