USB2+umass: root mount fails

Hans Petter Selasky hselasky at c2i.net
Mon Feb 16 23:53:45 PST 2009


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.

--HPS


More information about the freebsd-usb mailing list