x86.c (c126d94f2c90ed9daee24a94f1c67aff7e9bf387) x86.c (198c74f43f0f5473f99967aead30ddc622804bc1)
1/*
2 * Kernel-based Virtual Machine driver for Linux
3 *
4 * derived from drivers/kvm/kvm_main.c
5 *
6 * Copyright (C) 2006 Qumranet, Inc.
7 * Copyright (C) 2008 Qumranet, Inc.
8 * Copyright IBM Corporation, 2008

--- 3618 unchanged lines hidden (view full) ---

3627 is_dirty = true;
3628
3629 mask = xchg(&dirty_bitmap[i], 0);
3630 dirty_bitmap_buffer[i] = mask;
3631
3632 offset = i * BITS_PER_LONG;
3633 kvm_mmu_write_protect_pt_masked(kvm, memslot, offset, mask);
3634 }
1/*
2 * Kernel-based Virtual Machine driver for Linux
3 *
4 * derived from drivers/kvm/kvm_main.c
5 *
6 * Copyright (C) 2006 Qumranet, Inc.
7 * Copyright (C) 2008 Qumranet, Inc.
8 * Copyright IBM Corporation, 2008

--- 3618 unchanged lines hidden (view full) ---

3627 is_dirty = true;
3628
3629 mask = xchg(&dirty_bitmap[i], 0);
3630 dirty_bitmap_buffer[i] = mask;
3631
3632 offset = i * BITS_PER_LONG;
3633 kvm_mmu_write_protect_pt_masked(kvm, memslot, offset, mask);
3634 }
3635 if (is_dirty)
3636 kvm_flush_remote_tlbs(kvm);
3637
3638 spin_unlock(&kvm->mmu_lock);
3639
3635
3636 spin_unlock(&kvm->mmu_lock);
3637
3638 /* See the comments in kvm_mmu_slot_remove_write_access(). */
3639 lockdep_assert_held(&kvm->slots_lock);
3640
3641 /*
3642 * All the TLBs can be flushed out of mmu lock, see the comments in
3643 * kvm_mmu_slot_remove_write_access().
3644 */
3645 if (is_dirty)
3646 kvm_flush_remote_tlbs(kvm);
3647
3640 r = -EFAULT;
3641 if (copy_to_user(log->dirty_bitmap, dirty_bitmap_buffer, n))
3642 goto out;
3643
3644 r = 0;
3645out:
3646 mutex_unlock(&kvm->slots_lock);
3647 return r;

--- 3920 unchanged lines hidden ---
3648 r = -EFAULT;
3649 if (copy_to_user(log->dirty_bitmap, dirty_bitmap_buffer, n))
3650 goto out;
3651
3652 r = 0;
3653out:
3654 mutex_unlock(&kvm->slots_lock);
3655 return r;

--- 3920 unchanged lines hidden ---