Review usb header files, there are around 10 usb_*.h files needed in each .c file. This ok for the core files but it would be better if peripheral drivers only needed to include one or two headers to get the USB API.

If a usb driver sleeps in the detach routine it will block any further attach/detach on that bus and may also hold locks that block usbconfig. This is easy to reproduce by unplugging a serial adapter that is opened and has also been observed with umass sleeping on 'simfree'.

Make the ugen ioctls more backwards compatible

The mountroot wait code is still not complete. The usb probing will wait for the bus explore but once complete it will release the hold token before GEOM gets a chance to taste. (priority task)

The ugen devices no longer appear in the device tree yet generate attach messages, ugen needs to have a device entry