Merge tag 'kvmarm-for-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm...
[linux-2.6-microblaze.git] / virt / kvm / arm / arm.c
index d9273f9..87ecb5f 100644 (file)
@@ -1202,14 +1202,30 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
  */
 int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log)
 {
-       bool is_dirty = false;
+       bool flush = false;
        int r;
 
        mutex_lock(&kvm->slots_lock);
 
-       r = kvm_get_dirty_log_protect(kvm, log, &is_dirty);
+       r = kvm_get_dirty_log_protect(kvm, log, &flush);
 
-       if (is_dirty)
+       if (flush)
+               kvm_flush_remote_tlbs(kvm);
+
+       mutex_unlock(&kvm->slots_lock);
+       return r;
+}
+
+int kvm_vm_ioctl_clear_dirty_log(struct kvm *kvm, struct kvm_clear_dirty_log *log)
+{
+       bool flush = false;
+       int r;
+
+       mutex_lock(&kvm->slots_lock);
+
+       r = kvm_clear_dirty_log_protect(kvm, log, &flush);
+
+       if (flush)
                kvm_flush_remote_tlbs(kvm);
 
        mutex_unlock(&kvm->slots_lock);