mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
usb: dwc3: gadget: stop processing on HWO set
stop consuming TRBs when we reach one with HWO bit already set. This will prevent us from prematurely retiring a TRB. Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
79d17482a4
commit
a0ad85ae86
@ -1979,16 +1979,7 @@ static int __dwc3_cleanup_done_trbs(struct dwc3 *dwc, struct dwc3_ep *dep,
|
|||||||
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
|
||||||
|
|
||||||
if ((trb->ctrl & DWC3_TRB_CTRL_HWO) && status != -ESHUTDOWN)
|
if ((trb->ctrl & DWC3_TRB_CTRL_HWO) && status != -ESHUTDOWN)
|
||||||
/*
|
return 1;
|
||||||
* We continue despite the error. There is not much we
|
|
||||||
* can do. If we don't clean it up we loop forever. If
|
|
||||||
* we skip the TRB then it gets overwritten after a
|
|
||||||
* while since we use them in a ring buffer. A BUG()
|
|
||||||
* would help. Lets hope that if this occurs, someone
|
|
||||||
* fixes the root cause instead of looking away :)
|
|
||||||
*/
|
|
||||||
dev_err(dwc->dev, "%s's TRB (%p) still owned by HW\n",
|
|
||||||
dep->name, trb);
|
|
||||||
|
|
||||||
count = trb->size & DWC3_TRB_SIZE_MASK;
|
count = trb->size & DWC3_TRB_SIZE_MASK;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user