KVM: PPC: e500: emulate SVR
Scott Wood [Tue, 29 Mar 2011 21:49:10 +0000 (16:49 -0500)]
Return the actual host SVR for now, as we already do for PVR.  Eventually
we may support Qemu overriding PVR/SVR if the situation is appropriate,
once we implement KVM_SET_SREGS on e500.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>

arch/powerpc/include/asm/kvm_e500.h
arch/powerpc/kvm/e500.c
arch/powerpc/kvm/e500_emulate.c

index 7fea26f..bb2a089 100644 (file)
@@ -43,6 +43,7 @@ struct kvmppc_vcpu_e500 {
 
        u32 host_pid[E500_PID_NUM];
        u32 pid[E500_PID_NUM];
+       u32 svr;
 
        u32 mas0;
        u32 mas1;
index e3768ee..0c1af12 100644 (file)
@@ -63,6 +63,7 @@ int kvmppc_core_vcpu_setup(struct kvm_vcpu *vcpu)
 
        /* Registers init */
        vcpu->arch.pvr = mfspr(SPRN_PVR);
+       vcpu_e500->svr = mfspr(SPRN_SVR);
 
        /* Since booke kvm only support one core, update all vcpus' PIR to 0 */
        vcpu->vcpu_id = 0;
index 8e3edfb..e2fb47f 100644 (file)
@@ -175,6 +175,8 @@ int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
                kvmppc_set_gpr(vcpu, rt, vcpu_e500->hid0); break;
        case SPRN_HID1:
                kvmppc_set_gpr(vcpu, rt, vcpu_e500->hid1); break;
+       case SPRN_SVR:
+               kvmppc_set_gpr(vcpu, rt, vcpu_e500->svr); break;
 
        case SPRN_MMUCSR0:
                kvmppc_set_gpr(vcpu, rt, 0); break;