KVM: PPC: Book3S HV: Refactor HFSCR emulation for KVM guests

Refactor HFSCR emulation for KVM guests when they exit out with
H_FAC_UNAVAIL to use a switch case instead of checking all "cause"
values, since the "cause" values are mutually exclusive; and this is
better expressed with a switch case.

Signed-off-by: Gautam Menghani <gautam@linux.ibm.com>
Reviewed-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240716115206.70210-1-gautam@linux.ibm.com
This commit is contained in:
Gautam Menghani 2024-07-16 17:22:04 +05:30 committed by Michael Ellerman
parent de9c2c66ad
commit 9739ff4887

View File

@ -1922,14 +1922,22 @@ static int kvmppc_handle_exit_hv(struct kvm_vcpu *vcpu,
r = EMULATE_FAIL;
if (cpu_has_feature(CPU_FTR_ARCH_300)) {
if (cause == FSCR_MSGP_LG)
switch (cause) {
case FSCR_MSGP_LG:
r = kvmppc_emulate_doorbell_instr(vcpu);
if (cause == FSCR_PM_LG)
break;
case FSCR_PM_LG:
r = kvmppc_pmu_unavailable(vcpu);
if (cause == FSCR_EBB_LG)
break;
case FSCR_EBB_LG:
r = kvmppc_ebb_unavailable(vcpu);
if (cause == FSCR_TM_LG)
break;
case FSCR_TM_LG:
r = kvmppc_tm_unavailable(vcpu);
break;
default:
break;
}
}
if (r == EMULATE_FAIL) {
kvmppc_core_queue_program(vcpu, SRR1_PROGILL |