KVM: VMX: emulate accessed bit for EPT
[deliverable/linux.git] / arch / x86 / kvm / mmu.c
index 913ef4b7939ad7e5cbc0d578c494d4469cad0c99..b8da6715d08b1bfd85f4cd47f93be58e739601a4 100644 (file)
@@ -838,9 +838,15 @@ static int kvm_age_rmapp(struct kvm *kvm, unsigned long *rmapp,
        u64 *spte;
        int young = 0;
 
-       /* always return old for EPT */
+       /*
+        * Emulate the accessed bit for EPT, by checking if this page has
+        * an EPT mapping, and clearing it if it does. On the next access,
+        * a new EPT mapping will be established.
+        * This has some overhead, but not as much as the cost of swapping
+        * out actively used pages or breaking up actively used hugepages.
+        */
        if (!shadow_accessed_mask)
-               return 0;
+               return kvm_unmap_rmapp(kvm, rmapp, data);
 
        spte = rmap_next(kvm, rmapp, NULL);
        while (spte) {
This page took 0.03039 seconds and 5 git commands to generate.