Skip to content

Commit 614db26

Browse files
sebottMartin Schwidefsky
authored andcommitted
Revert "s390/pci: remove bit_lock usage in interrupt handler"
This reverts commit 9594ca6. With the handle_simple_irq irq_flow_handler it must be ensured to not call generic_handle_irq with the same IRQ number on 2 CPUs at the same time (interrupts are floating on s390). Contrary to my initial investigation the irq_desc's lock usage in handle_simple_irq does not ensure this. Thus re-introduce the bit- lock usage in s390's pci handler. Reported-by: Ursula Braun <ubraun@linux.ibm.com> Reported-by: Alexander Schmidt <alexs@linux.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
1 parent 8f9aca0 commit 614db26

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

arch/s390/pci/pci.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq)
382382
if (ai == -1UL)
383383
break;
384384
inc_irq_stat(IRQIO_MSI);
385+
airq_iv_lock(aibv, ai);
385386
generic_handle_irq(airq_iv_get_data(aibv, ai));
387+
airq_iv_unlock(aibv, ai);
386388
}
387389
}
388390
}
@@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
408410
zdev->aisb = aisb;
409411

410412
/* 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);
412414
if (!zdev->aibv)
413415
return -ENOMEM;
414416

0 commit comments

Comments
 (0)