]> 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)
commit5fceb7966a79be96c6b652900d40f5ca65af88ec
tree1d423c94bc8d3199a42f16b6296c9d96e929982b
parent42367a5362c7a56eaa9fefc219676656c16a63dd
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: 5569d7adcc3d ("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