KVM: PPC: Don't flush PTEs on NX/RO hit
authorAlexander Graf <agraf@suse.de>
Mon, 2 Aug 2010 18:11:39 +0000 (20:11 +0200)
committerAvi Kivity <avi@redhat.com>
Sun, 24 Oct 2010 08:52:06 +0000 (10:52 +0200)
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>
arch/powerpc/kvm/book3s.c

index 54ca578239dbef22d811717ef726c290123ee0f4..2fb528f417ff5be00e153acbe92908f03f1b9236 100644 (file)
@@ -887,7 +887,6 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                        vcpu->arch.shared->msr |=
                                to_svcpu(vcpu)->shadow_srr1 & 0x58000000;
                        kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
-                       kvmppc_mmu_pte_flush(vcpu, kvmppc_get_pc(vcpu), ~0xFFFUL);
                        r = RESUME_GUEST;
                }
                break;
@@ -913,7 +912,6 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                        vcpu->arch.shared->dar = dar;
                        vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr;
                        kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
-                       kvmppc_mmu_pte_flush(vcpu, dar, ~0xFFFUL);
                        r = RESUME_GUEST;
                }
                break;