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>
This commit is contained in:
committed by
Avi Kivity
parent
4cb6b7ea0c
commit
2e602847d9
@@ -887,7 +887,6 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
|||||||
vcpu->arch.shared->msr |=
|
vcpu->arch.shared->msr |=
|
||||||
to_svcpu(vcpu)->shadow_srr1 & 0x58000000;
|
to_svcpu(vcpu)->shadow_srr1 & 0x58000000;
|
||||||
kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
|
kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
|
||||||
kvmppc_mmu_pte_flush(vcpu, kvmppc_get_pc(vcpu), ~0xFFFUL);
|
|
||||||
r = RESUME_GUEST;
|
r = RESUME_GUEST;
|
||||||
}
|
}
|
||||||
break;
|
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->dar = dar;
|
||||||
vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr;
|
vcpu->arch.shared->dsisr = to_svcpu(vcpu)->fault_dsisr;
|
||||||
kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
|
kvmppc_book3s_queue_irqprio(vcpu, exit_nr);
|
||||||
kvmppc_mmu_pte_flush(vcpu, dar, ~0xFFFUL);
|
|
||||||
r = RESUME_GUEST;
|
r = RESUME_GUEST;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user