> -----Original Message----- > From: Alexander Graf [mailto:agraf@xxxxxxx] > Sent: Wednesday, May 16, 2012 2:36 PM > To: Bhushan Bharat-R65777 > Cc: kvm-ppc@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] KVM: PPC: booke: Added DECAR support > > On 05/16/2012 08:57 AM, Bhushan Bharat-R65777 wrote: > > > >> -----Original Message----- > >> From: Alexander Graf [mailto:agraf@xxxxxxx] > >> Sent: Tuesday, May 15, 2012 7:59 PM > >> To: Bhushan Bharat-R65777 > >> Cc: kvm-ppc@xxxxxxxxxxxxxxx; 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.bhushan@xxxxxxxxxxxxx> > >>> --- > >>> 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? > > I would assume the latter. NOPs usually don't happen. If anything, it would > return 0. > > See section 9.4 in the PowerISA: > > The contents of the Decrementer Auto-Reload Register cannot be read. The > contents of bits 32:63 of register RS can be written to the Decrementer Auto- > Reload Register using the mtspr instruction. > > Could you please paste the respective passage of the e500mc manual that declares > DECAR as readable? I have booke -4 version 1.05. There are remarks at 3 place 1) Table 2-1: There is remark " DECAR is defined by the architecture to be write-only, however the e500mc allows it to be read." ------------ 2) 2.8.5 Decrementer Auto-Reload Register (DECAR) "For e500V4, the DECAR can be read in hypervisor state, although the architecture defines it as a write-only register." -------------- 3) Table 4.37 Hypervisor Privilege on Read - Yes Hypervisor Privilege on Write - Yes Remark: e500mc allows reading of DECAR although Power ISA does not define it. ---------------- I verified with my unit test that reading DECAR traps in KVM on e500mc. Thanks -Bharat -- 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