diff options
author | Gautam Menghani <gautam@linux.ibm.com> | 2024-07-16 13:52:04 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2024-08-05 05:51:01 +0200 |
commit | 9739ff4887c77a38575c23b12766b0a37c8be13c (patch) | |
tree | 05b19f5c3c3e85e1827dfa159a5316780e3817be /arch/powerpc | |
parent | Linux 6.11-rc2 (diff) | |
download | linux-9739ff4887c77a38575c23b12766b0a37c8be13c.tar.xz linux-9739ff4887c77a38575c23b12766b0a37c8be13c.zip |
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
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kvm/book3s_hv.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 8f7d7e37bc8c..0c06d2a59861 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -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 | |