[RFC PATCH 05/11] powerpc/tm: Function that updates the failure code
Michael Neuling
mikey at neuling.org
Tue Sep 18 11:29:21 AEST 2018
On Wed, 2018-09-12 at 16:40 -0300, Breno Leitao wrote:
> Now the transaction reclaims happens very earlier in the trap handler, and
> it is impossible to know precisely, at that early time, what should be set
> as the failure cause for some specific cases, as, if the task will be
> rescheduled, thus, the transaction abort case should be updated from
> TM_CAUSE_MISC to TM_CAUSE_RESCHED, for example.
Please add comments to where this is used (in EXCEPTION_COMMON macro I think)
that say this might happen.
>
> This patch creates a function that will update TEXASR special purpose
> register in the task thread and set the failure code which will be
> moved to the live register afterward.
>
> Signed-off-by: Breno Leitao <leitao at debian.org>
> ---
> arch/powerpc/kernel/process.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
> index 54fddf03b97a..fe063c0142e3 100644
> --- a/arch/powerpc/kernel/process.c
> +++ b/arch/powerpc/kernel/process.c
> @@ -85,6 +85,7 @@ extern unsigned long _get_SP(void);
> * other paths that we should never reach with suspend disabled.
> */
> bool tm_suspend_disabled __ro_after_init = false;
> +static void tm_fix_failure_cause(struct task_struct *task, uint8_t cause);
>
> static void check_if_tm_restore_required(struct task_struct *tsk)
> {
> @@ -988,6 +989,14 @@ void tm_recheckpoint(struct thread_struct *thread)
> local_irq_restore(flags);
> }
>
> +/* Change thread->tm.texasr failure code */
> +static void tm_fix_failure_cause(struct task_struct *task, uint8_t cause)
> +{
> + /* Clear the cause first */
> + task->thread.tm_texasr &= ~TEXASR_FC;
> + task->thread.tm_texasr |= (unsigned long) cause << 56;
> +}
> +
> static inline void tm_recheckpoint_new_task(struct task_struct *new)
> {
> if (!cpu_has_feature(CPU_FTR_TM))
More information about the Linuxppc-dev
mailing list