summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.ibm.com>2018-11-22 14:08:33 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2019-04-29 10:47:01 +0200
commit07e3ec3acb80726f60b7ab924b1b0f1498148b56 (patch)
treee7ab8ada80b4737e72f875b0ac91fcefce76d7f5
parent914b7dd07ee8713c69c31ddb3e19a76852a846ac (diff)
s390/pci: gather statistics for floating vs directed irqs
Gather statistics to distinguish floating and directed interrupts. Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/include/asm/irq.h3
-rw-r--r--arch/s390/kernel/irq.c3
-rw-r--r--arch/s390/pci/pci_irq.c10
3 files changed, 10 insertions, 6 deletions
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index d15943944054..9f75d67b8c20 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -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,
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index f586f94d3947..150964f91183 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -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"},
diff --git a/arch/s390/pci/pci_irq.c b/arch/s390/pci/pci_irq.c
index e7e3eab9a2b8..c73ab855a2ca 100644
--- a/arch/s390/pci/pci_irq.c
+++ b/arch/s390/pci/pci_irq.c
@@ -188,11 +188,13 @@ 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));