Reduce time spent holding kvm->lock: unlock mutex before calling
synchronize_srcu().  There is no need to hold kvm->lock until all vCPUs
have been kicked, KVM only needs to guarantee that all vCPUs will switch
to the new filter before exiting to userspace.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Michal Luczaj <mhal@rbox.co>
Link: https://lore.kernel.org/r/20230107001256.2365304-3-mhal@rbox.co
[sean: expand changelog]
Signed-off-by: Sean Christopherson <seanjc@google.com>
 
        old_filter = srcu_dereference_check(kvm->arch.msr_filter, &kvm->srcu, 1);
 
        rcu_assign_pointer(kvm->arch.msr_filter, new_filter);
+       mutex_unlock(&kvm->lock);
        synchronize_srcu(&kvm->srcu);
 
        kvm_free_msr_filter(old_filter);
 
        kvm_make_all_cpus_request(kvm, KVM_REQ_MSR_FILTER_CHANGED);
-       mutex_unlock(&kvm->lock);
 
        return 0;
 }