Commit a32ed1bb authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

KVM: PPC: Book3S HV P9: Improve exit timing accounting coverage

The C conversion caused exit timing to become a bit cramped. Expand it
to cover more of the entry and exit code.
Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Reviewed-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210528090752.3542186-18-npiggin@gmail.com
parent 6d770e3f
...@@ -143,6 +143,8 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc ...@@ -143,6 +143,8 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
if (hdec < 0) if (hdec < 0)
return BOOK3S_INTERRUPT_HV_DECREMENTER; return BOOK3S_INTERRUPT_HV_DECREMENTER;
start_timing(vcpu, &vcpu->arch.rm_entry);
if (vc->tb_offset) { if (vc->tb_offset) {
u64 new_tb = mftb() + vc->tb_offset; u64 new_tb = mftb() + vc->tb_offset;
mtspr(SPRN_TBU40, new_tb); mtspr(SPRN_TBU40, new_tb);
...@@ -193,8 +195,6 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc ...@@ -193,8 +195,6 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
*/ */
mtspr(SPRN_HDEC, hdec); mtspr(SPRN_HDEC, hdec);
start_timing(vcpu, &vcpu->arch.rm_entry);
vcpu->arch.ceded = 0; vcpu->arch.ceded = 0;
WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_HV); WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_HV);
...@@ -337,8 +337,6 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc ...@@ -337,8 +337,6 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
accumulate_time(vcpu, &vcpu->arch.rm_exit); accumulate_time(vcpu, &vcpu->arch.rm_exit);
end_timing(vcpu);
/* Advance host PURR/SPURR by the amount used by guest */ /* Advance host PURR/SPURR by the amount used by guest */
purr = mfspr(SPRN_PURR); purr = mfspr(SPRN_PURR);
spurr = mfspr(SPRN_SPURR); spurr = mfspr(SPRN_SPURR);
...@@ -402,6 +400,8 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc ...@@ -402,6 +400,8 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
switch_mmu_to_host_radix(kvm, host_pidr); switch_mmu_to_host_radix(kvm, host_pidr);
end_timing(vcpu);
return trap; return trap;
} }
EXPORT_SYMBOL_GPL(kvmhv_vcpu_entry_p9); EXPORT_SYMBOL_GPL(kvmhv_vcpu_entry_p9);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment