Revert "iommu/amd: Prevent binding other PCI drivers to IOMMU PCI devices"
authorLukas Wunner <lukas@wunner.de>
Fri, 25 Apr 2025 09:24:21 +0000 (11:24 +0200)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Thu, 15 May 2025 13:40:46 +0000 (13:40 +0000)
Commit 991de2e59090 ("PCI, x86: Implement pcibios_alloc_irq() and
pcibios_free_irq()") changed IRQ handling on PCI driver probing.
It inadvertently broke resume from system sleep on AMD platforms:

  https://lore.kernel.org/r/20150926164651.GA3640@pd.tnic/

This was fixed by two independent commits:

8affb487d4a4 ("x86/PCI: Don't alloc pcibios-irq when MSI is enabled")
cbbc00be2ce3 ("iommu/amd: Prevent binding other PCI drivers to IOMMU PCI devices")

The breaking change and one of these two fixes were subsequently reverted:

fe25d078874f ("Revert "x86/PCI: Don't alloc pcibios-irq when MSI is enabled"")
6c777e8799a9 ("Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"")

This rendered the second fix unnecessary, so revert it as well.  It used
the match_driver flag in struct pci_dev, which is internal to the PCI core
and not supposed to be touched by arbitrary drivers.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Acked-by: Joerg Roedel <jroedel@suse.de>
Link: https://patch.msgid.link/9a3ddff5cc49512044f963ba0904347bd404094d.1745572340.git.lukas@wunner.de
drivers/iommu/amd/init.c

index dd9e26b7b71848dd5449316df1eb2ee31eecb67f..33b6e12c7d246ed15e7ef6ece894ba5f4b308760 100644 (file)
@@ -2030,9 +2030,6 @@ static int __init iommu_init_pci(struct amd_iommu *iommu)
        if (!iommu->dev)
                return -ENODEV;
 
-       /* Prevent binding other PCI device drivers to IOMMU devices */
-       iommu->dev->match_driver = false;
-
        /* ACPI _PRT won't have an IRQ for IOMMU */
        iommu->dev->irq_managed = 1;