aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/paging_tmpl.h
diff options
context:
space:
mode:
authorBandan Das <bsd@redhat.com>2017-05-05 15:25:13 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2017-05-09 11:54:16 +0200
commitbab4165e2f031905bd0a2bb8b6ad65c5c8cfa870 (patch)
tree266fc7f10baa2e14d42f28ca23ad5f50cad16d7b /arch/x86/kvm/paging_tmpl.h
parentkvm: nVMX: Validate CR3 target count on nested VM-entry (diff)
downloadlinux-dev-bab4165e2f031905bd0a2bb8b6ad65c5c8cfa870.tar.xz
linux-dev-bab4165e2f031905bd0a2bb8b6ad65c5c8cfa870.zip
kvm: x86: Add a hook for arch specific dirty logging emulation
When KVM updates accessed/dirty bits, this hook can be used to invoke an arch specific function that implements/emulates dirty logging such as PML. Signed-off-by: Bandan Das <bsd@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/paging_tmpl.h')
-rw-r--r--arch/x86/kvm/paging_tmpl.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 314d2071b337..56241746abbd 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -226,6 +226,10 @@ static int FNAME(update_accessed_dirty_bits)(struct kvm_vcpu *vcpu,
if (level == walker->level && write_fault &&
!(pte & PT_GUEST_DIRTY_MASK)) {
trace_kvm_mmu_set_dirty_bit(table_gfn, index, sizeof(pte));
+#if PTTYPE == PTTYPE_EPT
+ if (kvm_arch_write_log_dirty(vcpu))
+ return -EINVAL;
+#endif
pte |= PT_GUEST_DIRTY_MASK;
}
if (pte == orig_pte)