powerpc/radix: Remove trace_tlbie call from radix__flush_tlb_all

Message ID 151203273555.16587.12957613472048945542.stgit@jupiter.in.ibm.com
State New
Headers show
Series
  • powerpc/radix: Remove trace_tlbie call from radix__flush_tlb_all
Related show

Commit Message

Mahesh J Salgaonkar Nov. 30, 2017, 9:05 a.m.
From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>

radix__flush_tlb_all() is called only in kexec path in real mode and any
tracepoints at this stage will make kexec to fail if enabled.

To verify enable tlbie trace before kexec.

$ echo 1 > /sys/kernel/debug/tracing/events/powerpc/tlbie/enable
== kexec into new kernel and kexec fails.

Fix this by not calling trace_tlbie from radix__flush_tlb_all().

Fixes: 0428491cba92 ("powerpc/mm: Trace tlbie(l) instructions")
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
---
 arch/powerpc/mm/tlb-radix.c |    2 --
 1 file changed, 2 deletions(-)

Comments

Balbir Singh Nov. 30, 2017, 11:46 a.m. | #1
On Thu, Nov 30, 2017 at 8:05 PM, Mahesh J Salgaonkar
<mahesh@linux.vnet.ibm.com> wrote:
> From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
>
> radix__flush_tlb_all() is called only in kexec path in real mode and any
> tracepoints at this stage will make kexec to fail if enabled.
>
> To verify enable tlbie trace before kexec.
>
> $ echo 1 > /sys/kernel/debug/tracing/events/powerpc/tlbie/enable
> == kexec into new kernel and kexec fails.
>
> Fix this by not calling trace_tlbie from radix__flush_tlb_all().
>
> Fixes: 0428491cba92 ("powerpc/mm: Trace tlbie(l) instructions")
> Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
> ---

Acked-by: Balbir Singh <bsingharora@gmail.com>

Patch

diff --git a/arch/powerpc/mm/tlb-radix.c b/arch/powerpc/mm/tlb-radix.c
index 884f4b7..913a2b8 100644
--- a/arch/powerpc/mm/tlb-radix.c
+++ b/arch/powerpc/mm/tlb-radix.c
@@ -600,14 +600,12 @@  void radix__flush_tlb_all(void)
 	 */
 	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
 		     : : "r"(rb), "i"(r), "i"(1), "i"(ric), "r"(rs) : "memory");
-	trace_tlbie(0, 0, rb, rs, ric, prs, r);
 	/*
 	 * now flush host entires by passing PRS = 0 and LPID == 0
 	 */
 	asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
 		     : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(0) : "memory");
 	asm volatile("eieio; tlbsync; ptesync": : :"memory");
-	trace_tlbie(0, 0, rb, 0, ric, prs, r);
 }
 
 void radix__flush_tlb_pte_p9_dd1(unsigned long old_pte, struct mm_struct *mm,