linux_dsm_epyc7002/arch/powerpc
Michael Neuling f48e91e87e powerpc/tm: Fix FP and VMX register corruption
In commit dc3106690b ("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: dc3106690b ("powerpc: tm: Always use fp_state and vr_state to store live registers")
Cc: stable@vger.kernel.org # 4.9+
Signed-off-by: Michael Neuling <mikey@neuling.org>
Reviewed-by: cyrilbur@gmail.com
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-05-15 19:31:38 +10:00
..
boot powerpc/boot: Fix zImage TOC alignment 2017-03-08 10:39:32 +11:00
configs powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-05-02 15:53:46 -07:00
include powerpc/modules: If mprofile-kernel is enabled add it to vermagic 2017-05-15 19:31:38 +10:00
kernel powerpc/tm: Fix FP and VMX register corruption 2017-05-15 19:31:38 +10:00
kvm Merge branch 'kvm-ppc-next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD 2017-05-09 11:50:01 +02:00
lib powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
math-emu Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
mm scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
net powerpc updates for 4.11 part 1. 2017-02-22 10:30:38 -08:00
oprofile ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
perf powerpc/perf: Add Power8 mem_access event to sysfs 2017-04-19 20:00:23 +10:00
platforms powerpc updates for 4.12 part 2 2017-05-12 10:04:09 -07:00
purgatory kexec, x86/purgatory: Unbreak it and clean it up 2017-03-10 20:55:09 +01:00
sysdev powerpc updates for 4.12 part 2 2017-05-12 10:04:09 -07:00
tools powerpc: Add arch/powerpc/tools directory 2017-04-28 21:26:53 +10:00
xmon powerpc/xmon: Teach xmon oops about radix vectors 2017-05-01 18:52:58 +10:00
Kconfig powerpc updates for 4.12 part 2 2017-05-12 10:04:09 -07:00
Kconfig.debug powerpc/xmon: Enable disassembly files (compilation changes) 2017-02-15 20:02:42 +11:00
Makefile powerpc: Add arch/powerpc/tools directory 2017-04-28 21:26:53 +10:00
Makefile.postlink powerpc: Fix distclean with Makefile.postlink 2017-05-09 19:24:23 +10:00