On Wed, Dec 10, 2014 at 09:44:06PM -0800, Julius Werner wrote:
This is a complicated case most firmware USB stacks don't support (I don't have experience with SeaBIOS, but I know that both U-Boot and libpayload won't work with that either). A USB 3.0 hub is essentially two completely separate logical hubs connecting to two completely separate logical ports on the host. The USB 3.0 part of the hub uses a slightly different protocol (e.g. some bits in the port status have different meanings) and from a quick glance the SeaBIOS code doesn't seem to take that into account. I'm not sure where exactly it would break, but one possibility is the speed detection (in USB 2.0 the port status bits 9 and 10 indicate the speed, but in USB 3.0 it's implied to always be SuperSpeed and those two bits indicate the link state and the port power status instead). The speed is written in the XHCI Slot Context for the device and using the wrong value there might cause problems.
Right, SeaBIOS does not currently have USB3 hub specific code. The USB3 spec has close to 100 pages on hubs, but much of it resembles the USB2 hub details and it's not immiediately clear which parts differ.
BTW, please CC the seabios mailing list on emails.
-Kevin