> -----Original Message-----
> From: Alexander Graf [mailto:ag...@suse.de]
> Sent: Tuesday, May 15, 2012 7:59 PM
> To: Bhushan Bharat-R65777
> Cc: kvm-ppc@vger.kernel.org; Bhushan Bharat-R65777
> Subject: Re: [PATCH] KVM: PPC: booke: Added DECAR support
> 
> On 05/15/2012 09:33 AM, Bharat Bhushan wrote:
> > Added the decrementer auto-reload support.
> >
> > Signed-off-by: Bharat Bhushan<bharat.bhus...@freescale.com>
> > ---
> >   arch/powerpc/include/asm/kvm_host.h |    2 ++
> >   arch/powerpc/kvm/booke.c            |    5 +++++
> >   arch/powerpc/kvm/booke_emulate.c    |    7 ++++++-
> >   3 files changed, 13 insertions(+), 1 deletions(-)
> >
> > diff --git a/arch/powerpc/include/asm/kvm_host.h
> > b/arch/powerpc/include/asm/kvm_host.h
> > index d848cdc..1d6f89e 100644
> > --- a/arch/powerpc/include/asm/kvm_host.h
> > +++ b/arch/powerpc/include/asm/kvm_host.h
> > @@ -414,7 +414,9 @@ struct kvm_vcpu_arch {
> >     ulong mcsrr1;
> >     ulong mcsr;
> >     u32 dec;
> > +#ifdef CONFIG_BOOKE
> >     u32 decar;
> > +#endif
> >     u32 tbl;
> >     u32 tbu;
> >     u32 tcr;
> > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index
> > 72f13f4..86681ee 100644
> > --- a/arch/powerpc/kvm/booke.c
> > +++ b/arch/powerpc/kvm/booke.c
> > @@ -1267,6 +1267,11 @@ void kvmppc_decrementer_func(unsigned long data)
> >   {
> >     struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data;
> >
> > +   if (vcpu->arch.tcr&  TCR_ARE) {
> > +           vcpu->arch.dec = vcpu->arch.decar;
> > +           kvmppc_emulate_dec(vcpu);
> > +   }
> > +
> >     kvmppc_set_tsr_bits(vcpu, TSR_DIS);
> >   }
> >
> > diff --git a/arch/powerpc/kvm/booke_emulate.c
> > b/arch/powerpc/kvm/booke_emulate.c
> > index 6c76397..83c3796 100644
> > --- a/arch/powerpc/kvm/booke_emulate.c
> > +++ b/arch/powerpc/kvm/booke_emulate.c
> > @@ -129,6 +129,9 @@ int kvmppc_booke_emulate_mtspr(struct kvm_vcpu *vcpu, 
> > int
> sprn, ulong spr_val)
> >             kvmppc_set_tcr(vcpu, spr_val);
> >             break;
> >
> > +   case SPRN_DECAR:
> > +           vcpu->arch.decar = spr_val;
> > +           break;
> >     /*
> >      * Note: SPRG4-7 are user-readable.
> >      * These values are loaded into the real SPRGs when resuming the @@
> > -244,7 +247,9 @@ int kvmppc_booke_emulate_mfspr(struct kvm_vcpu *vcpu, int
> sprn, ulong *spr_val)
> >     case SPRN_TCR:
> >             *spr_val = vcpu->arch.tcr;
> >             break;
> > -
> > +   case SPRN_DECAR:
> > +           *spr_val = vcpu->arch.decar;
> > +           break;
> 
> DECAR can't be read. Otherwise looks good to me.

DECAR can be read on e500mc cores. So I will make this under CONFIG_KVM_E500MC.

What happens if DECAR is read on non e500mc? Is it treated as NOP or illegal 
instruction exception?

Thanks
-Bharat

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to