• Michael Neuling's avatar
    powerpc/tm: Abort on emulation and alignment faults · 6ce6c629
    Michael Neuling authored
    If we are emulating an instruction inside an active user transaction that
    touches memory, the kernel can't emulate it as it operates in transactional
    suspend context.  We need to abort these transactions and send them back to
    userspace for the hardware to rollback.
    
    We can service these if the user transaction is in suspend mode, since the
    kernel will operate in the same suspend context.
    
    This adds a check to all alignment faults and to specific instruction
    emulations (only string instructions for now).  If the user process is in an
    active (non-suspended) transaction, we abort the transaction go back to
    userspace allowing the HW to roll back the transaction and tell the user of the
    failure.  This also adds new tm abort cause codes to report the reason of the
    persistent error to the user.
    
    Crappy test case here http://neuling.org/devel/junkcode/aligntm.cSigned-off-by: default avatarMichael Neuling <mikey@neuling.org>
    Cc: <stable@vger.kernel.org> # v3.9
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    6ce6c629
traps.c 46.9 KB