[PATCH] KVM-PPC: Fix mtsrin in book3s_64 mmu

2009-12-19 Thread Alexander Graf
We were shifting the Ks/Kp/N bits one bit too far on mtsrin. It took
me some time to figure that out, so I also put in some debugging and a
comment explaining the conversion.

This fixes current OpenBIOS boot on PPC64 KVM.

Signed-off-by: Alexander Graf ag...@suse.de
---
 arch/powerpc/kvm/book3s_64_mmu.c |   22 +-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_mmu.c b/arch/powerpc/kvm/book3s_64_mmu.c
index 5598f88..e4beeb3 100644
--- a/arch/powerpc/kvm/book3s_64_mmu.c
+++ b/arch/powerpc/kvm/book3s_64_mmu.c
@@ -390,6 +390,26 @@ static void kvmppc_mmu_book3s_64_mtsrin(struct kvm_vcpu 
*vcpu, u32 srnum,
 {
u64 rb = 0, rs = 0;
 
+   /*
+* According to Book3 2.01 mtsrin is implemented as:
+*
+* The SLB entry specified by (RB)32:35 is loaded from register
+* RS, as follows.
+*
+* SLBE Bit Source  SLB Field
+*
+* 0:31 0x_ ESID-0:31
+* 32:35(RB)32:35   ESID-32:35
+* 36   0b1 V
+* 37:610x00_|| 0b0 VSID-0:24
+* 62:88(RS)37:63   VSID-25:51
+* 89:91(RS)33:35   Ks Kp N
+* 92   (RS)36  L ((RS)36 must be 0b0)
+* 93   0b0 C
+*/
+
+   dprintk(KVM MMU: mtsrin(0x%x, 0x%lx)\n, srnum, value);
+
/* ESID = srnum */
rb |= (srnum  0xf)  28;
/* Set the valid bit */
@@ -400,7 +420,7 @@ static void kvmppc_mmu_book3s_64_mtsrin(struct kvm_vcpu 
*vcpu, u32 srnum,
/* VSID = VSID */
rs |= (value  0xfff)  12;
/* flags = flags */
-   rs |= ((value  27)  0xf)  9;
+   rs |= ((value  28)  0x7)  9;
 
kvmppc_mmu_book3s_64_slbmte(vcpu, rs, rb);
 }
-- 
1.6.0.2

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


Re: [PATCH] KVM-PPC: Fix mtsrin in book3s_64 mmu

2009-12-19 Thread Hollis Blanchard
On Sat, Dec 19, 2009 at 9:07 AM, Alexander Graf ag...@suse.de wrote:
 We were shifting the Ks/Kp/N bits one bit too far on mtsrin. It took
 me some time to figure that out, so I also put in some debugging and a
 comment explaining the conversion.

 This fixes current OpenBIOS boot on PPC64 KVM.

 Signed-off-by: Alexander Graf ag...@suse.de

Acked-by: Hollis Blanchard hol...@penguinppc.org
--
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