From: Bharat Kumar Gogada <bharat.kumar.gogada@xxxxxxxxxx> Platforms may have dedicated IRQ lines for PCIe services like AER/PME etc., check for such IRQ lines. Check if platform has any dedicated IRQ lines for PCIe services. Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xxxxxxxxxx> Signed-off-by: Stefan Roese <sr@xxxxxxx> Tested-by: Stefan Roese <sr@xxxxxxx> Cc: Bjorn Helgaas <helgaas@xxxxxxxxxx> Cc: Pali Rohár <pali@xxxxxxxxxx> Cc: Michal Simek <michal.simek@xxxxxxxxxx> --- drivers/pci/pcie/portdrv_core.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c index bda630889f95..70dd45671ed8 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c @@ -358,6 +358,14 @@ int pcie_port_device_register(struct pci_dev *dev) } } + /* + * Some platforms have dedicated interrupt line from root complex to + * interrupt controller for PCIe services like AER/PME etc., check + * if platform registered with any such IRQ. + */ + if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) + pci_check_platform_service_irqs(dev, irqs, capabilities); + /* Allocate child services if any */ status = -ENODEV; nr_service = 0; -- 2.34.1