aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/process.c
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2016-07-15 14:57:47 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2016-07-15 14:57:47 +1000
commitb5f1bf48f2644ee7151674819f1c15c86dca87f1 (patch)
tree2e3524ab1eb0a937c629062bec0bbc661f060bb2 /arch/powerpc/kernel/process.c
parentpowerpc: Make ppc_md.{halt, restart} __noreturn (diff)
parentpowerpc: Initialise pci_io_base as early as possible (diff)
downloadlinux-dev-b5f1bf48f2644ee7151674819f1c15c86dca87f1.tar.xz
linux-dev-b5f1bf48f2644ee7151674819f1c15c86dca87f1.zip
Merge tag 'powerpc-4.7-5' into next
Pull in the fixes we sent during 4.7, we have code we want to merge into next that depends on some of them.
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r--arch/powerpc/kernel/process.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index ddceeb96e8fb..a8cca88e972f 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1527,6 +1527,16 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
current->thread.regs = regs - 1;
}
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+ /*
+ * Clear any transactional state, we're exec()ing. The cause is
+ * not important as there will never be a recheckpoint so it's not
+ * user visible.
+ */
+ if (MSR_TM_SUSPENDED(mfmsr()))
+ tm_reclaim_current(0);
+#endif
+
memset(regs->gpr, 0, sizeof(regs->gpr));
regs->ctr = 0;
regs->link = 0;