Skip to contentSkip to conversation

Patch "powerpc: Add check_if_tm_restore_required() to giveup_all()" has been added to the 4.8-stable tree

PATCH [email protected] 1 participant 1 message Oct 29, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

powerpc: Add check_if_tm_restore_required() to giveup_all()

to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
powerpc-add-check_if_tm_restore_required-to-giveup_all.patch
and it can be found in the queue-4.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From b0f16b46988fde02a1e32078f66a3059d7e53bfc Mon Sep 17 00:00:00 2001

From: Cyril Bur <[email protected]>
Date: Fri, 23 Sep 2016 16:18:09 +1000
Subject: powerpc: Add check_if_tm_restore_required() to giveup_all()

From: Cyril Bur <[email protected]>

commit b0f16b46988fde02a1e32078f66a3059d7e53bfc upstream.

giveup_all() causes FPU/VMX/VSX facilities to be disabled in a threads MSR. If the thread performing the giveup was transactional, the kernel must record which facilities were in use before the giveup as the thread must have these facilities re-enabled on return to userspace.

Quoted 1 line
Quoted 1 line

From process.c:

/*
* This is called if we are on the way out to userspace and the
* TIF_RESTORE_TM flag is set. It checks if we need to reload
* FP and/or vector state and does so if necessary.
* 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 transactional
* state to use.
*/

Calling check_if_tm_restore_required() will set TIF_RESTORE_TM and save the MSR if needed.

Fixes c208505 ("powerpc: create giveup_all()")
---
 arch/powerpc/kernel/process.c |    1 +
 1 file changed, 1 insertion(+)
arch/powerpc/kernel/process.c +1 -0
@@ -445,6 +445,7 @@ void giveup_all(struct task_struct *tsk)
 		return;
 
 	msr_check_and_set(msr_all_available);
+	check_if_tm_restore_required(tsk);
 
 #ifdef CONFIG_PPC_FPU
 	if (usermsr & MSR_FP)

Patches currently in stable-queue which might be from [email protected] are

queue-4.8/powerpc-add-check_if_tm_restore_required-to-giveup_all.patch queue-4.8/powerpc-always-restore-fpu-vec-vsx-if-hardware-transactional-memory-in-use.patch