[Bugfix 0/2] Fix bugs caused by "use irqdomain to dynamically allocate IRQ for IOAPIC"

Jiang Liu
2014-08-05T03:39:51Z

Two issues have been reported against patch set "use irqdomain to
dynamically allocate IRQ for IOAPIC" at https://lkml.org/lkml/2014/6/9/44.

This first one causes failure of suspend/hibernation, please refer to
https://lkml.org/lkml/2014/7/28/822 for more information. And we have
worked out a patch to fix it (https://lkml.org/lkml/2014/7/30/725) and
Borislav has tested it. But with more testing and analysis, I found the
provided patch still has some issues:
1) It may cause regression to Xen
2) Flag dev->dev.power.is_prepared has already been cleared when
pcibios_enable_device() gets called, so it will cause IOAPIC pin
reference count leak.

So I reworked the patch to fix above issues. The first patch fixes issue
1 by moving check of dev->dev.power.is_prepared pcibios_enable_irq, so
it won't affect Xen. The second patch fixes the IOAPIC pin reference
count leakage issue. It also solves the issue we have discussed at
http://www.spinics.net/lists/linux-pci/msg32902.html

Regards!
Gerry

Jiang Liu (2):
x86, irq, PCI: Keep IRQ assignment for PCI devices during
suspend/hibernation
x86, irq: Keep balance of IOAPIC pin reference count

arch/x86/pci/intel_mid_pci.c | 9 ++++++++-
arch/x86/pci/irq.c | 8 +++++++-
drivers/acpi/pci_irq.c | 15 +++++++++++++--
include/linux/pci.h | 1 +
4 files changed, 29 insertions(+), 4 deletions(-)

--
1.7.10.4