aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/mm/fault.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 /arch/s390/mm/fault.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 'arch/s390/mm/fault.c')
-rw-r--r--arch/s390/mm/fault.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 4cf85fef407c..ab988135e5c6 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -543,7 +543,6 @@ static void pfault_interrupt(unsigned int ext_int_code,
543 struct task_struct *tsk; 543 struct task_struct *tsk;
544 __u16 subcode; 544 __u16 subcode;
545 545
546 kstat_cpu(smp_processor_id()).irqs[EXTINT_PFL]++;
547 /* 546 /*
548 * Get the external interruption subcode & pfault 547 * Get the external interruption subcode & pfault
549 * initial/completion signal bit. VM stores this 548 * initial/completion signal bit. VM stores this
@@ -553,6 +552,7 @@ static void pfault_interrupt(unsigned int ext_int_code,
553 subcode = ext_int_code >> 16; 552 subcode = ext_int_code >> 16;
554 if ((subcode & 0xff00) != __SUBCODE_MASK) 553 if ((subcode & 0xff00) != __SUBCODE_MASK)
555 return; 554 return;
555 kstat_cpu(smp_processor_id()).irqs[EXTINT_PFL]++;
556 556
557 /* 557 /*
558 * Get the token (= address of the task structure of the affected task). 558 * Get the token (= address of the task structure of the affected task).