APPLIED[artful]: [PATCH] [Zesty] powerpc/tm: Fix FP and VMX register corruption

Seth Forshee seth.forshee at
Wed May 24 12:41:35 UTC 2017

On Wed, May 17, 2017 at 11:19:39AM -0300, Breno Leitao wrote:
> From: Michael Neuling <mikey at>
> BugLink:
> In commit dc3106690b20 ("powerpc: tm: Always use fp_state and vr_state
> to store live registers"), a section of code was removed that copied
> the current state to checkpointed state. That code should not have been
> removed.
> When an FP (Floating Point) unavailable is taken inside a transaction,
> we need to abort the transaction. This is because at the time of the
> tbegin, the FP state is bogus so the state stored in the checkpointed
> registers is incorrect. To fix this, we treclaim (to get the
> checkpointed GPRs) and then copy the thread_struct FP live state into
> the checkpointed state. We then trecheckpoint so that the FP state is
> correctly restored into the CPU.
> The copying of the FP registers from live to checkpointed is what was
> missing.
> This simplifies the logic slightly from the original patch.
> tm_reclaim_thread() will now always write the checkpointed FP
> state. Either the checkpointed FP state will be written as part of
> the actual treclaim (in tm.S), or it'll be a copy of the live
> state. Which one we use is based on MSR[FP] from userspace.
> Similarly for VMX.
> Fixes: dc3106690b20 ("powerpc: tm: Always use fp_state and vr_state to store live registers")
> Cc: stable at # 4.9+
> Signed-off-by: Michael Neuling <mikey at>
> Reviewed-by: cyrilbur at
> Signed-off-by: Michael Ellerman <mpe at>
> (cherry picked from commit f48e91e87e67b56bef63393d1a02c6e22c1d7078)
> Signed-off-by: Breno Leitao <breno.leitao at>

Applied to artful/master-next.

More information about the kernel-team mailing list