|
@@ -634,9 +634,7 @@ static void rmap_remove(struct kvm *kvm, u64 *spte)
|
|
|
if (*spte & shadow_accessed_mask)
|
|
|
kvm_set_pfn_accessed(pfn);
|
|
|
if (is_writeble_pte(*spte))
|
|
|
- kvm_release_pfn_dirty(pfn);
|
|
|
- else
|
|
|
- kvm_release_pfn_clean(pfn);
|
|
|
+ kvm_set_pfn_dirty(pfn);
|
|
|
rmapp = gfn_to_rmap(kvm, sp->gfns[spte - sp->spt], sp->role.level);
|
|
|
if (!*rmapp) {
|
|
|
printk(KERN_ERR "rmap_remove: %p %llx 0->BUG\n", spte, *spte);
|
|
@@ -1877,8 +1875,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
|
|
|
page_header_update_slot(vcpu->kvm, sptep, gfn);
|
|
|
if (!was_rmapped) {
|
|
|
rmap_count = rmap_add(vcpu, sptep, gfn);
|
|
|
- if (!is_rmap_spte(*sptep))
|
|
|
- kvm_release_pfn_clean(pfn);
|
|
|
+ kvm_release_pfn_clean(pfn);
|
|
|
if (rmap_count > RMAP_RECYCLE_THRESHOLD)
|
|
|
rmap_recycle(vcpu, sptep, gfn);
|
|
|
} else {
|