aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/pci_endpoint_test.c
diff options
context:
space:
mode:
authorNiklas Cassel <[email protected]>2025-03-10 09:48:28 +0000
committerKrzysztof Wilczyński <[email protected]>2025-03-14 16:13:19 +0000
commit1f5a69f1b3132054d8d82b8d7546d0af6a2ed4f6 (patch)
treef807916290f266d67916c2ffba4609628f53e1e0 /drivers/misc/pci_endpoint_test.c
parentPCI: dwc: ep: Add dw_pcie_ep_hide_ext_capability() (diff)
downloadkernel-1f5a69f1b3132054d8d82b8d7546d0af6a2ed4f6.tar.gz
kernel-1f5a69f1b3132054d8d82b8d7546d0af6a2ed4f6.zip
PCI: dw-rockchip: Hide broken ATS capability for RK3588 running in EP mode
When running the RK3588 in Endpoint mode, with an Intel host with IOMMU enabled, the host side prints: DMAR: VT-d detected Invalidation Time-out Error: SID 0 When running the RK3588 in Endpoint mode, with an AMD host with IOMMU enabled, the host side prints: iommu ivhd0: AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=63:00.0 address=0x42b5b01a0] Rockchip has confirmed that the ATS support for RK3588 only works when running the PCIe controller in Root Complex (RC) mode, see: https://lore.kernel.org/linux-pci/[email protected] Usually, to handle these issues, we add a quirk for the PCI vendor and device ID in drivers/pci/quirks.c with quirk_no_ats(). That is because we cannot usually modify the capabilities on the EP side. In this case, we can modify the capabilities on the EP side. Thus, hide the broken ATS capability on RK3588 when running in EP mode. That way, we don't need any quirk on the host side, and we see no errors on the host side, and we can run pci_endpoint_test successfully, with the IOMMU enabled on the host side. Acked-by: Shawn Lin <[email protected]> Signed-off-by: Niklas Cassel <[email protected]> [kwilczynski: commit log, tidy up code comments and error message] Signed-off-by: Krzysztof Wilczyński <[email protected]> Reviewed-by: Manivannan Sadhasivam <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'drivers/misc/pci_endpoint_test.c')
0 files changed, 0 insertions, 0 deletions