usb: xhci-hcd: add a gratuitous doorbell read #6430
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This may assist in debugging #6141
The symptom is that the Interrupt endpoint for the dongle sometimes has one outstanding TRB, but the lack of USB bus activity suggests that the xHC didn't correctly register the TRB as valid when the doorbell ring happened.
Adding this dummy read seems to fix it.
--
There are probably less-bad ways to ensure consistency of memory before issuing a doorbell write, but this blunt instrument seems to work for me.
I can't tell if the root cause is the same as the gpio bitbash compression (RC swallowing writes), or some peculiarity of the xHC TRB fetch engine making this type of transfer vulnerable to stalling.