From owner-cvs-src@FreeBSD.ORG Thu Dec 14 05:01:01 2006 Return-Path: X-Original-To: cvs-src@freebsd.org Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 501E916A4D2; Thu, 14 Dec 2006 05:01:01 +0000 (UTC) (envelope-from bde@zeta.org.au) Received: from mailout1.pacific.net.au (mailout1-3.pacific.net.au [61.8.2.210]) by mx1.FreeBSD.org (Postfix) with ESMTP id ADDB343CB5; Thu, 14 Dec 2006 04:59:24 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.2.163]) by mailout1.pacific.net.au (Postfix) with ESMTP id 9C0BC5DFD7E; Thu, 14 Dec 2006 16:00:41 +1100 (EST) Received: from besplex.bde.org (katana.zip.com.au [61.8.7.246]) by mailproxy2.pacific.net.au (Postfix) with ESMTP id 53B6027421; Thu, 14 Dec 2006 16:00:40 +1100 (EST) Date: Thu, 14 Dec 2006 16:00:39 +1100 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Jung-uk Kim In-Reply-To: <200612131846.33252.jkim@FreeBSD.org> Message-ID: <20061214152805.D2109@besplex.bde.org> References: <200612132051.kBDKppS4058663@repoman.freebsd.org> <200612131846.33252.jkim@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: cvs-src@freebsd.org, src-committers@freebsd.org, Scott Long , cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/bge if_bge.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Dec 2006 05:01:01 -0000 On Wed, 13 Dec 2006, Jung-uk Kim wrote: > On Wednesday 13 December 2006 03:51 pm, Scott Long wrote: >> scottl 2006-12-13 20:51:51 UTC >> >> FreeBSD src repository >> >> Modified files: >> sys/dev/bge if_bge.c >> Log: >> Remove a redundant write of the firmware reset magic number. It >> ... > I am still getting firmware handshake timeouts and/or watchdog > timeouts. Most importantly it panics or get witness warnings (lots > of 'memory modified after free'). Panic goes like this (while > kldunload if_bge with dhclient enabled): > > brgphy0: detached > miibus0: detached > bge0: firmware handshake timed out, found 0x4b657654 > bge0: firmware handshake timed out, found 0x4b657654 I have seen these for debugging the redundant-write problem (not for detach but for bringing up the interface for the first time). My 5701 just hangs if there is any redundant write (2 where the first one was in bge_reset(), or 2 separate, or 2 where the second one was). My 5705 survives two separate sets of 256 repeated writes; however, then the firmware handshake times out; however2, everything works normally after ignoring the the timeout except for printing the message. I just noticed that this error wasn't ignored until recently -- I noticed the return statement being removed but not that it was in a critical area. I also tested waiting for the handshake immediately after the write in some cases (only for 2 separate writes on the 5701). This didn't help. I didn't check exactly where the hang occurred or if some of the handshakes completed successfully. Throughout this, bge_reset()s done before reaching single mode all completed successfully. There were 2 per boot. The first 2 seem to do just enough initialization to make the link flap. I just noticed that the code is much clearer and less surprising in old versions. In rev.1.84, there is only 1 write and it is immediately followed by the handshake loop. Now there is a lot of code in between. Bruce