diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index c9dfc6cb8c1f3189c2528c625c9b3911805ba582..0989ed6272fef334421b6d68083184d33d3e2186 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -741,6 +741,13 @@ static void spapr_cpu_reset(void *opaque) env->spr[SPR_HIOR] = 0; env->external_htab = (uint8_t *)spapr->htab; + if (kvm_enabled() && !env->external_htab) { + /* + * HV KVM, set external_htab to 1 so our ppc_hash64_load_hpte* + * functions do the right thing. + */ + env->external_htab = (void *)1; + } env->htab_base = -1; env->htab_mask = HTAB_SIZE(spapr) - 1; env->spr[SPR_SDR1] = (target_ulong)(uintptr_t)spapr->htab |