|
@@ -116,7 +116,7 @@ void __weak arch_teardown_msi_irqs(struct pci_dev *dev)
|
|
|
return default_teardown_msi_irqs(dev);
|
|
|
}
|
|
|
|
|
|
-void default_restore_msi_irqs(struct pci_dev *dev, int irq)
|
|
|
+static void default_restore_msi_irq(struct pci_dev *dev, int irq)
|
|
|
{
|
|
|
struct msi_desc *entry;
|
|
|
|
|
@@ -134,9 +134,9 @@ void default_restore_msi_irqs(struct pci_dev *dev, int irq)
|
|
|
write_msi_msg(irq, &entry->msg);
|
|
|
}
|
|
|
|
|
|
-void __weak arch_restore_msi_irqs(struct pci_dev *dev, int irq)
|
|
|
+void __weak arch_restore_msi_irqs(struct pci_dev *dev)
|
|
|
{
|
|
|
- return default_restore_msi_irqs(dev, irq);
|
|
|
+ return default_restore_msi_irqs(dev);
|
|
|
}
|
|
|
|
|
|
static void msi_set_enable(struct pci_dev *dev, int enable)
|
|
@@ -262,6 +262,15 @@ void unmask_msi_irq(struct irq_data *data)
|
|
|
msi_set_mask_bit(data, 0);
|
|
|
}
|
|
|
|
|
|
+void default_restore_msi_irqs(struct pci_dev *dev)
|
|
|
+{
|
|
|
+ struct msi_desc *entry;
|
|
|
+
|
|
|
+ list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
+ default_restore_msi_irq(dev, entry->irq);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void __read_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
|
|
|
{
|
|
|
BUG_ON(entry->dev->current_state != PCI_D0);
|
|
@@ -430,7 +439,7 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
|
|
|
|
|
|
pci_intx_for_msi(dev, 0);
|
|
|
msi_set_enable(dev, 0);
|
|
|
- arch_restore_msi_irqs(dev, dev->irq);
|
|
|
+ arch_restore_msi_irqs(dev);
|
|
|
|
|
|
pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
|
|
|
msi_mask_irq(entry, msi_capable_mask(control), entry->masked);
|
|
@@ -455,8 +464,8 @@ static void __pci_restore_msix_state(struct pci_dev *dev)
|
|
|
control |= PCI_MSIX_FLAGS_ENABLE | PCI_MSIX_FLAGS_MASKALL;
|
|
|
pci_write_config_word(dev, dev->msix_cap + PCI_MSIX_FLAGS, control);
|
|
|
|
|
|
+ arch_restore_msi_irqs(dev);
|
|
|
list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
- arch_restore_msi_irqs(dev, entry->irq);
|
|
|
msix_mask_irq(entry, entry->masked);
|
|
|
}
|
|
|
|