From owner-freebsd-current@FreeBSD.ORG Sun Aug 12 01:33:35 2007 Return-Path: Delivered-To: current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D68F716A41A for ; Sun, 12 Aug 2007 01:33:35 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org (adsl-75-1-14-242.dsl.scrm01.sbcglobal.net [75.1.14.242]) by mx1.freebsd.org (Postfix) with ESMTP id B8CCF13C465 for ; Sun, 12 Aug 2007 01:33:35 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.13.3/8.13.3) with ESMTP id l7C1XL54060302; Sat, 11 Aug 2007 18:33:25 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Message-Id: <200708120133.l7C1XL54060302@gw.catspoiler.org> Date: Sat, 11 Aug 2007 18:33:21 -0700 (PDT) From: Don Lewis To: bruce@cran.org.uk In-Reply-To: <20070812004103.GA20935@muon.bluestop.org> MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii Cc: current@FreeBSD.org Subject: Re: RE: Reboot on "shutdown -r" hangs after final "uptime ..." string X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Aug 2007 01:33:35 -0000 On 12 Aug, bruce@cran.org.uk wrote: > On Sun, Aug 12, 2007 at 01:22:51AM +0100, bruce@cran.org.uk wrote: >> By putting more printfs I see that it gets to the line "eec = >> pci_read_config" in ehci_pci_givecontroller and then appears to stop - >> I've got a printf at the end of ehci_pci_givecontroller that never gets >> displayed, and the printf at the top of the for loop only gets displayed >> once. >> > > After adding one more printf I see that it actually stops at the > pci_write_config line, not the pci_read_config. I wonder if the register write is triggering an SMI, which is sending the CPU off into the weeds. Take a look at sections 2.1.7 and 2.1.8 of the EHCI spec . You might want to print the values of eec and pci_read_config(self, eecp+4, 4) immediately before the call to pci_write_config(). Bit 13 of the latter will be the most interesting. Something that you might want to also print is the value of EOREAD4(sc, EHCI_USBSTS) immediately before the EOWRITE4(sc, EHCI_USBCMD, EHCI_CMD_HCRESET); call in ehci_hcreset(). Bit 12 of this register (EHCI_STS_HCH) should be a zero before the write to do the reset is performed. Maybe ehci_hcreset() needs to wait for that to happen (as is done in ehci_init()), rather than just waiting a fixed amount of time. I don't know much about SMI, but if the CPU is getting stuck in the SMI handler, then that might indicate that the problem is a BIOS bug.