aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2010-08-02 14:11:39 -0400
committerAvi Kivity <avi@redhat.com>2010-10-24 04:52:06 -0400
commit2e602847d9c2d6b487bda62bbbe550db40ca912f (patch)
treee93c763d86987b7aa10f87f6582eacbdee9fa792 /arch/powerpc/kvm
parent4cb6b7ea0cd085e6613153ad69608cad6421abcc (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.c2
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;