diff options
| -rw-r--r-- | arch/cris/arch-v32/drivers/pci/bios.c | 4 | ||||
| -rw-r--r-- | arch/frv/mb93090-mb00/pci-vdk.c | 3 | ||||
| -rw-r--r-- | arch/i386/pci/common.c | 6 | ||||
| -rw-r--r-- | arch/ia64/pci/pci.c | 8 |
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 | ||
| 106 | int pcibios_assign_resources(void) | 108 | int 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 | ||
| 440 | void pcibios_disable_device (struct pci_dev *dev) | 442 | void 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 | ||
| 563 | void | 565 | void |
| 564 | pcibios_disable_device (struct pci_dev *dev) | 566 | pcibios_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 | ||
| 570 | void | 574 | void |
