From owner-freebsd-current@FreeBSD.ORG Mon Sep 28 14:28:25 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D779106566B; Mon, 28 Sep 2009 14:28:25 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 284138FC1A; Mon, 28 Sep 2009 14:28:23 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id RAA10037; Mon, 28 Sep 2009 17:28:22 +0300 (EEST) (envelope-from avg@freebsd.org) Message-ID: <4AC0C805.6070909@freebsd.org> Date: Mon, 28 Sep 2009 17:28:21 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.23 (X11/20090825) MIME-Version: 1.0 To: John Baldwin References: <4ABA36B1.9070706@icyb.net.ua> <200909280748.45528.john@baldwin.cx> <4AC0C060.20109@freebsd.org> <200909281010.50427.jhb@FreeBSD.org> In-Reply-To: <200909281010.50427.jhb@FreeBSD.org> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: freebsd-current@freebsd.org, freebsd-usb@freebsd.org, Hans Petter Selasky Subject: Re: sb600/sb700 ohci experimental patch 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: Mon, 28 Sep 2009 14:28:25 -0000 on 28/09/2009 17:10 John Baldwin said the following: > On Monday 28 September 2009 9:55:44 am Andriy Gapon wrote: >> on 28/09/2009 14:48 John Baldwin said the following: >>> I don't think you can do this because it is a "feature" to not disable SMM if >>> ohci(4) is not loaded so that a USB keyboard works when the USB driver isn't >>> loaded via PS/2 emulation, even when the OS is running. >> Very good point. >> >>> I am curious if we >>> really need to do the handover for each controller or if disabling it for >>> ohci0 effectively disables it for all controllers? What do other OS's do? >>> >> Don't have an answer about other OSes. >> But OHCI controllers have individual "used by SMM" bits and taking over one >> controller doesn't affect the bits of the other controllers - they remain set. >> Not that it means that SMM code actually keeps on controlling them. >> >> Actually, just checked - Linux also does it per controller: >> http://lxr.linux.no/#linux+v2.6.31/drivers/usb/host/ohci-hcd.c#L495 > > Hmm, it seems Linux now disables SMM for USB controllers (ohci, ehci, and uhci) > via PCI quirks rather than doing it in the device drivers themselves, which > matches your original suggestion. I'm not sure how best to fix that while also > allowing USB to work w/o drivers loaded. > I looked at the quirk code (for OHCI only) and they don't disable SMI - they do exactly the same takeover dance, only earlier: http://lxr.linux.no/#linux+v2.6.31/drivers/usb/host/pci-quirks.c#L169 I.e. this actually matches what Hans suggested before - first early takeover of all controllers, then probe/attach pass. Not sure how to implement this best in our architecture - also using quirks or perhaps something along the lines of multi-pass? :-) -- Andriy Gapon