From 7d088b833dbc8e8a1ffb18d12a4643e3d36c0201 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Fri, 5 Jan 2007 16:36:55 -0800 Subject: [PATCH] --- yaml --- r: 45284 b: refs/heads/master c: 40907d5768ab8cadd4cad97bef350820ded20338 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/kvm/mmu.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 11c78fd0409e..90e3d257a4ac 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e2dec939db126989808853d218e426daaeebc9e2 +refs/heads/master: 40907d5768ab8cadd4cad97bef350820ded20338 diff --git a/trunk/drivers/kvm/mmu.c b/trunk/drivers/kvm/mmu.c index 7761089ef3bc..2fc252813927 100644 --- a/trunk/drivers/kvm/mmu.c +++ b/trunk/drivers/kvm/mmu.c @@ -383,6 +383,7 @@ static void rmap_write_protect(struct kvm_vcpu *vcpu, u64 gfn) BUG_ON(!(*spte & PT_WRITABLE_MASK)); rmap_printk("rmap_write_protect: spte %p %llx\n", spte, *spte); rmap_remove(vcpu, spte); + kvm_arch_ops->tlb_flush(vcpu); *spte &= ~(u64)PT_WRITABLE_MASK; } } @@ -594,6 +595,7 @@ static void kvm_mmu_page_unlink_children(struct kvm_vcpu *vcpu, rmap_remove(vcpu, &pt[i]); pt[i] = 0; } + kvm_arch_ops->tlb_flush(vcpu); return; } @@ -927,7 +929,10 @@ static inline void set_pte_common(struct kvm_vcpu *vcpu, pgprintk("%s: found shadow page for %lx, marking ro\n", __FUNCTION__, gfn); access_bits &= ~PT_WRITABLE_MASK; - *shadow_pte &= ~PT_WRITABLE_MASK; + if (is_writeble_pte(*shadow_pte)) { + *shadow_pte &= ~PT_WRITABLE_MASK; + kvm_arch_ops->tlb_flush(vcpu); + } } }