Skip to contentSkip to conversation

Patch "sparc/ftrace: Fix ftrace graph time measurement" has been added to the 4.11-stable tree

PATCH [email protected] 1 participant 1 message May 31, 2017

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

sparc/ftrace: Fix ftrace graph time measurement

to the 4.11-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
sparc-ftrace-fix-ftrace-graph-time-measurement.patch
and it can be found in the queue-4.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Wed May 31 16:49:09 JST 2017

From: "Liam R. Howlett" <[email protected]>
Date: Wed, 17 May 2017 11:47:00 -0400
Subject: sparc/ftrace: Fix ftrace graph time measurement

From: "Liam R. Howlett" <[email protected]>

[ Upstream commit 48078d2dac0a26f84f5f3ec704f24f7c832cce14 ]

The ftrace function_graph time measurements of a given function is not accurate according to those recorded by ftrace using the function filters. This change pulls the x86_64 fix from 'commit 722b3c746953 ("ftrace/graph: Trace function entry before updating index")' into the sparc specific prepare_ftrace_return which stops ftrace from counting interrupted tasks in the time measurement.

Example measurements for select_task_rq_fair running "hackbench 100 process 1000":

              |  tracing/trace_stat/function0  |  function_graph
 Before patch |  2.802 us                      |  4.255 us
 After patch  |  2.749 us                      |  3.094 us
---
 arch/sparc/kernel/ftrace.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
arch/sparc/kernel/ftrace.c +6 -7
@@ -130,17 +130,16 @@ unsigned long prepare_ftrace_return(unsi
 	if (unlikely(atomic_read(&current->tracing_graph_pause)))
 		return parent + 8UL;
 
-	if (ftrace_push_return_trace(parent, self_addr, &trace.depth,
-				     frame_pointer, NULL) == -EBUSY)
-		return parent + 8UL;
-
 	trace.func = self_addr;
+	trace.depth = current->curr_ret_stack + 1;
 
 	/* Only trace if the calling function expects to */
-	if (!ftrace_graph_entry(&trace)) {
-		current->curr_ret_stack--;
+	if (!ftrace_graph_entry(&trace))
+		return parent + 8UL;
+
+	if (ftrace_push_return_trace(parent, self_addr, &trace.depth,
+				     frame_pointer, NULL) == -EBUSY)
 		return parent + 8UL;
-	}
 
 	return return_hooker;
 }

Patches currently in stable-queue which might be from [email protected] are

queue-4.11/sparc-ftrace-fix-ftrace-graph-time-measurement.patch