aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/cris/arch-v32/drivers/pci/bios.c4
-rw-r--r--arch/frv/mb93090-mb00/pci-vdk.c3
-rw-r--r--arch/i386/pci/common.c6
-rw-r--r--arch/ia64/pci/pci.c8
4 files changed, 15 insertions, 6 deletions
diff --git a/arch/cris/arch-v32/drivers/pci/bios.c b/arch/cris/arch-v32/drivers/pci/bios.c
index a2b9c60c2777..5b79a7a772d4 100644
--- a/arch/cris/arch-v32/drivers/pci/bios.c
+++ b/arch/cris/arch-v32/drivers/pci/bios.c
@@ -100,7 +100,9 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
100 if ((err = pcibios_enable_resources(dev, mask)) < 0) 100 if ((err = pcibios_enable_resources(dev, mask)) < 0)
101 return err; 101 return err;
102 102
103 return pcibios_enable_irq(dev); 103 if (!dev->msi_enabled)
104 pcibios_enable_irq(dev);
105 return 0;
104} 106}
105 107
106int pcibios_assign_resources(void) 108int pcibios_assign_resources(void)
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
index f7279d78995a..0b581e3cf7c7 100644
--- a/arch/frv/mb93090-mb00/pci-vdk.c
+++ b/arch/frv/mb93090-mb00/pci-vdk.c
@@ -466,6 +466,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
466 466
467 if ((err = pcibios_enable_resources(dev, mask)) < 0) 467 if ((err = pcibios_enable_resources(dev, mask)) < 0)
468 return err; 468 return err;
469 pcibios_enable_irq(dev); 469 if (!dev->msi_enabled)
470 pcibios_enable_irq(dev);
470 return 0; 471 return 0;
471} 472}
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}
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 474d179966dc..f8bcccd6d417 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -557,14 +557,18 @@ pcibios_enable_device (struct pci_dev *dev, int mask)
557 if (ret < 0) 557 if (ret < 0)
558 return ret; 558 return ret;
559 559
560 return acpi_pci_irq_enable(dev); 560 if (!dev->msi_enabled)
561 return acpi_pci_irq_enable(dev);
562 return 0;
561} 563}
562 564
563void 565void
564pcibios_disable_device (struct pci_dev *dev) 566pcibios_disable_device (struct pci_dev *dev)
565{ 567{
566 BUG_ON(atomic_read(&dev->enable_cnt)); 568 BUG_ON(atomic_read(&dev->enable_cnt));
567 acpi_pci_irq_disable(dev); 569 if (!dev->msi_enabled)
570 acpi_pci_irq_disable(dev);
571 return 0;
568} 572}
569 573
570void 574void