PCI: Mark ASM1164 SATA controller to avoid bus reset

User forums report issues when assigning ASM1164 SATA controllers to VMs,
especially in configurations with multiple controllers.  Logs show the
device fails to retrain after bus reset.  Reports suggest this is an issue
across multiple platforms.  The device indicates support for PM reset,
therefore the device still has a viable function level reset mechanism.
The reporting user confirms the device is well behaved in this use case
with bus reset disabled.

Reported-by: Patrick Bianchi <patrick.w.bianchi@gmail.com>
Link: https://forum.proxmox.com/threads/problems-with-pcie-passthrough-with-two-identical-devices.149003/
Signed-off-by: Alex Williamson <alex.williamson@nvidia.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20260109000211.398300-1-alex.williamson@nvidia.com
This commit is contained in:
Alex Williamson 2026-01-08 17:02:08 -07:00 committed by Bjorn Helgaas
parent 8f0b4cce44
commit beb2f81792

View File

@ -3791,6 +3791,16 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CAVIUM, 0xa100, quirk_no_bus_reset);
*/
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, 0xb005, quirk_no_bus_reset);
/*
* Reports from users making use of PCI device assignment with ASM1164
* controllers indicate an issue with bus reset where the device fails to
* retrain. The issue appears more common in configurations with multiple
* controllers. The device does indicate PM reset support (NoSoftRst-),
* therefore this still leaves a viable reset method.
* https://forum.proxmox.com/threads/problems-with-pcie-passthrough-with-two-identical-devices.149003/
*/
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ASMEDIA, 0x1164, quirk_no_bus_reset);
static void quirk_no_pm_reset(struct pci_dev *dev)
{
/*