|
@@ -771,6 +771,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
|
|
|
|
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
BEGIN_FTR_SECTION
|
|
BEGIN_FTR_SECTION
|
|
|
|
+ /*
|
|
|
|
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
|
|
|
|
+ */
|
|
bl kvmppc_restore_tm
|
|
bl kvmppc_restore_tm
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
#endif
|
|
#endif
|
|
@@ -1630,6 +1633,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
|
|
|
|
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
BEGIN_FTR_SECTION
|
|
BEGIN_FTR_SECTION
|
|
|
|
+ /*
|
|
|
|
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
|
|
|
|
+ */
|
|
bl kvmppc_save_tm
|
|
bl kvmppc_save_tm
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
#endif
|
|
#endif
|
|
@@ -1749,7 +1755,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
|
|
/*
|
|
/*
|
|
* Are we running hash or radix ?
|
|
* Are we running hash or radix ?
|
|
*/
|
|
*/
|
|
- beq cr2,3f
|
|
|
|
|
|
+ ld r5, VCPU_KVM(r9)
|
|
|
|
+ lbz r0, KVM_RADIX(r5)
|
|
|
|
+ cmpwi cr2, r0, 0
|
|
|
|
+ beq cr2, 3f
|
|
|
|
|
|
/* Radix: Handle the case where the guest used an illegal PID */
|
|
/* Radix: Handle the case where the guest used an illegal PID */
|
|
LOAD_REG_ADDR(r4, mmu_base_pid)
|
|
LOAD_REG_ADDR(r4, mmu_base_pid)
|
|
@@ -2466,6 +2475,9 @@ _GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
|
|
|
|
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
BEGIN_FTR_SECTION
|
|
BEGIN_FTR_SECTION
|
|
|
|
+ /*
|
|
|
|
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
|
|
|
|
+ */
|
|
ld r9, HSTATE_KVM_VCPU(r13)
|
|
ld r9, HSTATE_KVM_VCPU(r13)
|
|
bl kvmppc_save_tm
|
|
bl kvmppc_save_tm
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
@@ -2578,6 +2590,9 @@ kvm_end_cede:
|
|
|
|
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
|
BEGIN_FTR_SECTION
|
|
BEGIN_FTR_SECTION
|
|
|
|
+ /*
|
|
|
|
+ * NOTE THAT THIS TRASHES ALL NON-VOLATILE REGISTERS INCLUDING CR
|
|
|
|
+ */
|
|
bl kvmppc_restore_tm
|
|
bl kvmppc_restore_tm
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
|
#endif
|
|
#endif
|