diff options
author | Paul Mackerras <paulus@samba.org> | 2014-01-13 15:56:30 +1100 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-01-15 13:59:14 +1100 |
commit | 3ac8ff1c475bda7174fce63230c0932454287cd5 (patch) | |
tree | 080d06818982dfad75939133faa4ac34be6f348d /arch/powerpc/kernel/process.c | |
parent | d31626f70b6103f4d9153b75d07e0e8795728cc9 (diff) | |
download | linux-3ac8ff1c475bda7174fce63230c0932454287cd5.tar.gz linux-3ac8ff1c475bda7174fce63230c0932454287cd5.tar.bz2 linux-3ac8ff1c475bda7174fce63230c0932454287cd5.zip |
powerpc: Fix transactional FP/VMX/VSX unavailable handlers
Currently, if a process starts a transaction and then takes an
exception because the FPU, VMX or VSX unit is unavailable to it,
we end up corrupting any FP/VMX/VSX state that was valid before
the interrupt. For example, if the process starts a transaction
with the FPU available to it but VMX unavailable, and then does
a VMX instruction inside the transaction, the FP state gets
corrupted.
Loading up the desired state generally involves doing a reclaim
and a recheckpoint. To avoid corrupting already-valid state, we have
to be careful not to reload that state from the thread_struct
between the reclaim and the recheckpoint (since the thread_struct
values are stale by now), and we have to reload that state from
the transact_fp/vr arrays after the recheckpoint to get back the
current transactional values saved there by the reclaim.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/process.c')
0 files changed, 0 insertions, 0 deletions