Add some debug information into the TM subsystem. When enable, now it prints when there is a reclaim, recheckpoint or lazy TM disabling.
Signed-off-by: Breno Leitao <lei...@debian.org> --- arch/powerpc/kernel/process.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 849591bf0881..8a9c298928f9 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -879,6 +879,8 @@ static void tm_reclaim_thread(struct thread_struct *thr, uint8_t cause) if (!MSR_TM_SUSPENDED(mfmsr())) return; + TM_DEBUG("TM reclaim thread at 0x%lx, MSR=%lx\n", thr->regs->nip, + thr->regs->msr); giveup_all(container_of(thr, struct task_struct, thread)); tm_reclaim(thr, cause); @@ -921,6 +923,8 @@ void tm_recheckpoint(struct thread_struct *thread) if (!(thread->regs->msr & MSR_TM)) return; + TM_DEBUG("TM recheckpoint at 0x%lx, MSR=%lx\n", thread->regs->nip, + thread->regs->msr); /* We really can't be interrupted here as the TEXASR registers can't * change and later in the trecheckpoint code, we have a userspace R1. * So let's hard disable over this region. @@ -1001,8 +1005,11 @@ static inline void __switch_to_tm(struct task_struct *prev, * that disables the TM and reenables the laziness * save/restore */ - if (prev->thread.load_tm == 0) + if (prev->thread.load_tm == 0) { prev->thread.regs->msr &= ~MSR_TM; + TM_DEBUG("Disabling TM facility for process %s (%lx)\n", + prev->comm, prev->pid); + } } } @@ -1052,6 +1059,7 @@ void restore_tm_state(struct pt_regs *regs) if (!MSR_TM_ACTIVE(regs->msr)) return; + TM_DEBUG("Restore TM state at 0x%lx, MSR=%lx\n", regs->nip, regs->msr); tm_enable(); /* The only place we recheckpoint */ tm_recheckpoint(¤t->thread); -- 2.19.0