diff options
Diffstat (limited to 'kernel/irq/msi.c')
-rw-r--r-- | kernel/irq/msi.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 54999350162c..19e9dfbe97fa 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c | |||
@@ -359,6 +359,17 @@ int msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev, | |||
359 | else | 359 | else |
360 | dev_dbg(dev, "irq [%d-%d] for MSI\n", | 360 | dev_dbg(dev, "irq [%d-%d] for MSI\n", |
361 | virq, virq + desc->nvec_used - 1); | 361 | virq, virq + desc->nvec_used - 1); |
362 | /* | ||
363 | * This flag is set by the PCI layer as we need to activate | ||
364 | * the MSI entries before the PCI layer enables MSI in the | ||
365 | * card. Otherwise the card latches a random msi message. | ||
366 | */ | ||
367 | if (info->flags & MSI_FLAG_ACTIVATE_EARLY) { | ||
368 | struct irq_data *irq_data; | ||
369 | |||
370 | irq_data = irq_domain_get_irq_data(domain, desc->irq); | ||
371 | irq_domain_activate_irq(irq_data); | ||
372 | } | ||
362 | } | 373 | } |
363 | 374 | ||
364 | return 0; | 375 | return 0; |