All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.