* [PATCH V3] time/sched_clock: mark sched_clock_read_begin/retry as notrace
@ 2020-09-29 8:20 quanyang.wang
2020-10-26 10:40 ` [tip: timers/urgent] time/sched_clock: Mark sched_clock_read_begin/retry() " tip-bot2 for Quanyang Wang
0 siblings, 1 reply; 2+ messages in thread
From: quanyang.wang @ 2020-09-29 8:20 UTC (permalink / raw)
To: linux-kernel
Cc: Peter Zijlstra, Thomas Gleixner, Leo Yan, Will Deacon, a.darwish,
Daniel Lezcano, Paul Cercueil, Randy Dunlap, ben.dooks
From: Quanyang Wang <quanyang.wang@windriver.com>
Since sched_clock_read_begin and sched_clock_read_retry are called
by notrace function sched_clock, they shouldn't be traceable either,
or else ftrace_graph_caller will run into a dead loop on the path
as below (arm for instance):
ftrace_graph_caller
prepare_ftrace_return
function_graph_enter
ftrace_push_return_trace
trace_clock_local
sched_clock
sched_clock_read_begin/retry
Fixes: 1b86abc1c645 ("sched_clock: Expose struct clock_read_data")
Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
Changes:
V2: Add notrace to sched_clock_read_retry according to Peter's suggestion.
V3: Adjust the placement of notrace according to Peter's suggestion.
kernel/time/sched_clock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index 1c03eec6ca9b..f629e3f5afbe 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -68,13 +68,13 @@ static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift)
return (cyc * mult) >> shift;
}
-struct clock_read_data *sched_clock_read_begin(unsigned int *seq)
+notrace struct clock_read_data *sched_clock_read_begin(unsigned int *seq)
{
*seq = raw_read_seqcount_latch(&cd.seq);
return cd.read_data + (*seq & 1);
}
-int sched_clock_read_retry(unsigned int seq)
+notrace int sched_clock_read_retry(unsigned int seq)
{
return read_seqcount_retry(&cd.seq, seq);
}
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip: timers/urgent] time/sched_clock: Mark sched_clock_read_begin/retry() as notrace
2020-09-29 8:20 [PATCH V3] time/sched_clock: mark sched_clock_read_begin/retry as notrace quanyang.wang
@ 2020-10-26 10:40 ` tip-bot2 for Quanyang Wang
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Quanyang Wang @ 2020-10-26 10:40 UTC (permalink / raw)
To: linux-tip-commits
Cc: Quanyang Wang, Thomas Gleixner, Peter Zijlstra (Intel),
stable, x86, LKML
The following commit has been merged into the timers/urgent branch of tip:
Commit-ID: 4cd2bb12981165f865d2b8ed92b446b52310ef74
Gitweb: https://git.kernel.org/tip/4cd2bb12981165f865d2b8ed92b446b52310ef74
Author: Quanyang Wang <quanyang.wang@windriver.com>
AuthorDate: Tue, 29 Sep 2020 16:20:27 +08:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Mon, 26 Oct 2020 11:34:31 +01:00
time/sched_clock: Mark sched_clock_read_begin/retry() as notrace
Since sched_clock_read_begin() and sched_clock_read_retry() are called
by notrace function sched_clock(), they shouldn't be traceable either,
or else ftrace_graph_caller will run into a dead loop on the path
as below (arm for instance):
ftrace_graph_caller()
prepare_ftrace_return()
function_graph_enter()
ftrace_push_return_trace()
trace_clock_local()
sched_clock()
sched_clock_read_begin/retry()
Fixes: 1b86abc1c645 ("sched_clock: Expose struct clock_read_data")
Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20200929082027.16787-1-quanyang.wang@windriver.com
---
kernel/time/sched_clock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index 0642013..b1b9b12 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -68,13 +68,13 @@ static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift)
return (cyc * mult) >> shift;
}
-struct clock_read_data *sched_clock_read_begin(unsigned int *seq)
+notrace struct clock_read_data *sched_clock_read_begin(unsigned int *seq)
{
*seq = raw_read_seqcount_latch(&cd.seq);
return cd.read_data + (*seq & 1);
}
-int sched_clock_read_retry(unsigned int seq)
+notrace int sched_clock_read_retry(unsigned int seq)
{
return read_seqcount_latch_retry(&cd.seq, seq);
}
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-10-26 10:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-29 8:20 [PATCH V3] time/sched_clock: mark sched_clock_read_begin/retry as notrace quanyang.wang
2020-10-26 10:40 ` [tip: timers/urgent] time/sched_clock: Mark sched_clock_read_begin/retry() " tip-bot2 for Quanyang Wang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.