]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 17 Feb 2016 18:26:42 +0000 (12:26 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Sat, 27 Feb 2016 14:52:20 +0000 (08:52 -0600)
commit83a3b4834908bf32864f964d3fddba80d54458d9
tree8ae158e261d35760cacf63fb1b400eabf0e4d80f
parent0e3bf832d9eb2be696b7a5e7ef0155dac1a16dab
Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"

2ea2e868c3ea ("PCI, x86: Implement pcibios_alloc_irq() and
pcibios_free_irq()") appeared in v4.3 and helps support IOAPIC hotplug.

Олег reported that the Elcus-1553 TA1-PCI driver worked in v4.2 but not
v4.3 and bisected it to 2ea2e868c3ea.  Sunjin reported that the RocketRAID
272x driver worked in v4.2 but not v4.3.  In both cases booting with
"pci=routirq" is a workaround.

I think the problem is that after 2ea2e868c3ea, we no longer call
pcibios_enable_irq() for upstream bridges.  Prior to 2ea2e868c3ea, when a
driver called pci_enable_device(), we recursively called
pcibios_enable_irq() for upstream bridges via pci_enable_bridge().

After 2ea2e868c3ea, we call pcibios_enable_irq() from pci_device_probe()
instead of the pci_enable_device() path, which does *not* call
pcibios_enable_irq() for upstream bridges.

Revert 2ea2e868c3ea to fix these driver regressions.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=111211
Fixes: 2ea2e868c3ea ("PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()")
Reported-and-tested-by: Олег Мороз <oleg.moroz@mcc.vniiem.ru>
Reported-by: Sunjin Yang <fan4326@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
CC: Jiang Liu <jiang.liu@linux.intel.com>
arch/x86/include/asm/pci_x86.h
arch/x86/pci/common.c
arch/x86/pci/intel_mid_pci.c
arch/x86/pci/irq.c
drivers/acpi/pci_irq.c