• Paul Mackerras's avatar
    powerpc: Fix transactional FP/VMX/VSX unavailable handlers · 3ac8ff1c
    Paul Mackerras authored
    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: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    3ac8ff1c
traps.c 48.8 KB