linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND] arm64: arch_timer: fix the infinite recursion when enable ftrace and erratum workaround
@ 2017-07-09  8:30 Ding Tianhong
  2017-07-10  6:12 ` Hanjun Guo
  2017-07-10 11:22 ` Mark Rutland
  0 siblings, 2 replies; 6+ messages in thread
From: Ding Tianhong @ 2017-07-09  8:30 UTC (permalink / raw)
  To: linux-arm-kernel

When enable preempt and debug ftrace, and perform the following steps, the
system will hang:
mount -t debugfs nodev /sys/kernel/debug/
cd /sys/kernel/debug/tracing/
echo function_graph > current_tracer

This is because tracing the preempt_disable/enable calls would cause
trace_clock() which would get local timer to go into infinite recursion
when enable the arch timer erratum workaround for some chips, so Prevent
tracing of preempt_disable/enable() in arch_timer_reg_read_stable().

This problem is similar to the fixed by upstream commit 96b3d28bf4
("sched/clock: Prevent tracing recursion in sched_clock_cpu()").

Fixes: 6acc71ccac71 ("arm64: arch_timer: Allows a CPU-specific erratum to only affect a subset of CPUs")
Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
---
 arch/arm64/include/asm/arch_timer.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
index 74d08e4..67bb7a4 100644
--- a/arch/arm64/include/asm/arch_timer.h
+++ b/arch/arm64/include/asm/arch_timer.h
@@ -65,13 +65,13 @@ struct arch_timer_erratum_workaround {
 	u64 _val;							\
 	if (needs_unstable_timer_counter_workaround()) {		\
 		const struct arch_timer_erratum_workaround *wa;		\
-		preempt_disable();					\
+		preempt_disable_notrace();				\
 		wa = __this_cpu_read(timer_unstable_counter_workaround); \
 		if (wa && wa->read_##reg)				\
 			_val = wa->read_##reg();			\
 		else							\
 			_val = read_sysreg(reg);			\
-		preempt_enable();					\
+		preempt_enable_notrace();				\
 	} else {							\
 		_val = read_sysreg(reg);				\
 	}								\
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-07-31 15:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-09  8:30 [PATCH RESEND] arm64: arch_timer: fix the infinite recursion when enable ftrace and erratum workaround Ding Tianhong
2017-07-10  6:12 ` Hanjun Guo
2017-07-10 11:22 ` Mark Rutland
2017-07-10 13:54   ` Marc Zyngier
2017-07-26  2:42   ` Ding Tianhong
2017-07-31 15:33     ` Daniel Lezcano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).