Commit 841741f2 authored by Scott Wood's avatar Scott Wood Committed by Avi Kivity

KVM: PPC: e500: Don't hardcode PIR=0

The hardcoded behavior prevents proper SMP support.

user space shall specify the vcpu's PIR as the vcpu id.
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 303b7c97
...@@ -761,7 +761,7 @@ static void get_sregs_arch206(struct kvm_vcpu *vcpu, ...@@ -761,7 +761,7 @@ static void get_sregs_arch206(struct kvm_vcpu *vcpu,
{ {
sregs->u.e.features |= KVM_SREGS_E_ARCH206; sregs->u.e.features |= KVM_SREGS_E_ARCH206;
sregs->u.e.pir = 0; sregs->u.e.pir = vcpu->vcpu_id;
sregs->u.e.mcsrr0 = vcpu->arch.mcsrr0; sregs->u.e.mcsrr0 = vcpu->arch.mcsrr0;
sregs->u.e.mcsrr1 = vcpu->arch.mcsrr1; sregs->u.e.mcsrr1 = vcpu->arch.mcsrr1;
sregs->u.e.decar = vcpu->arch.decar; sregs->u.e.decar = vcpu->arch.decar;
...@@ -774,7 +774,7 @@ static int set_sregs_arch206(struct kvm_vcpu *vcpu, ...@@ -774,7 +774,7 @@ static int set_sregs_arch206(struct kvm_vcpu *vcpu,
if (!(sregs->u.e.features & KVM_SREGS_E_ARCH206)) if (!(sregs->u.e.features & KVM_SREGS_E_ARCH206))
return 0; return 0;
if (sregs->u.e.pir != 0) if (sregs->u.e.pir != vcpu->vcpu_id)
return -EINVAL; return -EINVAL;
vcpu->arch.mcsrr0 = sregs->u.e.mcsrr0; vcpu->arch.mcsrr0 = sregs->u.e.mcsrr0;
......
...@@ -71,9 +71,6 @@ int kvmppc_core_vcpu_setup(struct kvm_vcpu *vcpu) ...@@ -71,9 +71,6 @@ int kvmppc_core_vcpu_setup(struct kvm_vcpu *vcpu)
vcpu->arch.pvr = mfspr(SPRN_PVR); vcpu->arch.pvr = mfspr(SPRN_PVR);
vcpu_e500->svr = mfspr(SPRN_SVR); vcpu_e500->svr = mfspr(SPRN_SVR);
/* Since booke kvm only support one core, update all vcpus' PIR to 0 */
vcpu->vcpu_id = 0;
vcpu->arch.cpu_type = KVM_CPU_E500V2; vcpu->arch.cpu_type = KVM_CPU_E500V2;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment