[PATCH v2 3/4] powerpc: Save the TAR register earlier
Michael Neuling
mikey at neuling.org
Thu Aug 8 12:33:56 EST 2013
This moves us to use the save_tar() function to save the Target Address
Register (TAR) a lot earlier in __switch_to.
We need to save the TAR earlier as we may overwrite it in the transactional
memory reclaim/recheckpoint path.
Signed-off-by: Michael Neuling <mikey at neuling.org>
Cc: <stable at vger.kernel.org>
---
arch/powerpc/kernel/entry_64.S | 9 ---------
arch/powerpc/kernel/process.c | 5 +++++
2 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index cfb6de4..08f2e2e 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -448,15 +448,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_DSCR)
#ifdef CONFIG_PPC_BOOK3S_64
BEGIN_FTR_SECTION
- /*
- * Back up the TAR across context switches. Note that the TAR is not
- * available for use in the kernel. (To provide this, the TAR should
- * be backed up/restored on exception entry/exit instead, and be in
- * pt_regs. FIXME, this should be in pt_regs anyway (for debug).)
- */
- mfspr r0,SPRN_TAR
- std r0,THREAD_TAR(r3)
-
/* Event based branch registers */
mfspr r0, SPRN_BESCR
std r0, THREAD_BESCR(r3)
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index c517dbe..4ef77df 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -600,6 +600,11 @@ struct task_struct *__switch_to(struct task_struct *prev,
struct ppc64_tlb_batch *batch;
#endif
+ /* Save the tar before we do treclaim/trecheckpoint as these
+ * will change the TAR
+ */
+ save_tar(&prev->thread);
+
__switch_to_tm(prev);
#ifdef CONFIG_SMP
--
1.8.1.2
More information about the Linuxppc-dev
mailing list