As coicidence would have it I finally found a recipe for triggering
the issue, and it ties into what you're talking about here.
It happens only if I make sure OHCI gets loaded first and then EHCI
right afterwards.
It seems that indeed it is important for EHCI to get loaded first,
and in-kernel this is ensured by the link ordering.
However, when both OHCI and EHCI are built as modules (or, similarly
I guess, OHCI is built-in and EHCI is modular) there appears to be
nothing in userspace which makes sure EHCI gets loaded first.
When this triggers, in OHCI's root_port_reset(), the port status
register reads 0x111 in that inner-loop and the value never changes.
It stays like this forever.
-