From owner-svn-src-head@FreeBSD.ORG Tue Jan 7 09:52:27 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1BD086E7; Tue, 7 Jan 2014 09:52:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 07D5C14BC; Tue, 7 Jan 2014 09:52:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s079qQqT038811; Tue, 7 Jan 2014 09:52:26 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s079qQ7n038810; Tue, 7 Jan 2014 09:52:26 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401070952.s079qQ7n038810@svn.freebsd.org> From: Hans Petter Selasky Date: Tue, 7 Jan 2014 09:52:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260388 - head/sys/dev/usb/controller X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 09:52:27 -0000 Author: hselasky Date: Tue Jan 7 09:52:26 2014 New Revision: 260388 URL: http://svnweb.freebsd.org/changeset/base/260388 Log: Check the XHCI event ring regardless of the XHCI status register value. The "Intel Lynx Point" XHCI controller found in the MBP2013 has been observed to not always set the event interrupt bit while there are events to consume in the event ring. MFC after: 1 week Tested by: Huang Wen Hui Modified: head/sys/dev/usb/controller/xhci.c Modified: head/sys/dev/usb/controller/xhci.c ============================================================================== --- head/sys/dev/usb/controller/xhci.c Tue Jan 7 01:51:48 2014 (r260387) +++ head/sys/dev/usb/controller/xhci.c Tue Jan 7 09:52:26 2014 (r260388) @@ -1582,8 +1582,6 @@ xhci_interrupt(struct xhci_softc *sc) USB_BUS_LOCK(&sc->sc_bus); status = XREAD4(sc, oper, XHCI_USBSTS); - if (status == 0) - goto done; /* acknowledge interrupts */ @@ -1591,10 +1589,8 @@ xhci_interrupt(struct xhci_softc *sc) DPRINTFN(16, "real interrupt (status=0x%08x)\n", status); - if (status & XHCI_STS_EINT) { - /* check for event(s) */ - xhci_interrupt_poll(sc); - } + /* check for event(s) */ + xhci_interrupt_poll(sc); if (status & (XHCI_STS_PCD | XHCI_STS_HCH | XHCI_STS_HSE | XHCI_STS_HCE)) { @@ -1618,7 +1614,6 @@ xhci_interrupt(struct xhci_softc *sc) __FUNCTION__); } } -done: USB_BUS_UNLOCK(&sc->sc_bus); }