Just debugged the following:
ehci_setup() happens. Starts a thread to probe its ports... ohci_setup() happens. Starts a thread to probe its ports... OHCI probes port zero, decides there's nothing there. EHCI probes port zero, decides there's a USB1 device there and gives it away to OHCI... which is never going to see it.
What's wrong here? I've "fixed" it with a wait_threads() right before the ohci_setup() in usb.c and now I can see my keyboard, but that's definitely not the right answer.
Do we have any kind of hotplug support for USB devices? If not, should we at least have a kind of "manual" hotplug notification for when EHCI actively gives a port away to the USB1 controller?
(How) is this supposed to work?