KVM: s390: clear floating interrupt bitmap and parameters
authorJens Freimann <jfrei@linux.vnet.ibm.com>
Mon, 22 Jun 2015 11:20:12 +0000 (13:20 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 23 Jun 2015 15:02:39 +0000 (17:02 +0200)
commit 6d3da24141 ("KVM: s390: deliver floating interrupts in order
of priority") introduced a regression for the reset handling.

We don't clear the bitmap of pending floating interrupts
and interrupt parameters. This could result in stale interrupts
even after a reset. Let's fix this by clearing the pending bitmap
and the parameters for service and machine check interrupts.

Cc: stable@vger.kernel.org # 4.1
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/s390/kvm/interrupt.c

index 322ef9cfdc80b65a3359eb9c3ab9dd8ee5adb227..480b9750e15e021ef63122d5ebe26b846cbc8f63 100644 (file)
@@ -1621,6 +1621,9 @@ void kvm_s390_clear_float_irqs(struct kvm *kvm)
        int i;
 
        spin_lock(&fi->lock);
+       fi->pending_irqs = 0;
+       memset(&fi->srv_signal, 0, sizeof(fi->srv_signal));
+       memset(&fi->mchk, 0, sizeof(fi->mchk));
        for (i = 0; i < FIRQ_LIST_COUNT; i++)
                clear_irq_list(&fi->lists[i]);
        for (i = 0; i < FIRQ_MAX_COUNT; i++)