]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/s390/kvm/interrupt.c
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[karo-tx-linux.git] / arch / s390 / kvm / interrupt.c
index 322ef9cfdc80b65a3359eb9c3ab9dd8ee5adb227..c98d89708e99fb19ee2217c826f75f2bd0e3a41a 100644 (file)
@@ -801,7 +801,7 @@ int kvm_s390_ext_call_pending(struct kvm_vcpu *vcpu)
        struct kvm_s390_local_interrupt *li = &vcpu->arch.local_int;
        uint8_t sigp_ctrl = vcpu->kvm->arch.sca->cpu[vcpu->vcpu_id].sigp_ctrl;
 
-       if (!sclp_has_sigpif())
+       if (!sclp.has_sigpif)
                return test_bit(IRQ_PEND_EXT_EXTERNAL, &li->pending_irqs);
 
        return (sigp_ctrl & SIGP_CTRL_C) &&
@@ -1055,7 +1055,7 @@ static int __inject_extcall(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq)
            kvm_get_vcpu(vcpu->kvm, src_id) == NULL)
                return -EINVAL;
 
-       if (sclp_has_sigpif())
+       if (sclp.has_sigpif)
                return __inject_extcall_sigpif(vcpu, src_id);
 
        if (test_and_set_bit(IRQ_PEND_EXT_EXTERNAL, &li->pending_irqs))
@@ -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++)