USB2+umass: root mount fails

M. Warner Losh imp at bsdimp.com
Tue Feb 17 07:55:21 PST 2009


In message: <200902170856.11631.hselasky at c2i.net>
            Hans Petter Selasky <hselasky at c2i.net> writes:
: On Tuesday 17 February 2009, Marcel Moolenaar wrote:
: > On Feb 16, 2009, at 6:03 PM, M. Warner Losh wrote:
: > > : root_mount_hold() and root_mount_rel() are specifically
: > > : designed to inform the mountroot code that it needs to
: > > : wait (or that it should go ahead and mount root).
: > >
: > > But it looks like the old usb code didn't call it either...  I think
: > > old code enumerated right away during boot, while the new code defers
: > > the enumeration until events can be processed...
: >
: > Yes, you're right. USB1 used the following:
: >
: > SYSINIT(usb_cold_explore, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE,
: >      usb_cold_explore, NULL);
: >
: > SI_SUB_CONFIGURE didn't complete before all USB busses
: > were enumerated.
: 
: I would really prefer that first time USB enumeration is not synchronous. This 
: has to do with startup timing. It simply wastes a lot of time to wait for all 
: the busses to be probed in serial. Sure it works nice with a USB keyboard and 
: a USB mouse, but when you have a couple of USB HUBs and +8 devices connected, 
: it simply speeds up the boot time so that you reach the root prompt by the 
: time you would else have done the mount root mfs.
: 
: If the mountroot code cannot find the disk, it should sleep and loop.

I think this is a weak argument.  I'm strongly in favor of the usb1
behavior here.

Warner


More information about the freebsd-usb mailing list