aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-03-23 19:26:10 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-03-23 19:26:10 -0400
commitcd427485357c0c4b99f69719251baacf25946e11 (patch)
treeca1ff7eb2277dec42f1e20adc0b98c3c215ecfbe /arch/powerpc/kvm
parentd410ae2126481a74bc5be4a6242c4a232c19a984 (diff)
parent48b16180d0d91324e5d2423c6d53d97bbe3dcc14 (diff)
Merge remote-tracking branch 'scott/next' into next
Freescale updates from Scott. Mostly support for critical and machine check exceptions on 64-bit BookE, some new PCI suspend/resume work and misc bits.
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r--arch/powerpc/kvm/book3s_hv_rmhandlers.S4
-rw-r--r--arch/powerpc/kvm/book3s_interrupts.S4
-rw-r--r--arch/powerpc/kvm/bookehv_interrupts.S21
3 files changed, 19 insertions, 10 deletions
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index e66d4ec04d95..fbfca5778b0b 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -75,8 +75,8 @@ BEGIN_FTR_SECTION
75END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S) 75END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
76 76
77 /* Restore SPRG3 */ 77 /* Restore SPRG3 */
78 ld r3,PACA_SPRG3(r13) 78 ld r3,PACA_SPRG_VDSO(r13)
79 mtspr SPRN_SPRG3,r3 79 mtspr SPRN_SPRG_VDSO_WRITE,r3
80 80
81 /* Reload the host's PMU registers */ 81 /* Reload the host's PMU registers */
82 ld r3, PACALPPACAPTR(r13) /* is the host using the PMU? */ 82 ld r3, PACALPPACAPTR(r13) /* is the host using the PMU? */
diff --git a/arch/powerpc/kvm/book3s_interrupts.S b/arch/powerpc/kvm/book3s_interrupts.S
index f779450cb07c..3533c999194a 100644
--- a/arch/powerpc/kvm/book3s_interrupts.S
+++ b/arch/powerpc/kvm/book3s_interrupts.S
@@ -153,8 +153,8 @@ kvm_start_lightweight:
153 * Reload kernel SPRG3 value. 153 * Reload kernel SPRG3 value.
154 * No need to save guest value as usermode can't modify SPRG3. 154 * No need to save guest value as usermode can't modify SPRG3.
155 */ 155 */
156 ld r3, PACA_SPRG3(r13) 156 ld r3, PACA_SPRG_VDSO(r13)
157 mtspr SPRN_SPRG3, r3 157 mtspr SPRN_SPRG_VDSO_WRITE, r3
158#endif /* CONFIG_PPC_BOOK3S_64 */ 158#endif /* CONFIG_PPC_BOOK3S_64 */
159 159
160 /* R7 = vcpu */ 160 /* R7 = vcpu */
diff --git a/arch/powerpc/kvm/bookehv_interrupts.S b/arch/powerpc/kvm/bookehv_interrupts.S
index e4185f6b3309..a1712b818a5f 100644
--- a/arch/powerpc/kvm/bookehv_interrupts.S
+++ b/arch/powerpc/kvm/bookehv_interrupts.S
@@ -229,17 +229,20 @@
229 stw r10, VCPU_CR(r4) 229 stw r10, VCPU_CR(r4)
230 PPC_STL r11, VCPU_GPR(R4)(r4) 230 PPC_STL r11, VCPU_GPR(R4)(r4)
231 PPC_STL r5, VCPU_GPR(R5)(r4) 231 PPC_STL r5, VCPU_GPR(R5)(r4)
232 .if \type == EX_CRIT
233 PPC_LL r5, (\paca_ex + EX_R13)(r13)
234 .else
235 mfspr r5, \scratch
236 .endif
237 PPC_STL r6, VCPU_GPR(R6)(r4) 232 PPC_STL r6, VCPU_GPR(R6)(r4)
238 PPC_STL r8, VCPU_GPR(R8)(r4) 233 PPC_STL r8, VCPU_GPR(R8)(r4)
239 PPC_STL r9, VCPU_GPR(R9)(r4) 234 PPC_STL r9, VCPU_GPR(R9)(r4)
240 PPC_STL r5, VCPU_GPR(R13)(r4) 235 .if \type == EX_TLB
236 PPC_LL r5, EX_TLB_R13(r12)
237 PPC_LL r6, EX_TLB_R10(r12)
238 PPC_LL r8, EX_TLB_R11(r12)
239 mfspr r12, \scratch
240 .else
241 mfspr r5, \scratch
241 PPC_LL r6, (\paca_ex + \ex_r10)(r13) 242 PPC_LL r6, (\paca_ex + \ex_r10)(r13)
242 PPC_LL r8, (\paca_ex + \ex_r11)(r13) 243 PPC_LL r8, (\paca_ex + \ex_r11)(r13)
244 .endif
245 PPC_STL r5, VCPU_GPR(R13)(r4)
243 PPC_STL r3, VCPU_GPR(R3)(r4) 246 PPC_STL r3, VCPU_GPR(R3)(r4)
244 PPC_STL r7, VCPU_GPR(R7)(r4) 247 PPC_STL r7, VCPU_GPR(R7)(r4)
245 PPC_STL r12, VCPU_GPR(R12)(r4) 248 PPC_STL r12, VCPU_GPR(R12)(r4)
@@ -435,10 +438,16 @@ _GLOBAL(kvmppc_resume_host)
435 PPC_STL r5, VCPU_LR(r4) 438 PPC_STL r5, VCPU_LR(r4)
436 mfspr r7, SPRN_SPRG5 439 mfspr r7, SPRN_SPRG5
437 stw r3, VCPU_VRSAVE(r4) 440 stw r3, VCPU_VRSAVE(r4)
441#ifdef CONFIG_64BIT
442 PPC_LL r3, PACA_SPRG_VDSO(r13)
443#endif
438 PPC_STD(r6, VCPU_SHARED_SPRG4, r11) 444 PPC_STD(r6, VCPU_SHARED_SPRG4, r11)
439 mfspr r8, SPRN_SPRG6 445 mfspr r8, SPRN_SPRG6
440 PPC_STD(r7, VCPU_SHARED_SPRG5, r11) 446 PPC_STD(r7, VCPU_SHARED_SPRG5, r11)
441 mfspr r9, SPRN_SPRG7 447 mfspr r9, SPRN_SPRG7
448#ifdef CONFIG_64BIT
449 mtspr SPRN_SPRG_VDSO_WRITE, r3
450#endif
442 PPC_STD(r8, VCPU_SHARED_SPRG6, r11) 451 PPC_STD(r8, VCPU_SHARED_SPRG6, r11)
443 mfxer r3 452 mfxer r3
444 PPC_STD(r9, VCPU_SHARED_SPRG7, r11) 453 PPC_STD(r9, VCPU_SHARED_SPRG7, r11)