From owner-cvs-src@FreeBSD.ORG Sat Mar 26 16:44:09 2005 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CD4F616A4CE; Sat, 26 Mar 2005 16:44:09 +0000 (GMT) Received: from salmon.maths.tcd.ie (salmon.maths.tcd.ie [134.226.81.11]) by mx1.FreeBSD.org (Postfix) with SMTP id 721A143D2D; Sat, 26 Mar 2005 16:44:08 +0000 (GMT) (envelope-from iedowse@maths.tcd.ie) Received: from walton.maths.tcd.ie by salmon.maths.tcd.ie with SMTP id ; 26 Mar 2005 16:44:07 +0000 (GMT) To: Maxim Sobolev In-Reply-To: Your message of "Sat, 26 Mar 2005 17:01:07 +0100." <20050326160107.GA92727@www.portaone.com> Date: Sat, 26 Mar 2005 16:44:07 +0000 From: Ian Dowse Message-ID: <200503261644.aa61215@salmon.maths.tcd.ie> cc: cvs-src@FreeBSD.ORG cc: src-committers@FreeBSD.ORG cc: cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/sys/dev/usb usb.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 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: Sat, 26 Mar 2005 16:44:09 -0000 In message <20050326160107.GA92727@www.portaone.com>, Maxim Sobolev writes: >Please note that when I take ehci out of kernel those devices are >attached before root fs is mounted. If it can help I can send you >dmesg without ehci. Ah, for directly connected low/full speed devices I guess we need to do the ehci explore in order to hand the port over to the companion controller. Below is a possible solution to this. Alternatively even just changing the usb_coldexplist TAILQ_INSERT_TAIL to a TAILQ_INSERT_HEAD would probably do the trick. Let me know if this helps. Thanks, Ian Index: usb.c =================================================================== RCS file: /dump/FreeBSD-CVS/src/sys/dev/usb/usb.c,v retrieving revision 1.105 diff -u -r1.105 usb.c --- usb.c 19 Mar 2005 19:27:38 -0000 1.105 +++ usb.c 26 Mar 2005 16:33:37 -0000 @@ -301,8 +301,14 @@ * the keyboard will not work until after cold boot. */ #if defined(__FreeBSD__) - if (cold) - TAILQ_INSERT_TAIL(&usb_coldexplist, sc, sc_coldexplist); + if (cold) { + /* Explore high-speed busses now, but defer others. */ + if (speed == USB_SPEED_HIGH) + dev->hub->explore(sc->sc_bus->root_hub); + else + TAILQ_INSERT_TAIL(&usb_coldexplist, sc, + sc_coldexplist); + } #else if (cold && (sc->sc_dev.dv_cfdata->cf_flags & 1)) dev->hub->explore(sc->sc_bus->root_hub); @@ -952,7 +958,7 @@ sc->sc_port.device = NULL; } -/* Explore all USB busses at the end of device configuration. */ +/* Explore USB busses at the end of device configuration. */ Static void usb_cold_explore(void *arg) {