KVM: PPC: Book3S HV: Add a new config for P8 debug timing
Turn the existing Kconfig KVM_BOOK3S_HV_EXIT_TIMING into KVM_BOOK3S_HV_P8_TIMING in preparation for the addition of a new config for P9 timings. This applies only to P8 code, the generic timing code is still kept under KVM_BOOK3S_HV_EXIT_TIMING. Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20220525130554.2614394-3-farosas@linux.ibm.com
This commit is contained in:
parent
9981bace85
commit
3f8ed993be
@ -379,7 +379,7 @@ int main(void)
|
|||||||
OFFSET(VCPU_SPRG2, kvm_vcpu, arch.shregs.sprg2);
|
OFFSET(VCPU_SPRG2, kvm_vcpu, arch.shregs.sprg2);
|
||||||
OFFSET(VCPU_SPRG3, kvm_vcpu, arch.shregs.sprg3);
|
OFFSET(VCPU_SPRG3, kvm_vcpu, arch.shregs.sprg3);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
OFFSET(VCPU_TB_RMENTRY, kvm_vcpu, arch.rm_entry);
|
OFFSET(VCPU_TB_RMENTRY, kvm_vcpu, arch.rm_entry);
|
||||||
OFFSET(VCPU_TB_RMINTR, kvm_vcpu, arch.rm_intr);
|
OFFSET(VCPU_TB_RMINTR, kvm_vcpu, arch.rm_intr);
|
||||||
OFFSET(VCPU_TB_RMEXIT, kvm_vcpu, arch.rm_exit);
|
OFFSET(VCPU_TB_RMEXIT, kvm_vcpu, arch.rm_exit);
|
||||||
|
@ -128,7 +128,11 @@ config KVM_BOOK3S_64_PR
|
|||||||
and system calls on the host.
|
and system calls on the host.
|
||||||
|
|
||||||
config KVM_BOOK3S_HV_EXIT_TIMING
|
config KVM_BOOK3S_HV_EXIT_TIMING
|
||||||
bool "Detailed timing for hypervisor real-mode code"
|
bool
|
||||||
|
|
||||||
|
config KVM_BOOK3S_HV_P8_TIMING
|
||||||
|
bool "Detailed timing for hypervisor real-mode code (for POWER8)"
|
||||||
|
select KVM_BOOK3S_HV_EXIT_TIMING
|
||||||
depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS
|
depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS
|
||||||
help
|
help
|
||||||
Calculate time taken for each vcpu in the real-mode guest entry,
|
Calculate time taken for each vcpu in the real-mode guest entry,
|
||||||
|
@ -237,14 +237,14 @@ kvm_novcpu_wakeup:
|
|||||||
cmpdi r4, 0
|
cmpdi r4, 0
|
||||||
beq kvmppc_primary_no_guest
|
beq kvmppc_primary_no_guest
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r4, VCPU_TB_RMENTRY
|
addi r3, r4, VCPU_TB_RMENTRY
|
||||||
bl kvmhv_start_timing
|
bl kvmhv_start_timing
|
||||||
#endif
|
#endif
|
||||||
b kvmppc_got_guest
|
b kvmppc_got_guest
|
||||||
|
|
||||||
kvm_novcpu_exit:
|
kvm_novcpu_exit:
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
ld r4, HSTATE_KVM_VCPU(r13)
|
ld r4, HSTATE_KVM_VCPU(r13)
|
||||||
cmpdi r4, 0
|
cmpdi r4, 0
|
||||||
beq 13f
|
beq 13f
|
||||||
@ -523,7 +523,7 @@ kvmppc_hv_entry:
|
|||||||
li r6, KVM_GUEST_MODE_HOST_HV
|
li r6, KVM_GUEST_MODE_HOST_HV
|
||||||
stb r6, HSTATE_IN_GUEST(r13)
|
stb r6, HSTATE_IN_GUEST(r13)
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
/* Store initial timestamp */
|
/* Store initial timestamp */
|
||||||
cmpdi r4, 0
|
cmpdi r4, 0
|
||||||
beq 1f
|
beq 1f
|
||||||
@ -894,7 +894,7 @@ fast_guest_return:
|
|||||||
li r9, KVM_GUEST_MODE_GUEST_HV
|
li r9, KVM_GUEST_MODE_GUEST_HV
|
||||||
stb r9, HSTATE_IN_GUEST(r13)
|
stb r9, HSTATE_IN_GUEST(r13)
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
/* Accumulate timing */
|
/* Accumulate timing */
|
||||||
addi r3, r4, VCPU_TB_GUEST
|
addi r3, r4, VCPU_TB_GUEST
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
@ -945,7 +945,7 @@ secondary_too_late:
|
|||||||
cmpdi r4, 0
|
cmpdi r4, 0
|
||||||
beq 11f
|
beq 11f
|
||||||
stw r12, VCPU_TRAP(r4)
|
stw r12, VCPU_TRAP(r4)
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r4, VCPU_TB_RMEXIT
|
addi r3, r4, VCPU_TB_RMEXIT
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
#endif
|
#endif
|
||||||
@ -959,7 +959,7 @@ hdec_soon:
|
|||||||
li r12, BOOK3S_INTERRUPT_HV_DECREMENTER
|
li r12, BOOK3S_INTERRUPT_HV_DECREMENTER
|
||||||
12: stw r12, VCPU_TRAP(r4)
|
12: stw r12, VCPU_TRAP(r4)
|
||||||
mr r9, r4
|
mr r9, r4
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r4, VCPU_TB_RMEXIT
|
addi r3, r4, VCPU_TB_RMEXIT
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
#endif
|
#endif
|
||||||
@ -1056,7 +1056,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
|
|||||||
li r0, MSR_RI
|
li r0, MSR_RI
|
||||||
mtmsrd r0, 1
|
mtmsrd r0, 1
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r9, VCPU_TB_RMINTR
|
addi r3, r9, VCPU_TB_RMINTR
|
||||||
mr r4, r9
|
mr r4, r9
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
@ -1135,7 +1135,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
|
|||||||
|
|
||||||
guest_exit_cont: /* r9 = vcpu, r12 = trap, r13 = paca */
|
guest_exit_cont: /* r9 = vcpu, r12 = trap, r13 = paca */
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r9, VCPU_TB_RMEXIT
|
addi r3, r9, VCPU_TB_RMEXIT
|
||||||
mr r4, r9
|
mr r4, r9
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
@ -1495,7 +1495,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
|
|||||||
mtspr SPRN_LPCR,r8
|
mtspr SPRN_LPCR,r8
|
||||||
isync
|
isync
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
/* Finish timing, if we have a vcpu */
|
/* Finish timing, if we have a vcpu */
|
||||||
ld r4, HSTATE_KVM_VCPU(r13)
|
ld r4, HSTATE_KVM_VCPU(r13)
|
||||||
cmpdi r4, 0
|
cmpdi r4, 0
|
||||||
@ -2153,7 +2153,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_TM)
|
|||||||
ld r4, HSTATE_KVM_VCPU(r13)
|
ld r4, HSTATE_KVM_VCPU(r13)
|
||||||
std r3, VCPU_DEC_EXPIRES(r4)
|
std r3, VCPU_DEC_EXPIRES(r4)
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
ld r4, HSTATE_KVM_VCPU(r13)
|
ld r4, HSTATE_KVM_VCPU(r13)
|
||||||
addi r3, r4, VCPU_TB_CEDE
|
addi r3, r4, VCPU_TB_CEDE
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
@ -2221,7 +2221,7 @@ kvm_end_cede:
|
|||||||
/* get vcpu pointer */
|
/* get vcpu pointer */
|
||||||
ld r4, HSTATE_KVM_VCPU(r13)
|
ld r4, HSTATE_KVM_VCPU(r13)
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
addi r3, r4, VCPU_TB_RMINTR
|
addi r3, r4, VCPU_TB_RMINTR
|
||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
#endif
|
#endif
|
||||||
@ -2961,7 +2961,7 @@ kvmppc_fix_pmao:
|
|||||||
isync
|
isync
|
||||||
blr
|
blr
|
||||||
|
|
||||||
#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
|
#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
|
||||||
/*
|
/*
|
||||||
* Start timing an activity
|
* Start timing an activity
|
||||||
* r3 = pointer to time accumulation struct, r4 = vcpu
|
* r3 = pointer to time accumulation struct, r4 = vcpu
|
||||||
|
Loading…
Reference in New Issue
Block a user