aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorMihai Caraman <mihai.caraman@freescale.com>2012-12-19 23:52:39 -0500
committerAlexander Graf <agraf@suse.de>2013-01-10 07:30:11 -0500
commitf2be655004ddc36f2c5fc5e541d481dcd782ab83 (patch)
treee1f4b11ddc0bee6a72ca95f2e57bdefad566fe31 /arch/powerpc
parent50c7bb80b5bd5a9962905306dd2292eeb9857d46 (diff)
KVM: PPC: Fix mfspr/mtspr MMUCFG emulation
On mfspr/mtspr emulation path Book3E's MMUCFG SPR with value 1015 clashes with G4's MSSSR0 SPR. Move MSSSR0 emulation from generic part to Books3S. MSSSR0 also clashes with Book3S's DABRX SPR. DABRX was not explicitly handled so Book3S execution flow will behave as before. Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kvm/book3s_emulate.c2
-rw-r--r--arch/powerpc/kvm/emulate.c5
2 files changed, 2 insertions, 5 deletions
diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c
index c88161bed8df..836c56975e21 100644
--- a/arch/powerpc/kvm/book3s_emulate.c
+++ b/arch/powerpc/kvm/book3s_emulate.c
@@ -455,6 +455,7 @@ int kvmppc_core_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, ulong spr_val)
455 case SPRN_PMC3_GEKKO: 455 case SPRN_PMC3_GEKKO:
456 case SPRN_PMC4_GEKKO: 456 case SPRN_PMC4_GEKKO:
457 case SPRN_WPAR_GEKKO: 457 case SPRN_WPAR_GEKKO:
458 case SPRN_MSSSR0:
458 break; 459 break;
459unprivileged: 460unprivileged:
460 default: 461 default:
@@ -551,6 +552,7 @@ int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val)
551 case SPRN_PMC3_GEKKO: 552 case SPRN_PMC3_GEKKO:
552 case SPRN_PMC4_GEKKO: 553 case SPRN_PMC4_GEKKO:
553 case SPRN_WPAR_GEKKO: 554 case SPRN_WPAR_GEKKO:
555 case SPRN_MSSSR0:
554 *spr_val = 0; 556 *spr_val = 0;
555 break; 557 break;
556 default: 558 default:
diff --git a/arch/powerpc/kvm/emulate.c b/arch/powerpc/kvm/emulate.c
index b0855e5d8905..71abcf4e2bda 100644
--- a/arch/powerpc/kvm/emulate.c
+++ b/arch/powerpc/kvm/emulate.c
@@ -149,8 +149,6 @@ static int kvmppc_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn, int rs)
149 case SPRN_TBWL: break; 149 case SPRN_TBWL: break;
150 case SPRN_TBWU: break; 150 case SPRN_TBWU: break;
151 151
152 case SPRN_MSSSR0: break;
153
154 case SPRN_DEC: 152 case SPRN_DEC:
155 vcpu->arch.dec = spr_val; 153 vcpu->arch.dec = spr_val;
156 kvmppc_emulate_dec(vcpu); 154 kvmppc_emulate_dec(vcpu);
@@ -201,9 +199,6 @@ static int kvmppc_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn, int rt)
201 case SPRN_PIR: 199 case SPRN_PIR:
202 spr_val = vcpu->vcpu_id; 200 spr_val = vcpu->vcpu_id;
203 break; 201 break;
204 case SPRN_MSSSR0:
205 spr_val = 0;
206 break;
207 202
208 /* Note: mftb and TBRL/TBWL are user-accessible, so 203 /* Note: mftb and TBRL/TBWL are user-accessible, so
209 * the guest can always access the real TB anyways. 204 * the guest can always access the real TB anyways.