[v5, 02/20] powerpc: Always restore FPU/VEC/VSX if hardware transactional memory in use
Michael Ellerman
patch-notifications at ellerman.id.au
Wed Oct 5 13:36:23 AEDT 2016
On Fri, 2016-23-09 at 06:18:08 UTC, Cyril Bur wrote:
> Comment from arch/powerpc/kernel/process.c:967:
> If userspace is inside a transaction (whether active or
> suspended) and FP/VMX/VSX instructions have ever been enabled
> inside that transaction, then we have to keep them enabled
> and keep the FP/VMX/VSX state loaded while ever the transaction
> continues. The reason is that if we didn't, and subsequently
> got a FP/VMX/VSX unavailable interrupt inside a transaction,
> we don't know whether it's the same transaction, and thus we
> don't know which of the checkpointed state and the ransactional
> state to use.
>
> restore_math() restore_fp() and restore_altivec() currently may not
> restore the registers. It doesn't appear that this is more serious
> than a performance penalty. If the math registers aren't restored the
> userspace thread will still be run with the facility disabled.
> Userspace will not be able to read invalid values. On the first access
> it will take an facility unavailable exception and the kernel will
> detected an active transaction, at which point it will abort the
> transaction. There is the possibility for a pathological case
> preventing any progress by transactions, however, transactions
> are never guaranteed to make progress.
>
> Fixes: 70fe3d9 ("powerpc: Restore FPU/VEC/VSX if previously used")
> Signed-off-by: Cyril Bur <cyrilbur at gmail.com>
Series applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/dc16b553c949e81f37555777dc7bab
cheers
More information about the Linuxppc-dev
mailing list