diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-03-23 19:26:10 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-03-23 19:26:10 -0400 |
commit | cd427485357c0c4b99f69719251baacf25946e11 (patch) | |
tree | ca1ff7eb2277dec42f1e20adc0b98c3c215ecfbe /arch/powerpc/kvm | |
parent | d410ae2126481a74bc5be4a6242c4a232c19a984 (diff) | |
parent | 48b16180d0d91324e5d2423c6d53d97bbe3dcc14 (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.S | 4 | ||||
-rw-r--r-- | arch/powerpc/kvm/book3s_interrupts.S | 4 | ||||
-rw-r--r-- | arch/powerpc/kvm/bookehv_interrupts.S | 21 |
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 | |||
75 | END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S) | 75 | END_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) |