• Valentin Rothberg's avatar
    powerpc/process: Fix CONFIG_ALIVEC typo in restore_tm_state() · 39715bf9
    Valentin Rothberg authored
    It should be ALTIVEC, not ALIVEC.
    
    Cyril explains: If a thread performs a transaction with altivec and then
    gets preempted for whatever reason, this bug may cause the kernel to not
    re-enable altivec when that thread runs again. This will result in an
    altivec unavailable fault, when that fault happens inside a user
    transaction the kernel has no choice but to enable altivec and doom the
    transaction.
    
    The result is that transactions using altivec may get aborted more often
    than they should.
    
    The difficulty in catching this with a selftest is my deliberate use of
    the word may above. Optimisations to avoid FPU/altivec/VSX faults mean
    that the kernel will always leave them on for 255 switches. This code
    prevents the kernel turning it off if it got to the 256th switch (and
    userspace was transactional).
    
    Fixes: dc16b553 ("powerpc: Always restore FPU/VEC/VSX if hardware transactional memory in use")
    Reviewed-by: default avatarCyril Bur <cyrilbur@gmail.com>
    Signed-off-by: default avatarValentin Rothberg <valentinrothberg@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    39715bf9
process.c 49.7 KB