summaryrefslogtreecommitdiffstats
path: root/drivers/remoteproc/rcar_rproc.c
diff options
context:
space:
mode:
authorMathias Nyman <mathias.nyman@linux.intel.com>2024-09-05 16:32:49 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-09-05 16:39:21 +0200
commit9044ad57b60b0556d42b6f8aa218a68865e810a4 (patch)
treed35485a7390e501d2b5d26ab81e7e7f408933ff6 /drivers/remoteproc/rcar_rproc.c
parentusb: gadget: dummy_hcd: execute hrtimer callback in softirq context (diff)
downloadlinux-9044ad57b60b0556d42b6f8aa218a68865e810a4.tar.xz
linux-9044ad57b60b0556d42b6f8aa218a68865e810a4.zip
xhci: dbc: Fix STALL transfer event handling
Don't flush all pending DbC data requests when an endpoint halts. An endpoint may halt and xHC DbC triggers a STALL error event if there's an issue with a bulk data transfer. The transfer should restart once xHC DbC receives a ClearFeature(ENDPOINT_HALT) request from the host. Once xHC DbC restarts it will start from the TRB pointed to by dequeue field in the endpoint context, which might be the same TRB we got the STALL event for. Turn the TRB to a no-op in this case to make sure xHC DbC doesn't reuse and tries to retransmit this same TRB after we already handled it, and gave its corresponding data request back. Other STALL events might be completely bogus. Lukasz Bartosik discovered that xHC DbC might issue spurious STALL events if hosts sends a ClearFeature(ENDPOINT_HALT) request to non-halted endpoints even without any active bulk transfers. Assume STALL event is spurious if it reports 0 bytes transferred, and the endpoint stopped on the STALLED TRB. Don't give back the data request corresponding to the TRB in this case. The halted status is per endpoint. Track it with a per endpoint flag instead of the driver invented DbC wide DS_STALLED state. DbC remains in DbC-Configured state even if endpoints halt. There is no Stalled state in the DbC Port state Machine (xhci section 7.6.6) Reported-by: Łukasz Bartosik <ukaszb@chromium.org> Closes: https://lore.kernel.org/linux-usb/20240725074857.623299-1-ukaszb@chromium.org/ Tested-by: Łukasz Bartosik <ukaszb@chromium.org> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://lore.kernel.org/r/20240905143300.1959279-2-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/remoteproc/rcar_rproc.c')
0 files changed, 0 insertions, 0 deletions