]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Fix transactional FP/VMX/VSX unavailable handlers
authorPaul Mackerras <paulus@samba.org>
Mon, 13 Jan 2014 04:56:30 +0000 (15:56 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 15 Jan 2014 02:59:14 +0000 (13:59 +1100)
commitbeb7bea36ea5fb9e030358675054172fb6b7868b
tree080d06818982dfad75939133faa4ac34be6f348d
parent37a965b473237c266e873c1bbdd8da8e4f840b73
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>
arch/powerpc/kernel/traps.c