Commit 9739ff48 authored by Gautam Menghani's avatar Gautam Menghani Committed by Michael Ellerman
Browse files

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: default avatarGautam Menghani <gautam@linux.ibm.com>
Reviewed-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240716115206.70210-1-gautam@linux.ibm.com
parent de9c2c66
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -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 |