diff options
Diffstat (limited to 'arch/s390/pci/pci.c')
-rw-r--r-- | arch/s390/pci/pci.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index a966d7bfac57..4266a4de3160 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
@@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq) | |||
382 | if (ai == -1UL) | 382 | if (ai == -1UL) |
383 | break; | 383 | break; |
384 | inc_irq_stat(IRQIO_MSI); | 384 | inc_irq_stat(IRQIO_MSI); |
385 | airq_iv_lock(aibv, ai); | ||
385 | generic_handle_irq(airq_iv_get_data(aibv, ai)); | 386 | generic_handle_irq(airq_iv_get_data(aibv, ai)); |
387 | airq_iv_unlock(aibv, ai); | ||
386 | } | 388 | } |
387 | } | 389 | } |
388 | } | 390 | } |
@@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | |||
408 | zdev->aisb = aisb; | 410 | zdev->aisb = aisb; |
409 | 411 | ||
410 | /* Create adapter interrupt vector */ | 412 | /* Create adapter interrupt vector */ |
411 | zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA); | 413 | zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK); |
412 | if (!zdev->aibv) | 414 | if (!zdev->aibv) |
413 | return -ENOMEM; | 415 | return -ENOMEM; |
414 | 416 | ||