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

Commit 07e3ec3a authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky
Browse files

s390/pci: gather statistics for floating vs directed irqs



Gather statistics to distinguish floating and directed interrupts.

Signed-off-by: default avatarSebastian Ott <sebott@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 914b7dd0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -59,7 +59,8 @@ enum interruption_class {
	IRQIO_VIR,
	IRQIO_QAI,
	IRQIO_APB,
	IRQIO_PCI,
	IRQIO_PCF,
	IRQIO_PCD,
	IRQIO_MSI,
	IRQIO_VAI,
	IRQIO_GAL,
+2 −1
Original line number Diff line number Diff line
@@ -85,7 +85,8 @@ static const struct irq_class irqclass_sub_desc[] = {
	{.irq = IRQIO_VIR,  .name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
	{.irq = IRQIO_QAI,  .name = "QAI", .desc = "[AIO] QDIO Adapter Interrupt"},
	{.irq = IRQIO_APB,  .name = "APB", .desc = "[AIO] AP Bus"},
	{.irq = IRQIO_PCI,  .name = "PCI", .desc = "[AIO] PCI Interrupt"},
	{.irq = IRQIO_PCF,  .name = "PCF", .desc = "[AIO] PCI Floating Interrupt"},
	{.irq = IRQIO_PCD,  .name = "PCD", .desc = "[AIO] PCI Directed Interrupt"},
	{.irq = IRQIO_MSI,  .name = "MSI", .desc = "[AIO] MSI Interrupt"},
	{.irq = IRQIO_VAI,  .name = "VAI", .desc = "[AIO] Virtual I/O Devices AI"},
	{.irq = IRQIO_GAL,  .name = "GAL", .desc = "[AIO] GIB Alert"},
+6 −4
Original line number Diff line number Diff line
@@ -188,12 +188,14 @@ static void zpci_handle_fallback_irq(void)

static void zpci_directed_irq_handler(struct airq_struct *airq, bool floating)
{
	inc_irq_stat(IRQIO_PCI);
	if (floating)
	if (floating) {
		inc_irq_stat(IRQIO_PCF);
		zpci_handle_fallback_irq();
	else
	} else {
		inc_irq_stat(IRQIO_PCD);
		zpci_handle_cpu_local_irq(true);
	}
}

static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
{
@@ -201,7 +203,7 @@ static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
	struct airq_iv *aibv;
	int irqs_on = 0;

	inc_irq_stat(IRQIO_PCI);
	inc_irq_stat(IRQIO_PCF);
	for (si = 0;;) {
		/* Scan adapter summary indicator bit vector */
		si = airq_iv_scan(zpci_sbv, si, airq_iv_end(zpci_sbv));