diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2008-09-23 13:18:38 -0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-10-15 14:25:24 +0200 |
commit | 6844dec6948679d084f054235fee19ba4e3a3096 (patch) | |
tree | a7f2bfa7e2fb664e42486a82c44f681bc1e38e01 /arch/x86/kvm | |
parent | 0738541396be165995c7f2387746eb0b47024fec (diff) | |
download | op-kernel-dev-6844dec6948679d084f054235fee19ba4e3a3096.zip op-kernel-dev-6844dec6948679d084f054235fee19ba4e3a3096.tar.gz |
KVM: MMU: mmu_convert_notrap helper
Need to convert shadow_notrap_nonpresent -> shadow_trap_nonpresent when
unsyncing pages.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r-- | arch/x86/kvm/mmu.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index c9b4b90..57c7580 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -1173,6 +1173,20 @@ static void page_header_update_slot(struct kvm *kvm, void *pte, gfn_t gfn) __set_bit(slot, &sp->slot_bitmap); } +static void mmu_convert_notrap(struct kvm_mmu_page *sp) +{ + int i; + u64 *pt = sp->spt; + + if (shadow_trap_nonpresent_pte == shadow_notrap_nonpresent_pte) + return; + + for (i = 0; i < PT64_ENT_PER_PAGE; ++i) { + if (pt[i] == shadow_notrap_nonpresent_pte) + set_shadow_pte(&pt[i], shadow_trap_nonpresent_pte); + } +} + struct page *gva_to_page(struct kvm_vcpu *vcpu, gva_t gva) { struct page *page; |