diff mbox

[2/2] perf: Fix ftrace builtin when kernel doesn't have function_graph

Message ID 1509546824-46165-3-git-send-email-julien.thierry@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Julien Thierry Nov. 1, 2017, 2:33 p.m. UTC
When linux is built without support for function graph tracer, the ftrace
builtin of perf will fail when trying to reset max_graph_depth because the
file does not exist. This prevents the use of function tracer from perf.

Do not attempt to write this file when the tracer in use is not
function_graph.

Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: linux-kernel@vger.kernel.org
---
 tools/perf/builtin-ftrace.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
1.9.1

Comments

Steven Rostedt Nov. 1, 2017, 4:44 p.m. UTC | #1
On Wed,  1 Nov 2017 14:33:44 +0000
Julien Thierry <julien.thierry@arm.com> wrote:

> When linux is built without support for function graph tracer, the ftrace
> builtin of perf will fail when trying to reset max_graph_depth because the
> file does not exist. This prevents the use of function tracer from perf.
> 
> Do not attempt to write this file when the tracer in use is not
> function_graph.
> 
> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: linux-kernel@vger.kernel.org
> ---
>  tools/perf/builtin-ftrace.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
> index 25a42ac..48120f2 100644
> --- a/tools/perf/builtin-ftrace.c
> +++ b/tools/perf/builtin-ftrace.c
> @@ -130,7 +130,8 @@ static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
>  	if (reset_tracing_cpu() < 0)
>  		return -1;
> 
> -	if (write_tracing_file("max_graph_depth", "0") < 0)
> +	if (!strcmp(ftrace->tracer, "function_graph") &&
> +	    write_tracing_file("max_graph_depth", "0") < 0)

Hmm, instead of doing this, could we just do a stat on the file first.
As with trace-cmd, I like to reset files like this even when not
enabling function_graph tracer.

-- Steve


>  		return -1;
> 
>  	reset_tracing_filters();
> --
> 1.9.1
Julien Thierry Nov. 1, 2017, 4:58 p.m. UTC | #2
On 01/11/17 16:44, Steven Rostedt wrote:
> On Wed,  1 Nov 2017 14:33:44 +0000
> Julien Thierry <julien.thierry@arm.com> wrote:
> 
>> When linux is built without support for function graph tracer, the ftrace
>> builtin of perf will fail when trying to reset max_graph_depth because the
>> file does not exist. This prevents the use of function tracer from perf.
>>
>> Do not attempt to write this file when the tracer in use is not
>> function_graph.
>>
>> Signed-off-by: Julien Thierry <julien.thierry@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: Mark Rutland <mark.rutland@arm.com>
>> Cc: Peter Zijlstra <peterz@infradead.org>
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: linux-kernel@vger.kernel.org
>> ---
>>   tools/perf/builtin-ftrace.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
>> index 25a42ac..48120f2 100644
>> --- a/tools/perf/builtin-ftrace.c
>> +++ b/tools/perf/builtin-ftrace.c
>> @@ -130,7 +130,8 @@ static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
>>   	if (reset_tracing_cpu() < 0)
>>   		return -1;
>>
>> -	if (write_tracing_file("max_graph_depth", "0") < 0)
>> +	if (!strcmp(ftrace->tracer, "function_graph") &&
>> +	    write_tracing_file("max_graph_depth", "0") < 0)
> 
> Hmm, instead of doing this, could we just do a stat on the file first.
> As with trace-cmd, I like to reset files like this even when not
> enabling function_graph tracer.
> 

Sounds reasonable.

I'll include that change in the next version of the patches.

Thanks,
diff mbox

Patch

diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 25a42ac..48120f2 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -130,7 +130,8 @@  static int reset_tracing_files(struct perf_ftrace *ftrace __maybe_unused)
 	if (reset_tracing_cpu() < 0)
 		return -1;

-	if (write_tracing_file("max_graph_depth", "0") < 0)
+	if (!strcmp(ftrace->tracer, "function_graph") &&
+	    write_tracing_file("max_graph_depth", "0") < 0)
 		return -1;

 	reset_tracing_filters();