
On 3/9/21 10:32 AM, Ye Li wrote:
Hi Marek,
Hi,
[...]
+ 10 * 1000); /* 10ms timeout */ + if (ret < 0) + printf("EHCI fail timeout STS_IAA set\n");
Shouldn't there be some abort ^ if ret < 0 ? Also, add the return value into the printf, it is useful for debugging.
I don't think need to abort anything when ret < 0. The ret value is very simple in handshake, when ret < 0, it must be -1. Actually the codes refer the ehci_enable_async for the usage of handshake.
If the handshake timed out, that indicates a problem and that problem shouldn't be ignored, but rather propagated, no ? Maybe the entire ehci transfer should be aborted ?
I supposed the problem means QH does not advance, so next submit of async transfer will have QTD timeout. But it is ok to abort transfer as the error handling.
If this is an error which would always cause subsequent error, abort here already.
+ ehci_writel(&ctrl->hcor->or_usbsts, STS_IAA);
+ return ret; +}
Is this a bugfix for this release or is this for next release ? We're in rc3 already, so I would suggest to be careful.
It is ok to add the fix for next release. From our tests, the issue is not very easy to reproduce by just using usb read/write. In SCT, generally we need to run about 1 hour to see the issue.
Can you add details on how to reproduce the issue into the commit message ? That would be highly helpful.
ok. I will add more.
Thank you