[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>
This commit is contained in:
parent
ed961581a7
commit
a985183285
3 changed files with 3 additions and 3 deletions
|
@ -239,7 +239,6 @@ static void dasd_ext_handler(unsigned int ext_int_code,
|
|||
addr_t ip;
|
||||
int rc;
|
||||
|
||||
kstat_cpu(smp_processor_id()).irqs[EXTINT_DSD]++;
|
||||
switch (ext_int_code >> 24) {
|
||||
case DASD_DIAG_CODE_31BIT:
|
||||
ip = (addr_t) param32;
|
||||
|
@ -250,6 +249,7 @@ static void dasd_ext_handler(unsigned int ext_int_code,
|
|||
default:
|
||||
return;
|
||||
}
|
||||
kstat_cpu(smp_processor_id()).irqs[EXTINT_DSD]++;
|
||||
if (!ip) { /* no intparm: unsolicited interrupt */
|
||||
DBF_EVENT(DBF_NOTICE, "%s", "caught unsolicited "
|
||||
"interrupt");
|
||||
|
|
|
@ -381,10 +381,10 @@ static void kvm_extint_handler(unsigned int ext_int_code,
|
|||
u16 subcode;
|
||||
u32 param;
|
||||
|
||||
kstat_cpu(smp_processor_id()).irqs[EXTINT_VRT]++;
|
||||
subcode = ext_int_code >> 16;
|
||||
if ((subcode & 0xff00) != VIRTIO_SUBCODE_64)
|
||||
return;
|
||||
kstat_cpu(smp_processor_id()).irqs[EXTINT_VRT]++;
|
||||
|
||||
/* The LSB might be overloaded, we have to mask it */
|
||||
vq = (struct virtqueue *)(param64 & ~1UL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue