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 --- |