]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: Disable ACS SV for IDT 0x80b5 switch
authorManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Fri, 2 Jan 2026 15:34:49 +0000 (21:04 +0530)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 6 Feb 2026 22:54:12 +0000 (16:54 -0600)
commitb26d7fb4a53e671a95b282b4f3922e79dfb1470d
tree23707daf8c47617fb25ed9a620aa9e64e78bf65d
parent8f05a5f6745ccc9ff784736608c5a38edb09acc8
PCI: Disable ACS SV for IDT 0x80b5 switch

Some IDT switches incorrectly flag an ACS Source Validation error on
completions for config read requests before they have captured the bus
number from a previous config write, even though PCIe r7.0, sec 6.12.1.1,
says that completions are never affected by ACS Source Validation.

The previous workaround, aa667c6408d2 ("PCI: Workaround IDT switch ACS
Source Validation erratum"), temporarily disabled ACS SV during
enumeration. This was effective but didn't cover the time after switch
reset, when it may lose the captured bus number.

Avoid the issue by preventing use of ACS SV altogether for these switches
by calling pci_disable_broken_acs_cap() from pci_acs_init() and remove the
previous workaround in pci_bus_read_dev_vendor_id().

Removal of ACS SV for these switches means they no longer enforce
everything in REQ_ACS_FLAGS, so downstream devices are not isolated from
each other and the iommu_group may include more devices.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
[bhelgaas: commit log, retain specific erratum details]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Link: https://patch.msgid.link/20260102-pci_acs-v3-3-72280b94d288@oss.qualcomm.com
drivers/pci/pci.c
drivers/pci/pci.h
drivers/pci/probe.c
drivers/pci/quirks.c