In cpu_ppc_set_papr() the UPRT and GTSE bits of the LPCR are initialized based on on ppc64_radix_guest(). Which seems reasonable, except that ppc64_radix_guest() is based on spapr->patb_entry which is only set up in spapr_machine_reset, called much later than cpu_ppc_set_papr().
So the initialization here is pointless. The base cpu initialization already sets a value that's good enough until the guest uses an hcall to configure it's preferred MMU mode. Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> --- target/ppc/translate_init.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index bb79d23b50..14f346f441 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -8897,22 +8897,6 @@ void cpu_ppc_set_papr(PowerPCCPU *cpu, PPCVirtualHypervisor *vhyp) lpcr->default_value &= ~LPCR_RMLS; lpcr->default_value |= 1ull << LPCR_RMLS_SHIFT; - if (env->mmu_model == POWERPC_MMU_3_00) { - /* By default we choose legacy mode and switch to new hash or radix - * when a register process table hcall is made. So disable process - * tables and guest translation shootdown by default - * - * Hot-plugged CPUs inherit from the guest radix setting under - * KVM but not under TCG. Update the default LPCR to keep new - * CPUs in sync when radix is enabled. - */ - if (ppc64_radix_guest(cpu)) { - lpcr->default_value |= LPCR_UPRT | LPCR_GTSE; - } else { - lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); - } - } - /* Only enable Power-saving mode Exit Cause exceptions on the boot * CPU. The RTAS command start-cpu will enable them on secondaries. */ -- 2.14.3