On Wed, Sep 21, 2016 at 11:42:15AM +0200, Thomas Huth wrote: > QEMU currently refuses to start with KVM-PR and only prints out > > qemu: fatal: Unknown MMU model 851972 > > when being started there. This is because commit 4322e8ced5aaac719 > ("ppc: Fix 64K pages support in full emulation") introduced a new > POWERPC_MMU_64K bit to indicate support for this page size, but > it never gets cleared on KVM-PR if the host kernel does not support > this. Thus we've got to turn off this bit in the mmu_model for KVM-PR. > > Signed-off-by: Thomas Huth <th...@redhat.com>
Applied to ppc-for-2.8, thanks. > --- > target-ppc/kvm.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c > index dcb68b9..6bdc804 100644 > --- a/target-ppc/kvm.c > +++ b/target-ppc/kvm.c > @@ -427,6 +427,7 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu) > CPUPPCState *env = &cpu->env; > long rampagesize; > int iq, ik, jq, jk; > + bool has_64k_pages = false; > > /* We only handle page sizes for 64-bit server guests for now */ > if (!(env->mmu_model & POWERPC_MMU_64)) { > @@ -470,6 +471,9 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu) > ksps->enc[jk].page_shift)) { > continue; > } > + if (ksps->enc[jk].page_shift == 16) { > + has_64k_pages = true; > + } > qsps->enc[jq].page_shift = ksps->enc[jk].page_shift; > qsps->enc[jq].pte_enc = ksps->enc[jk].pte_enc; > if (++jq >= PPC_PAGE_SIZES_MAX_SZ) { > @@ -484,6 +488,9 @@ static void kvm_fixup_page_sizes(PowerPCCPU *cpu) > if (!(smmu_info.flags & KVM_PPC_1T_SEGMENTS)) { > env->mmu_model &= ~POWERPC_MMU_1TSEG; > } > + if (!has_64k_pages) { > + env->mmu_model &= ~POWERPC_MMU_64K; > + } > } > #else /* defined (TARGET_PPC64) */ > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature