Merge branch 'topic/ppc-kvm' into next

This commit is contained in:
Michael Ellerman 2024-09-12 21:57:53 +10:00
commit 5af16d4bab

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 |
@ -4049,7 +4057,6 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc)
/* Return to whole-core mode if we split the core earlier */
if (cmd_bit) {
unsigned long hid0 = mfspr(SPRN_HID0);
unsigned long loops = 0;
hid0 &= ~HID0_POWER8_DYNLPARDIS;
stat_bit = HID0_POWER8_2LPARMODE | HID0_POWER8_4LPARMODE;
@ -4061,7 +4068,6 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc)
if (!(hid0 & stat_bit))
break;
cpu_relax();
++loops;
}
split_info.do_nap = 0;
}