if ((!schid && !cr6) || (schid && cr6))
                return NULL;
-       mutex_lock(&kvm->lock);
        fi = &kvm->arch.float_int;
        spin_lock(&fi->lock);
        inti = NULL;
        if (list_empty(&fi->list))
                atomic_set(&fi->active, 0);
        spin_unlock(&fi->lock);
-       mutex_unlock(&kvm->lock);
        return inti;
 }
 
        int sigcpu;
        int rc = 0;
 
-       mutex_lock(&kvm->lock);
        fi = &kvm->arch.float_int;
        spin_lock(&fi->lock);
        if (fi->irq_count >= KVM_S390_MAX_FLOAT_IRQS) {
        kvm_s390_vcpu_wakeup(kvm_get_vcpu(kvm, sigcpu));
 unlock_fi:
        spin_unlock(&fi->lock);
-       mutex_unlock(&kvm->lock);
        return rc;
 }
 
        struct kvm_s390_float_interrupt *fi;
        struct kvm_s390_interrupt_info  *n, *inti = NULL;
 
-       mutex_lock(&kvm->lock);
        fi = &kvm->arch.float_int;
        spin_lock(&fi->lock);
        list_for_each_entry_safe(inti, n, &fi->list, list) {
        fi->irq_count = 0;
        atomic_set(&fi->active, 0);
        spin_unlock(&fi->lock);
-       mutex_unlock(&kvm->lock);
 }
 
 static inline int copy_irq_to_user(struct kvm_s390_interrupt_info *inti,
        int ret = 0;
        int n = 0;
 
-       mutex_lock(&kvm->lock);
        fi = &kvm->arch.float_int;
        spin_lock(&fi->lock);
 
        }
 
        spin_unlock(&fi->lock);
-       mutex_unlock(&kvm->lock);
 
        return ret < 0 ? ret : n;
 }