Date: Mon, 28 Sep 2009 17:28:21 +0300 From: Andriy Gapon <avg@freebsd.org> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-current@freebsd.org, freebsd-usb@freebsd.org Subject: Re: sb600/sb700 ohci experimental patch Message-ID: <4AC0C805.6070909@freebsd.org> In-Reply-To: <200909281010.50427.jhb@FreeBSD.org> References: <4ABA36B1.9070706@icyb.net.ua> <200909280748.45528.john@baldwin.cx> <4AC0C060.20109@freebsd.org> <200909281010.50427.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AC0C805.6070909>