Skip to content

USB: fix inefficient copy of unaligned buffers

Johan Hovold linux-tegra lkml 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest3 patches 5 repliesIn review
  2. v12 patches 2 repliesSuperseded

Changes in v2 from the cover letter

- Make sure to copy the full buffer for isochronous transfers, in which case the received data is not necessarily contiguous (thanks Alan).
- Drop stable tags as this is really just an optimisation.

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3USB: musb: fix inefficient copy of unaligned buffersdrivers/usb/musb/musb_host.c+7 -20 replies
2/3USB: ehci-tegra: fix inefficient copy of unaligned buffersdrivers/usb/host/ehci-tegra.c+9 -35 replies
3/3staging: octeon-usb: fix unaligned isochronous transfersdrivers/staging/octeon-usb/octeon-hcd.c+9 -30 replies

Reviews trailers per patch

1 of 3 patches has a Reviewed-by or Acked-by.

PatchAlan SternStephen Warren
1/3
2/3A-b T-b
3/3

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v2 thread

Cover letter [PATCH v2 0/3] USB: fix inefficient copy of unaligned buffers

These patches (for 4.1) make sure that only the received data is copied from the temporary buffers used for unaligned transfers.

I discovered this when debugging an issue where the Beaglebone Black would lock up on disconnect.

Turns out it was related to the transfer_buffers not being properly aligned, causing musb to use temporary buffers for the transfers. On transfer errors (e.g. during disconnect), the full buffer content was still being copied, something which would alter timings enough to prevent the disconnect from being detected and processed.

The first patch in the series works around the problem in that particular set up, but obviously does not solve the underlying issue, which needs to be analysed further.

I also included a corresponding patch for ehci-tegra that has been compile tested only.

Note that the octeon-hcd driver in staging, which also uses temporary buffers for unaligned transfers, was broken for isochronous transfers. The third patch fixes that, but is also untested due to lack of hardware.

Johan

v2:
- Make sure to copy the full buffer for isochronous transfers, in which case the received data is not necessarily contiguous (thanks Alan).
- Drop stable tags as this is really just an optimisation.

Johan Hovold (3):
USB: musb: fix inefficient copy of unaligned buffers
USB: ehci-tegra: fix inefficient copy of unaligned buffers
staging: octeon-usb: fix unaligned isochronous transfers

 drivers/staging/octeon-usb/octeon-hcd.c | 12 +++++++++---
 drivers/usb/host/ehci-tegra.c           | 12 +++++++++---
 drivers/usb/musb/musb_host.c            |  9 +++++++--
 3 files changed, 25 insertions(+), 8 deletions(-)
Signature · 1 line
2.0.5