diff options
author | Alexander Graf <agraf@suse.de> | 2010-08-02 14:11:39 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-10-24 04:52:06 -0400 |
commit | 2e602847d9c2d6b487bda62bbbe550db40ca912f (patch) | |
tree | e93c763d86987b7aa10f87f6582eacbdee9fa792 /arch/powerpc/kvm | |
parent | 4cb6b7ea0cd085e6613153ad69608cad6421abcc (diff) |
KVM: PPC: Don't flush PTEs on NX/RO hit
When hitting a no-execute or read-only data/inst storage interrupt we were
flushing the respective PTE so we're sure it gets properly overwritten next.
According to the spec, this is unnecessary though. The guest issues a tlbie
anyways, so we're safe to just keep the PTE around and have it manually removed
from the guest, saving us a flush.
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r-- | arch/powerpc/kvm/book3s.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 54ca578239db..2fb528f417ff 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c | |||
@@ -887,7 +887,6 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
887 | vcpu->arch.shared->msr |= | 887 | vcpu->arch.shared->msr |= |
888 | to_svcpu(vcpu)->shadow_srr1 & 0x58000000; | 888 | to_svcpu(vcpu)->shadow_srr1 & 0x58000000; |
889 | kvmppc_book3s_queue_irqprio(vcpu, exit_nr); | 889 | kvmppc_book3s_queue_irqprio(vcpu, exit_nr); |
890 | kvmppc_mmu_pte_flush(vcpu, kvmppc_get_pc(vcpu), ~0xFFFUL); | ||
891 | r = RESUME_GUEST; | 890 | r = RESUME_GUEST; |
892 | } | 891 | } |
893 | break; | 892 | break; |
@@ -913,7 +912,6 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, | |||
913 | vcpu->arch.shared->dar = dar; | 912 | vcpu->arch.shared->dar = dar; |
914 | vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr; | 913 | vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr; |
915 | kvmppc_book3s_queue_irqprio(vcpu, exit_nr); | 914 | kvmppc_book3s_queue_irqprio(vcpu, exit_nr); |
916 | kvmppc_mmu_pte_flush(vcpu, dar, ~0xFFFUL); | ||
917 | r = RESUME_GUEST; | 915 | r = RESUME_GUEST; |
918 | } | 916 | } |
919 | break; | 917 | break; |