On 30.01.2013, at 14:29, Mihai Caraman wrote: > VCPU's MMUCFG register initialization should not depend on KVM_CAP_SW_TLB > ioctl call. Move it earlier into tlb initalization phase. Quite the contrary. The fact that there is an mfspr() in e500_mmu.c already tells us that the code is broken. The TLB guest code should only depend on input from the SW_TLB configuration. It's completely orthogonal to the host capabilities. Alex > > Signed-off-by: Mihai Caraman <mihai.caraman@xxxxxxxxxxxxx> > --- > arch/powerpc/kvm/e500_mmu.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kvm/e500_mmu.c b/arch/powerpc/kvm/e500_mmu.c > index 5c44759..bb1b2b0 100644 > --- a/arch/powerpc/kvm/e500_mmu.c > +++ b/arch/powerpc/kvm/e500_mmu.c > @@ -692,8 +692,6 @@ int kvm_vcpu_ioctl_config_tlb(struct kvm_vcpu *vcpu, > vcpu_e500->gtlb_offset[0] = 0; > vcpu_e500->gtlb_offset[1] = params.tlb_sizes[0]; > > - vcpu->arch.mmucfg = mfspr(SPRN_MMUCFG) & ~MMUCFG_LPIDSIZE; > - > vcpu->arch.tlbcfg[0] &= ~(TLBnCFG_N_ENTRY | TLBnCFG_ASSOC); > if (params.tlb_sizes[0] <= 2048) > vcpu->arch.tlbcfg[0] |= params.tlb_sizes[0]; > @@ -781,6 +779,8 @@ int kvmppc_e500_tlb_init(struct kvmppc_vcpu_e500 *vcpu_e500) > if (!vcpu_e500->g2h_tlb1_map) > goto err; > > + vcpu->arch.mmucfg = mfspr(SPRN_MMUCFG) & ~MMUCFG_LPIDSIZE; > + > /* Init TLB configuration register */ > vcpu->arch.tlbcfg[0] = mfspr(SPRN_TLB0CFG) & > ~(TLBnCFG_N_ENTRY | TLBnCFG_ASSOC); > -- > 1.7.4.1 > > > -- > To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html