linux/drivers/usb/host
Xincheng Zhang 1fc50f1ecd usb: xhci-pci: Limit VIA VL805 DMA addressing to 36 bits
The VIA VL805/806 xHCI controller advertises AC64, but fails to handle
DMA addresses at or above 0x1000000000. On systems with large amounts of
RAM, this can cause USB device failures when the controller is given DMA
addresses beyond its usable address width.

Do not use XHCI_NO_64BIT_SUPPORT for this controller. That quirk clears
the cached AC64 capability and limits DMA to 32 bits, causing unnecessary
bouncing for addresses between 4GiB and 64GiB and hiding the controller's
real AC64 capability from code that may need to distinguish register
access width from usable DMA address width.

Track the usable DMA address width separately from the AC64 capability.
Initialize the generic xhci->dma_mask_bits field to 64 and let PCI quirks
reduce it for controllers with narrower DMA support. Set VIA VL805/806 to
36 bits so the DMA API only hands it addresses in the range it can handle
while keeping HCCPARAMS1.AC64 visible.

Cc: stable <stable@kernel.org>
Signed-off-by: Xincheng Zhang <zhangxincheng@ultrarisc.com>
Link: https://patch.msgid.link/20260630-xhci-via-dma-fix-v3-1-690dcb8cf75a@ultrarisc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-07-13 07:10:11 +02:00
..
bcma-hcd.c
ehci-atmel.c
ehci-brcm.c usb: ehci-brcm: fix sleep during atomic 2026-03-30 17:04:13 +02:00
ehci-dbg.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ehci-exynos.c
ehci-fsl.c usb: ehci-fsl: Fix use of private data to avoid -Wflex-array-member-not-at-end warning 2025-04-11 16:08:33 +02:00
ehci-fsl.h
ehci-grlib.c
ehci-hcd.c USB: HCD: remove logic about which hcd is loaded 2026-01-14 15:59:00 +01:00
ehci-hub.c
ehci-mem.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
ehci-mv.c
ehci-npcm7xx.c
ehci-omap.c
ehci-orion.c usb: ehci-orion: remove optional PHY handling code remnants 2026-03-11 14:59:42 +01:00
ehci-pci.c PCI: Add ASPEED vendor ID to pci_ids.h 2026-01-09 14:21:16 -06:00
ehci-platform.c usb: host: ehci-platform: Call reset assert/deassert on suspend/resume 2025-11-21 15:11:22 +01:00
ehci-ppc-of.c
ehci-ps3.c
ehci-q.c
ehci-sched.c usb: free iso schedules on failed submit 2026-07-08 13:30:38 +02:00
ehci-sh.c
ehci-spear.c
ehci-st.c
ehci-sysfs.c usb: ehci: replace scnprintf() with sysfs_emit() 2025-06-24 15:40:19 +01:00
ehci-timer.c
ehci-xilinx-of.c
ehci.h
fhci-dbg.c
fhci-hcd.c usb: fhci: use kzalloc_flex for priv struct 2026-03-18 16:00:34 +01:00
fhci-hub.c
fhci-mem.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
fhci-q.c
fhci-sched.c
fhci-tds.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
fhci.h usb: fhci: use kzalloc_flex for priv struct 2026-03-18 16:00:34 +01:00
fsl-mph-dr-of.c usb: fsl-mph-dr-of: Remove unnecessary NULL check before clk_disable_unprepare() 2025-06-19 12:27:29 +02:00
isp116x-hcd.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
isp116x.h
Kconfig usb: host: add ARCH_AIROHA in XHCI MTK dependency 2026-05-22 11:35:47 +02:00
Makefile usb: xhci-pci: add AMD Promontory 21 PCI glue 2026-05-21 16:48:40 +02:00
max3421-hcd.c usb: host: max3421: Reject hub port requests for non-existent ports 2026-05-22 11:35:18 +02:00
octeon-hcd.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
octeon-hcd.h
ohci-at91.c usb: ohci-at91: Use dynamic device name for OHCI HCD creation 2025-06-19 12:27:33 +02:00
ohci-da8xx.c usb: ohci-da8xx: remove unused platform data 2025-11-21 15:13:56 +01:00
ohci-dbg.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
ohci-exynos.c
ohci-hcd.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
ohci-hub.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ohci-mem.c
ohci-nxp.c usb: ohci-nxp: clean up probe error labels 2025-12-23 15:48:46 +01:00
ohci-omap.c
ohci-pci.c USB: OHCI: Add quirk for LS7A OHCI controller (rev 0x02) 2025-04-11 16:21:20 +02:00
ohci-platform.c USB: OHCI/UHCI: Add soft dependencies on ehci_platform 2026-01-14 16:02:14 +01:00
ohci-ppc-of.c
ohci-ps3.c
ohci-pxa27x.c
ohci-q.c
ohci-s3c2410.c usb: ohci: s3c2410: Drop support for S3C2410 systems 2025-09-06 15:22:51 +02:00
ohci-sa1111.c
ohci-sm501.c
ohci-spear.c usb: ohci-spear: Remove unnecessary NULL check before clk_disable_unprepare() 2025-06-19 12:27:26 +02:00
ohci-st.c
ohci.h
oxu210hp-hcd.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
pci-quirks.c
pci-quirks.h
r8a66597-hcd.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
r8a66597.h
sl811_cs.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
sl811-hcd.c usb: sl811-hcd: disable controller wakeup on remove 2026-07-08 13:34:51 +02:00
sl811.h
ssb-hcd.c
uhci-debug.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
uhci-grlib.c
uhci-hcd.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
uhci-hcd.h usb: uhci: Add reset control support 2025-10-13 09:11:49 +02:00
uhci-hub.c
uhci-pci.c
uhci-platform.c USB: OHCI/UHCI: Add soft dependencies on ehci_platform 2026-01-14 16:02:14 +01:00
uhci-q.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
xen-hcd.c xen/usb: Constify struct hc_driver 2025-10-28 15:35:15 +01:00
xhci-caps.h usb: xhci: Add debugfs support for xHCI Port Link Info (PORTLI) register. 2025-11-21 14:53:01 +01:00
xhci-dbg.c
xhci-dbgcap.c xhci: dbc: support runtime suspend while DbC is in enabled state 2026-06-25 15:10:08 +01:00
xhci-dbgcap.h xhci: dbc: support runtime suspend while DbC is in enabled state 2026-06-25 15:10:08 +01:00
xhci-dbgtty.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
xhci-debugfs.c usb: xhci: Fix debugfs bandwidth reporting 2026-04-02 15:55:36 +02:00
xhci-debugfs.h
xhci-ext-caps.c
xhci-ext-caps.h
xhci-histb.c
xhci-hub.c usb: xhci: fix typo in xhci_set_port_power() comment 2026-06-03 19:23:28 +02:00
xhci-mem.c usb: xhci: allocate internal DCBAA mirror dynamically 2026-06-03 19:23:30 +02:00
xhci-mtk-sch.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
xhci-mtk.c usb: xhci-mtk: Use FIELD_MODIFY() 2026-05-21 16:43:04 +02:00
xhci-mtk.h usb: xhci-mtk: correct most kernel-doc problems in xhci-mtk.h 2025-11-21 14:52:37 +01:00
xhci-mvebu.c drivers/usb/host: Fix spelling error 'seperate' -> 'separate' 2026-04-11 12:02:11 +02:00
xhci-mvebu.h
xhci-pci-prom21.c usb: xhci-pci: add AMD Promontory 21 PCI glue 2026-05-21 16:48:40 +02:00
xhci-pci-renesas.c usb: renesas-xhci: Fix External ROM access timeouts 2025-08-13 17:15:59 +02:00
xhci-pci.c usb: xhci-pci: Limit VIA VL805 DMA addressing to 36 bits 2026-07-13 07:10:11 +02:00
xhci-pci.h usb: xhci-pci: add AMD Promontory 21 PCI glue 2026-05-21 16:48:40 +02:00
xhci-plat.c usb: host: xhci-plat: Add .post_resume_quirk for struct xhci_plat_priv 2025-09-17 12:43:17 +02:00
xhci-plat.h usb: host: xhci-plat: Add .post_resume_quirk for struct xhci_plat_priv 2025-09-17 12:43:17 +02:00
xhci-port.h usb: xhci: Add debugfs support for xHCI Port Link Info (PORTLI) register. 2025-11-21 14:53:01 +01:00
xhci-rcar-regs.h usb: host: xhci-rcar: Move R-Car reg definitions 2025-09-17 12:43:16 +02:00
xhci-rcar.c usb: host: xhci-rcar: Split R-Car Gen2 and Gen3 .plat_start() handling 2026-06-03 19:23:37 +02:00
xhci-ring.c usb: xhci: allocate DCBAA based on host controller max slots 2026-06-03 19:23:30 +02:00
xhci-rzg3e-regs.h usb: host: xhci-rcar: Add Renesas RZ/G3E USB3 Host driver support 2025-09-17 12:43:18 +02:00
xhci-rzv2m.c
xhci-rzv2m.h
xhci-sideband.c xhci: sideband: fix ring sg table pages leak 2026-07-08 13:38:24 +02:00
xhci-tegra.c soc: drivers for 7.2 2026-06-17 11:21:40 -07:00
xhci-trace.c
xhci-trace.h usb: xhci: standardize single bit-field macros 2025-11-21 14:53:01 +01:00
xhci.c usb: xhci-pci: Limit VIA VL805 DMA addressing to 36 bits 2026-07-13 07:10:11 +02:00
xhci.h usb: xhci-pci: Limit VIA VL805 DMA addressing to 36 bits 2026-07-13 07:10:11 +02:00