linux/arch/x86/pci
Konrad Rzeszutek Wilk 3d74a539ae pci/xen: When free-ing MSI-X/MSI irq->desc also use generic code.
This code path is only run when an MSI/MSI-X PCI device is passed
in to PV DomU.

In 2.6.37 time-frame we over-wrote the default cleanup handler for
MSI/MSI-X irq->desc to be "xen_teardown_msi_irqs". That function
calls the the xen-pcifront driver which can tell the backend to
cleanup/take back the MSI/MSI-X device.

However, we forgot to continue the process of free-ing the MSI/MSI-X
device resources (irq->desc) in the PV domU side. Which is what
the default cleanup handler: default_teardown_msi_irqs did.

Hence we would leak IRQ descriptors.

Without this patch, doing "rmmod igbvf;modprobe igbvf" multiple
times ends with abandoned IRQ descriptors:

 28:          5  xen-pirq-pcifront-msi-x
 29:          8  xen-pirq-pcifront-msi-x
...
130:         10  xen-pirq-pcifront-msi-x

with the end result of running out of IRQ descriptors.

Reviewed-by: Ian Campbell <Ian.Campbell@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
2011-02-18 12:41:53 -05:00
..
acpi.c x86/PCI: coalesce overlapping host bridge windows 2010-11-11 09:34:31 -08:00
amd_bus.c x86: Use PCI method for enabling AMD extended config space before MSR method 2011-01-11 12:43:41 +01:00
broadcom_bus.c x86/PCI: don't use native Broadcom CNB20LE driver when ACPI is available 2011-01-14 08:55:41 -08:00
bus_numa.c Merge branch 'x86-bootmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-03-03 08:15:05 -08:00
bus_numa.h Merge branch 'x86-bootmem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-03-03 08:15:05 -08:00
ce4100.c ce4100: Add PCI register emulation for CE4100 2010-11-12 00:45:41 +01:00
common.c PCI: enable pci=bfsort by default on future Dell systems 2011-01-14 08:55:41 -08:00
direct.c x86/PCI: Convert pci_config_lock to raw_spinlock 2010-05-11 12:01:09 -07:00
early.c x86/PCI: remove early PCI pr_debug statements 2009-11-24 15:25:19 -08:00
fixup.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-04-01 09:47:12 -07:00
i386.c x86: avoid low BIOS area when allocating address space 2010-12-17 10:01:17 -08:00
init.c x86, olpc: Use pci subarch init for OLPC 2010-02-25 19:26:23 -08:00
irq.c x86/PCI: irq and pci_ids patch for Intel Patsburg 2010-12-23 12:53:10 -08:00
legacy.c x86/PCI: pci, fix section mismatch 2010-07-30 09:29:09 -07:00
Makefile ce4100: Add PCI register emulation for CE4100 2010-11-12 00:45:41 +01:00
mmconfig_32.c x86/PCI: Convert pci_config_lock to raw_spinlock 2010-05-11 12:01:09 -07:00
mmconfig_64.c x86/PCI: MMCONFIG: add lookup function 2009-11-24 15:30:36 -08:00
mmconfig-shared.c x86/PCI: MMCONFIG: fix region end calculation 2010-10-17 20:03:07 -07:00
mrst.c x86, pci, mrst: Add extra sanity check in walking the PCI extended cap chain 2010-07-16 16:52:15 -07:00
numaq_32.c x86/PCI: Convert pci_config_lock to raw_spinlock 2010-05-11 12:01:09 -07:00
olpc.c PCI: OLPC: Only enable PCI configuration type override on XO-1 2010-10-15 13:09:51 -07:00
pcbios.c x86: Add NX protection for kernel data 2010-11-18 12:52:04 +01:00
visws.c x86: Move pci init function to x86_init 2010-02-19 16:12:29 -08:00
xen.c pci/xen: When free-ing MSI-X/MSI irq->desc also use generic code. 2011-02-18 12:41:53 -05:00