Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 614db269 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky
Browse files

Revert "s390/pci: remove bit_lock usage in interrupt handler"



This reverts commit 9594ca6b.

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: default avatarUrsula Braun <ubraun@linux.ibm.com>
Reported-by: default avatarAlexander Schmidt <alexs@linux.ibm.com>
Signed-off-by: default avatarSebastian Ott <sebott@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 8f9aca0c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq)
			if (ai == -1UL)
				break;
			inc_irq_stat(IRQIO_MSI);
			airq_iv_lock(aibv, ai);
			generic_handle_irq(airq_iv_get_data(aibv, ai));
			airq_iv_unlock(aibv, ai);
		}
	}
}
@@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
	zdev->aisb = aisb;

	/* Create adapter interrupt vector */
	zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA);
	zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK);
	if (!zdev->aibv)
		return -ENOMEM;