aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2008-08-27 20:01:04 +0300
committerAvi Kivity <avi@qumranet.com>2008-10-15 10:15:24 +0200
commit3201b5d9f0f7ef392886cd76dcd2c69186d9d5cd (patch)
tree94c726dfc773f551a9b8ad600193f815b6619d2c
parentKVM: MMU: Flush tlbs after clearing write permission when accessing dirty log (diff)
downloadlinux-dev-3201b5d9f0f7ef392886cd76dcd2c69186d9d5cd.tar.xz
linux-dev-3201b5d9f0f7ef392886cd76dcd2c69186d9d5cd.zip
KVM: MMU: Fix setting the accessed bit on non-speculative sptes
The accessed bit was accidentally turned on in a random flag word, rather than, the spte itself, which was lucky, since it used the non-EPT compatible PT_ACCESSED_MASK. Fix by turning the bit on in the spte and changing it to use the portable accessed mask. Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r--arch/x86/kvm/mmu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 853a2889b202..866d7133cad8 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1192,7 +1192,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
*/
spte = shadow_base_present_pte | shadow_dirty_mask;
if (!speculative)
- pte_access |= PT_ACCESSED_MASK;
+ spte |= shadow_accessed_mask;
if (!dirty)
pte_access &= ~ACC_WRITE_MASK;
if (pte_access & ACC_EXEC_MASK)