xHCI: second request to EP0 of MSD never finishes
Posted: Wed Aug 31, 2022 1:54 pm
Hello,
I'm trying to get my xHCI driver (which works fine in QEMU aside from a single errata) to work on real hardware but I'm stuck configuring a USB2 storage device.
The first request (GET_DESCRIPTOR with DEVICE, STRING ...) always succeeds, but the second request (also GET_DESCRIPTOR) gets stuck at the setup TRB. When I pull out the device the controller sends a USB Transaction Error event, which points to the SETUP TRB of the second request.
The other built-in devices do seem to work properly, though one gives a Stall error when trying to read the device string (although reading the manufacturer string works, oddly). I have a hunch it is related but I can't figure out where to look.
My code is here.
I'm trying to get my xHCI driver (which works fine in QEMU aside from a single errata) to work on real hardware but I'm stuck configuring a USB2 storage device.
The first request (GET_DESCRIPTOR with DEVICE, STRING ...) always succeeds, but the second request (also GET_DESCRIPTOR) gets stuck at the setup TRB. When I pull out the device the controller sends a USB Transaction Error event, which points to the SETUP TRB of the second request.
The other built-in devices do seem to work properly, though one gives a Stall error when trying to read the device string (although reading the manufacturer string works, oddly). I have a hunch it is related but I can't figure out where to look.
My code is here.