linux/drivers/usb
Michal Pecio c401b1b4b8 usb: xhci: Enable the TRB overfetch quirk on VIA VL805
commit c133ec0e57 upstream.

Raspberry Pi is a major user of those chips and they discovered a bug -
when the end of a transfer ring segment is reached, up to four TRBs can
be prefetched from the next page even if the segment ends with link TRB
and on page boundary (the chip claims to support standard 4KB pages).

It also appears that if the prefetched TRBs belong to a different ring
whose doorbell is later rung, they may be used without refreshing from
system RAM and the endpoint will stay idle if their cycle bit is stale.

Other users complain about IOMMU faults on x86 systems, unsurprisingly.

Deal with it by using existing quirk which allocates a dummy page after
each transfer ring segment. This was seen to resolve both problems. RPi
came up with a more efficient solution, shortening each segment by four
TRBs, but it complicated the driver and they ditched it for this quirk.

Also rename the quirk and add VL805 device ID macro.

Signed-off-by: Michal Pecio <michal.pecio@gmail.com>
Link: https://github.com/raspberrypi/linux/issues/4685
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=215906
CC: stable@vger.kernel.org
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20250225095927.2512358-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-03-13 12:58:35 +01:00
..
atm usb: atm: cxacru: fix a flaw in existing endpoint checks 2025-03-13 12:58:34 +01:00
c67x00 usb: c67x00-drv: Convert to platform remove callback returning void 2023-05-28 12:36:14 +01:00
cdns3 usb: cdns3: Add quirk flag to enable suspend residency 2024-12-27 13:58:43 +01:00
chipidea usb: chipidea: ci_hdrc_imx: decrement device's refcount in .remove() and in the error path of .probe() 2025-01-17 13:36:22 +01:00
class usb: cdc-acm: Fix handling of oversized fragments 2025-02-21 13:57:15 +01:00
common usb: ulpi: Fix debugfs directory leak 2024-02-23 09:24:56 +01:00
core usb: quirks: Add DELAY_INIT and NO_LPM for Prolific Mass Storage Card Reader 2025-03-13 12:58:33 +01:00
dwc2 usb: dwc2: gadget: remove of_node reference upon udc_stop 2025-02-21 13:57:14 +01:00
dwc3 usb: dwc3: gadget: Prevent irq storm when TH re-executes 2025-03-13 12:58:34 +01:00
early usb: early: xhci-dbc: Use memcpy_and_pad() 2023-01-31 10:40:54 +01:00
fotg210 usb: fotg210: Add missing kernel doc description 2024-06-12 11:12:31 +02:00
gadget usb: gadget: Check bmAttributes only if configuration is valid 2025-03-13 12:58:35 +01:00
host usb: xhci: Enable the TRB overfetch quirk on VIA VL805 2025-03-13 12:58:35 +01:00
image scsi: usb: uas: Declare two host templates and host template pointers const 2023-03-24 19:20:00 -04:00
isp1760 usb: isp1760: Convert to platform remove callback returning void 2023-05-28 12:38:01 +01:00
misc of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
mon usb: mon: Fix atomicity violation in mon_bin_vma_fault 2024-01-25 15:35:43 -08:00
mtu3 usb: Explicitly include correct DT includes 2023-07-25 18:20:02 +02:00
musb usb: musb: Fix hardware lockup on first Rx endpoint request 2024-12-09 10:32:53 +01:00
phy usb: phy: Fix API devm_usb_put_phy() can not release the phy 2024-11-08 16:28:22 +01:00
renesas_usbhs usb: renesas_usbhs: Flush the notify_hotplug_work 2025-03-13 12:58:34 +01:00
roles usb: roles: set switch registered flag early on 2025-02-21 13:57:14 +01:00
serial USB: serial: option: drop MeiG Smart defines 2025-02-21 13:57:16 +01:00
storage usb-storage: Add max sectors quirk for Nokia 208 2025-01-17 13:36:20 +01:00
typec usb: typec: tcpci_rt1711h: Unmask alert interrupts to fix functionality 2025-03-13 12:58:34 +01:00
usbip usbip: Don't submit special requests twice 2024-09-08 07:54:44 +02:00
Kconfig usb: move config USB_USS720 to usb's misc Kconfig 2023-03-29 10:34:08 +02:00
Makefile USB: xen-hcd: Traverse host/ when CONFIG_USB_XEN_HCD is selected 2024-06-21 14:38:23 +02:00
usb-skeleton.c usb: add usb_set_intfdata() documentation 2022-11-29 08:56:09 +01:00