]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI/portdrv: Use is_pciehp instead of is_hotplug_bridge
authorLukas Wunner <lukas@wunner.de>
Sun, 13 Jul 2025 14:31:02 +0000 (16:31 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 29 Jul 2025 16:45:39 +0000 (11:45 -0500)
The PCIe port driver erroneously creates a subdevice for hotplug on ACPI
slots which are handled by the ACPI hotplug driver.

Avoid by checking the is_pciehp flag instead of is_hotplug_bridge when
deciding whether to create a subdevice.  The latter encompasses ACPI slots
whereas the former doesn't.

The superfluous subdevice has no real negative impact, it occupies memory
and interrupt resources but otherwise just sits there waiting for
interrupts from the slot that are never signaled.

Fixes: f8415222837b ("PCI: Use cached copy of PCI_EXP_SLTCAP_HPC bit")
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org # v4.7+
Link: https://patch.msgid.link/40d5a5fe8d40595d505949c620a067fa110ee85e.1752390102.git.lukas@wunner.de
drivers/pci/pcie/portdrv.c

index e8318fd5f6ed537a1b236a3a0f054161d5710abd..d1b68c18444f803f73df2c46a6ba85d1d0a0c391 100644 (file)
@@ -220,7 +220,7 @@ static int get_port_device_capability(struct pci_dev *dev)
        struct pci_host_bridge *host = pci_find_host_bridge(dev->bus);
        int services = 0;
 
-       if (dev->is_hotplug_bridge &&
+       if (dev->is_pciehp &&
            (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
             pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM) &&
            (pcie_ports_native || host->native_pcie_hotplug)) {