• Michael Neuling's avatar
    powerpc/tm: Fix context switching TAR, PPR and DSCR SPRs · 28e61cc4
    Michael Neuling authored
    If a transaction is rolled back, the Target Address Register (TAR), Processor
    Priority Register (PPR) and Data Stream Control Register (DSCR) should be
    restored to the checkpointed values before the transaction began.  Any changes
    to these SPRs inside the transaction should not be visible in the abort
    handler.
    
    Currently Linux doesn't save or restore the checkpointed TAR, PPR or DSCR.  If
    we preempt a processes inside a transaction which has modified any of these, on
    process restore, that same transaction may be aborted we but we won't see the
    checkpointed versions of these SPRs.
    
    This adds checkpointed versions of these SPRs to the thread_struct and adds the
    save/restore of these three SPRs to the treclaim/trechkpt code.
    
    Without this if any of these SPRs are modified during a transaction, users may
    incorrectly see a speculated SPR value even if the transaction is aborted.
    Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
    Cc: <stable@vger.kernel.org> [v3.10]
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    28e61cc4
tm.S 10.4 KB