When developing the OHCI stack, I stumbled over two things in the libpayload USB stack which I didn't want to leave unmentioned.
1. The MSC driver issues BULK messages to its devices with 0 bytes in length. That is, in fact, a vliad operation according to the USB standard, but mass storage devices dodn't like that and time out on such a request. The UHCI stack bails out in this case and returns success, and so does the OHCI stack currently. However, this is a hack. The real fix would be to not let the MSC driver issue these empty packets.
2. Calling usb_detach_device() makes Coreboot crash.I don't see how the OHCI stack could possibly cause that, so I blame the generic USB stack for that :)
Daniel