]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/process: Fix CONFIG_ALIVEC typo in restore_tm_state()
authorValentin Rothberg <valentinrothberg@gmail.com>
Wed, 5 Oct 2016 05:57:26 +0000 (07:57 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 27 Oct 2016 10:52:59 +0000 (21:52 +1100)
commit39715bf972ed4fee18fe5409609a971fb16b1771
tree1d423c94bc8d3199a42f16b6296c9d96e929982b
parent09b7e37b18eecc1e347f4b1a3bc863f32801f634
powerpc/process: Fix CONFIG_ALIVEC typo in restore_tm_state()

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: dc16b553c949 ("powerpc: Always restore FPU/VEC/VSX if hardware transactional memory in use")
Reviewed-by: Cyril Bur <cyrilbur@gmail.com>
Signed-off-by: Valentin Rothberg <valentinrothberg@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/process.c