summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/process.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-12 11:40:15 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-12 11:40:15 -0700
commit192c028b6ac972df25fd624f94a94d038fbdb66c (patch)
tree4dd9d13ffd239e4d7c61401f892989742c671fa8 /arch/powerpc/kernel/process.c
parentea1990c3796e7550e6f240983f2d1b8e5ecf3891 (diff)
parentfa389e220254c69ffae0d403eac4146171062d08 (diff)
Merge 3.14-rc6 into usb-next
We want the USB fixes in here as well.
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r--arch/powerpc/kernel/process.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 8d4c247f1738..af064d28b365 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -1048,6 +1048,15 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
flush_altivec_to_thread(src);
flush_vsx_to_thread(src);
flush_spe_to_thread(src);
+ /*
+ * Flush TM state out so we can copy it. __switch_to_tm() does this
+ * flush but it removes the checkpointed state from the current CPU and
+ * transitions the CPU out of TM mode. Hence we need to call
+ * tm_recheckpoint_new_task() (on the same task) to restore the
+ * checkpointed state back and the TM mode.
+ */
+ __switch_to_tm(src);
+ tm_recheckpoint_new_task(src);
*dst = *src;