summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2010-04-16 00:11:49 +0200
committerAvi Kivity <avi@redhat.com>2010-05-17 12:18:40 +0300
commit33fd27c7d26ec869f637634526e7293027bd8746 (patch)
tree572ddc5cff8ad38114976768b92f994556f77f4a /arch/powerpc/kvm
parent53e5b8bbbd0d0305234b2cfeae400183db98f993 (diff)
downloadlinux-33fd27c7d26ec869f637634526e7293027bd8746.tar.gz
linux-33fd27c7d26ec869f637634526e7293027bd8746.tar.bz2
linux-33fd27c7d26ec869f637634526e7293027bd8746.zip
KVM: PPC: Release clean pages as clean
When we mapped a page as read-only, we can just release it as clean to KVM's page claim mechanisms, because we're pretty sure it hasn't been touched. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_host.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c b/arch/powerpc/kvm/book3s_64_mmu_host.c
index 0eea589dbef0..b23015438371 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_host.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
@@ -55,7 +55,11 @@ static void invalidate_pte(struct hpte_cache *pte)
MMU_PAGE_4K, MMU_SEGSIZE_256M,
false);
pte->host_va = 0;
- kvm_release_pfn_dirty(pte->pfn);
+
+ if (pte->pte.may_write)
+ kvm_release_pfn_dirty(pte->pfn);
+ else
+ kvm_release_pfn_clean(pte->pfn);
}
void kvmppc_mmu_pte_flush(struct kvm_vcpu *vcpu, u64 guest_ea, u64 ea_mask)