Resending because the previous got spam-filtered: Nicholas Piggin <npiggin@xxxxxxxxx> writes: > This reverts much of commit c01015091a770 ("KVM: PPC: Book3S HV: Run HPT > guests on POWER9 radix hosts"), which was required to run HPT guests on > RPT hosts on early POWER9 CPUs without support for "mixed mode", which > meant the host could not run with MMU on while guests were running. > > This code has some corner case bugs, e.g., when the guest hits a machine > check or HMI the primary locks up waiting for secondaries to switch LPCR > to host, which they never do. This could all be fixed in software, but > most CPUs in production have mixed mode support, and those that don't > are believed to be all in installations that don't use this capability. > So simplify things and remove support. With this patch in a DD2.1 machine + indep_threads_mode=N + disable_radix, QEMU aborts and dumps registers, is that intended? Could we use the 'no_mixing_hpt_and_radix' logic in check_extension to advertise only KVM_CAP_PPC_MMU_RADIX to the guest via OV5 so it doesn't try to run hash? For instance, if I hack QEMU's 'spapr_dt_ov5_platform_support' from OV5_MMU_BOTH to OV5_MMU_RADIX_300 then it boots succesfuly, but the guest turns into radix, due to this code in prom_init: prom_parse_mmu_model: case OV5_FEAT(OV5_MMU_RADIX): /* Only Radix */ prom_debug("MMU - radix only\n"); if (prom_radix_disable) { /* * If we __have__ to do radix, we're better off ignoring * the command line rather than not booting. */ prom_printf("WARNING: Ignoring cmdline option disable_radix\n"); } support->radix_mmu = true; break; It seems we could explicitly say that the host does not support hash and that would align with the above code. > > Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> > ---