On Fri, Mar 16, 2012 at 03:37:37PM -0600, Dave Frodin wrote:
Kevin, I mentioned in a response to the "Re: [SeaBIOS] usb-msc.c: TEST_UNIT_READY needs USB_DIR_OUT?" email thread that when I applied the patches related to that thread the Ubuntu booting issue that I see in this thread actually increases the passing rate from ~0% to ~50%.
That's odd.
Perhaps setting the DIR bit twice will solve my problem :)
I also was wondering if you could point me to the code that you referred to when you wrote ... "I did see what appears to be a race with USB "interrupt" pipe reading" ?
In ohci_control() the function exits when the pipe->ed indicates the transfer is complete. However, the controller can write to the tds[] structs after the pipe->ed is updated. Therefore there could be a race between the controller and driver. Similarly, ohci_poll_intr() has the same issue. This is just in the OHCI code - I don't know of any issues in the UHCI/EHCI code.
I tried to fix this when I was working on the USB patch series I recently posted. However, the stuff I tried made the OHCI controller less stable on my e350m1 machine.
-Kevin