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.

Alex

--
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