aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2011-01-05 12:47:34 +0100
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2011-01-05 12:47:26 +0100
commitf48198d592b0d680b9677bd69edd2290cd0c1f4f (patch)
tree06ef549b2781c90d1841427a83343d9990e3da8f
parent[S390] tape: add support for irq statistics (diff)
downloadlinux-dev-f48198d592b0d680b9677bd69edd2290cd0c1f4f.tar.xz
linux-dev-f48198d592b0d680b9677bd69edd2290cd0c1f4f.zip
[S390] vmur: add support for irq statistics
Add support for VMUR I/O interrupt statistics in /proc/interrupts. Signed-off-by: Heiko Carstens <heiko.carstens@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/char/vmur.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 6986343a566f..6c9b55681eab 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -21,6 +21,7 @@ enum interruption_class {
IOINT_C15,
IOINT_C70,
IOINT_TAP,
+ IOINT_VMR,
NMI_NMI,
NR_IRQS,
};
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index 5d7b6fbb3c13..ae726d1ae430 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -38,6 +38,7 @@ static const struct irq_class intrclass_names[] = {
{.name = "C15", .desc = "[I/O] 3215" },
{.name = "C70", .desc = "[I/O] 3270" },
{.name = "TAP", .desc = "[I/O] Tape" },
+ {.name = "VMR", .desc = "[I/O] Unit Record Devices" },
{.name = "NMI", .desc = "[NMI] Machine Check" },
};
diff --git a/drivers/s390/char/vmur.c b/drivers/s390/char/vmur.c
index f7e4ae6bf15a..caef1757341d 100644
--- a/drivers/s390/char/vmur.c
+++ b/drivers/s390/char/vmur.c
@@ -11,6 +11,7 @@
#define KMSG_COMPONENT "vmur"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
+#include <linux/kernel_stat.h>
#include <linux/cdev.h>
#include <linux/slab.h>
@@ -302,6 +303,7 @@ static void ur_int_handler(struct ccw_device *cdev, unsigned long intparm,
{
struct urdev *urd;
+ kstat_cpu(smp_processor_id()).irqs[IOINT_VMR]++;
TRACE("ur_int_handler: intparm=0x%lx cstat=%02x dstat=%02x res=%u\n",
intparm, irb->scsw.cmd.cstat, irb->scsw.cmd.dstat,
irb->scsw.cmd.count);