[PATCH 31/33] KVM: MMU: Flush guest tlb when reducing permissions on a pte

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Avi Kivity
Date: Thursday, January 4, 2007 - 9:20 am

If we reduce permissions on a pte, we must flush the cached copy of the pte
from the guest's tlb.

This is implemented at the moment by flushing the entire guest tlb, and can
be improved by flushing just the relevant virtual address, if it is known.

Signed-off-by: Avi Kivity <avi@qumranet.com>

Index: linux-2.6/drivers/kvm/mmu.c
===================================================================
--- linux-2.6.orig/drivers/kvm/mmu.c
+++ linux-2.6/drivers/kvm/mmu.c
@@ -383,6 +383,7 @@ static void rmap_write_protect(struct kv
 		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
 				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
 			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);
+			}
 		}
 	}
 
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/33] KVM: MMU: Cache shadow page tables, Avi Kivity, (Thu Jan 4, 8:48 am)
[PATCH 9/33] KVM: MMU: Shadow page table caching, Avi Kivity, (Thu Jan 4, 8:58 am)
[PATCH 17/33] KVM: MMU: oom handling, Avi Kivity, (Thu Jan 4, 9:06 am)
[PATCH 18/33] KVM: MMU: Remove invlpg interception, Avi Kivity, (Thu Jan 4, 9:07 am)
[PATCH 19/33] KVM: MMU: Remove release_pt_page_64(), Avi Kivity, (Thu Jan 4, 9:08 am)
[PATCH 26/33] KVM: MMU: Fix cmpxchg8b emulation, Avi Kivity, (Thu Jan 4, 9:15 am)
[PATCH 31/33] KVM: MMU: Flush guest tlb when reducing perm ..., Avi Kivity, (Thu Jan 4, 9:20 am)
Re: [PATCH 0/33] KVM: MMU: Cache shadow page tables, Andrew Morton, (Thu Jan 4, 10:22 am)
Re: [PATCH 0/33] KVM: MMU: Cache shadow page tables, Avi Kivity, (Thu Jan 4, 10:41 am)
Re: [PATCH 0/33] KVM: MMU: Cache shadow page tables, Ingo Molnar, (Thu Jan 4, 11:02 am)