aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/kvm/book3s_hv_rmhandlers.S10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index 6716db3f1a2b..12d7e4c8dc54 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -191,6 +191,7 @@ kvmppc_primary_no_guest:
191 li r3, NAPPING_NOVCPU 191 li r3, NAPPING_NOVCPU
192 stb r3, HSTATE_NAPPING(r13) 192 stb r3, HSTATE_NAPPING(r13)
193 193
194 li r3, 0 /* Don't wake on privileged (OS) doorbell */
194 b kvm_do_nap 195 b kvm_do_nap
195 196
196kvm_novcpu_wakeup: 197kvm_novcpu_wakeup:
@@ -2129,10 +2130,13 @@ _GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
2129 bl kvmhv_accumulate_time 2130 bl kvmhv_accumulate_time
2130#endif 2131#endif
2131 2132
2133 lis r3, LPCR_PECEDP@h /* Do wake on privileged doorbell */
2134
2132 /* 2135 /*
2133 * Take a nap until a decrementer or external or doobell interrupt 2136 * Take a nap until a decrementer or external or doobell interrupt
2134 * occurs, with PECE1, PECE0 and PECEDP set in LPCR. Also clear the 2137 * occurs, with PECE1 and PECE0 set in LPCR.
2135 * runlatch bit before napping. 2138 * On POWER8, if we are ceding, also set PECEDP.
2139 * Also clear the runlatch bit before napping.
2136 */ 2140 */
2137kvm_do_nap: 2141kvm_do_nap:
2138 mfspr r0, SPRN_CTRLF 2142 mfspr r0, SPRN_CTRLF
@@ -2144,7 +2148,7 @@ kvm_do_nap:
2144 mfspr r5,SPRN_LPCR 2148 mfspr r5,SPRN_LPCR
2145 ori r5,r5,LPCR_PECE0 | LPCR_PECE1 2149 ori r5,r5,LPCR_PECE0 | LPCR_PECE1
2146BEGIN_FTR_SECTION 2150BEGIN_FTR_SECTION
2147 oris r5,r5,LPCR_PECEDP@h 2151 rlwimi r5, r3, 0, LPCR_PECEDP
2148END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) 2152END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
2149 mtspr SPRN_LPCR,r5 2153 mtspr SPRN_LPCR,r5
2150 isync 2154 isync