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

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
...@@ -59,7 +59,8 @@ enum interruption_class { ...@@ -59,7 +59,8 @@ enum interruption_class {
IRQIO_VIR, IRQIO_VIR,
IRQIO_QAI, IRQIO_QAI,
IRQIO_APB, IRQIO_APB,
IRQIO_PCI, IRQIO_PCF,
IRQIO_PCD,
IRQIO_MSI, IRQIO_MSI,
IRQIO_VAI, IRQIO_VAI,
IRQIO_GAL, IRQIO_GAL,
......
...@@ -85,7 +85,8 @@ static const struct irq_class irqclass_sub_desc[] = { ...@@ -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_VIR, .name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
{.irq = IRQIO_QAI, .name = "QAI", .desc = "[AIO] QDIO Adapter Interrupt"}, {.irq = IRQIO_QAI, .name = "QAI", .desc = "[AIO] QDIO Adapter Interrupt"},
{.irq = IRQIO_APB, .name = "APB", .desc = "[AIO] AP Bus"}, {.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_MSI, .name = "MSI", .desc = "[AIO] MSI Interrupt"},
{.irq = IRQIO_VAI, .name = "VAI", .desc = "[AIO] Virtual I/O Devices AI"}, {.irq = IRQIO_VAI, .name = "VAI", .desc = "[AIO] Virtual I/O Devices AI"},
{.irq = IRQIO_GAL, .name = "GAL", .desc = "[AIO] GIB Alert"}, {.irq = IRQIO_GAL, .name = "GAL", .desc = "[AIO] GIB Alert"},
......
...@@ -188,11 +188,13 @@ static void zpci_handle_fallback_irq(void) ...@@ -188,11 +188,13 @@ static void zpci_handle_fallback_irq(void)
static void zpci_directed_irq_handler(struct airq_struct *airq, bool floating) 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(); zpci_handle_fallback_irq();
else } else {
inc_irq_stat(IRQIO_PCD);
zpci_handle_cpu_local_irq(true); zpci_handle_cpu_local_irq(true);
}
} }
static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating) 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) ...@@ -201,7 +203,7 @@ static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
struct airq_iv *aibv; struct airq_iv *aibv;
int irqs_on = 0; int irqs_on = 0;
inc_irq_stat(IRQIO_PCI); inc_irq_stat(IRQIO_PCF);
for (si = 0;;) { for (si = 0;;) {
/* Scan adapter summary indicator bit vector */ /* Scan adapter summary indicator bit vector */
si = airq_iv_scan(zpci_sbv, si, airq_iv_end(zpci_sbv)); si = airq_iv_scan(zpci_sbv, si, airq_iv_end(zpci_sbv));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment