aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_diag.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2011-04-29 04:42:19 -0400
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2011-04-29 04:42:25 -0400
commita9851832857dc1e4efefca1713f5cff3e168a25c (patch)
treef5ca038fcc00f5ed2cac37c575aec550e170c65c /drivers/s390/block/dasd_diag.c
parented961581a7ca91d6a4852af2e44333e983100505 (diff)
[S390] irqstats: fix counting of pfault, dasd diag and virtio irqs
pfault, dasd diag and virtio all use the same external interrupt number. The respective interrupt handlers decide by the subcode if they are meant to handle the interrupt. Counting is currently done before looking at the subcode which means each handler counts an interrupt even if it is not handling it. Fix this by moving the kstat code after the code which looks at the subcode. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd_diag.c')
-rw-r--r--drivers/s390/block/dasd_diag.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 29143eda9dd..85dddb1e412 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -239,7 +239,6 @@ static void dasd_ext_handler(unsigned int ext_int_code,
239 addr_t ip; 239 addr_t ip;
240 int rc; 240 int rc;
241 241
242 kstat_cpu(smp_processor_id()).irqs[EXTINT_DSD]++;
243 switch (ext_int_code >> 24) { 242 switch (ext_int_code >> 24) {
244 case DASD_DIAG_CODE_31BIT: 243 case DASD_DIAG_CODE_31BIT:
245 ip = (addr_t) param32; 244 ip = (addr_t) param32;
@@ -250,6 +249,7 @@ static void dasd_ext_handler(unsigned int ext_int_code,
250 default: 249 default:
251 return; 250 return;
252 } 251 }
252 kstat_cpu(smp_processor_id()).irqs[EXTINT_DSD]++;
253 if (!ip) { /* no intparm: unsolicited interrupt */ 253 if (!ip) { /* no intparm: unsolicited interrupt */
254 DBF_EVENT(DBF_NOTICE, "%s", "caught unsolicited " 254 DBF_EVENT(DBF_NOTICE, "%s", "caught unsolicited "
255 "interrupt"); 255 "interrupt");