aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/pci/common.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-03-28 09:36:09 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-28 16:59:37 -0400
commitbba6f6fc68e74d4572028646f61dd3505a68747e (patch)
treee593440b5944676af7ec6b85c14acbd9ac7b72c7 /arch/i386/pci/common.c
parent4dfc896e90359df04c80da5ab08ec31e87846c43 (diff)
[PATCH] MSI-X: fix resume crash
So I think the right solution is to simply make pci_enable_device just flip enable bits and move the rest of the work someplace else. However a thorough cleanup is a little extreme for this point in the release cycle, so I think a quick hack that makes the code not stomp the irq when msi irq's are enabled should be the first fix. Then we can later make the code not change the irqs at all. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/i386/pci/common.c')
-rw-r--r--arch/i386/pci/common.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c
index 948436665385..3f78d4d8ecf3 100644
--- a/arch/i386/pci/common.c
+++ b/arch/i386/pci/common.c
@@ -434,11 +434,13 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
434 if ((err = pcibios_enable_resources(dev, mask)) < 0) 434 if ((err = pcibios_enable_resources(dev, mask)) < 0)
435 return err; 435 return err;
436 436
437 return pcibios_enable_irq(dev); 437 if (!dev->msi_enabled)
438 return pcibios_enable_irq(dev);
439 return 0;
438} 440}
439 441
440void pcibios_disable_device (struct pci_dev *dev) 442void pcibios_disable_device (struct pci_dev *dev)
441{ 443{
442 if (pcibios_disable_irq) 444 if (!dev->msi_enabled && pcibios_disable_irq)
443 pcibios_disable_irq(dev); 445 pcibios_disable_irq(dev);
444} 446}