summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Dengler <hd@linux.vnet.ibm.com>2011-01-05 14:47:38 +0300
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2011-01-05 14:47:26 +0300
commit62d146ffe3adfed2747fc36138476c8417ce73a7 (patch)
treed5d27798a98fc7683e092ffb4a6cc208a64fb90a
parent85b81cdd0b038d580dedf6289df7de65826967d6 (diff)
downloadlinux-62d146ffe3adfed2747fc36138476c8417ce73a7.tar.xz
[S390] ap bus: add support for irq statistics
Add support for AP Bus I/O interrupt statistics in /proc/interrupts. Signed-off-by: Holger Dengler <hd@linux.vnet.ibm.com> Signed-off-by: Felix Beck <felix.beck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/include/asm/irq.h1
-rw-r--r--arch/s390/kernel/irq.c1
-rw-r--r--drivers/s390/crypto/ap_bus.c2
3 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index 8c79f9400a36..db14a311f1d2 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -25,6 +25,7 @@ enum interruption_class {
IOINT_LCS,
IOINT_CLW,
IOINT_CTC,
+ IOINT_APB,
NMI_NMI,
NR_IRQS,
};
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index 57ed2b55c2a1..ea5099c9709c 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -42,6 +42,7 @@ static const struct irq_class intrclass_names[] = {
{.name = "LCS", .desc = "[I/O] LCS" },
{.name = "CLW", .desc = "[I/O] CLAW" },
{.name = "CTC", .desc = "[I/O] CTC" },
+ {.name = "APB", .desc = "[I/O] AP Bus" },
{.name = "NMI", .desc = "[NMI] Machine Check" },
};
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index a1ba52a09602..4f37c45ee114 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -27,6 +27,7 @@
#define KMSG_COMPONENT "ap"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
+#include <linux/kernel_stat.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/delay.h>
@@ -1042,6 +1043,7 @@ out:
static void ap_interrupt_handler(void *unused1, void *unused2)
{
+ kstat_cpu(smp_processor_id()).irqs[IOINT_APB]++;
tasklet_schedule(&ap_tasklet);
}