public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>, Jiri Olsa <jolsa@kernel.org>,
	Wang Nan <wangnan0@huawei.com>,
	linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
	He Kuang <hekuang@huawei.com>, Alexei Starovoitov <ast@fb.com>
Subject: Re: [PATCH 2/2] perf, tools: Don't force MetricExprs to lower case
Date: Thu, 12 Oct 2017 17:13:35 +0200	[thread overview]
Message-ID: <20171012151335.GA20291@krava> (raw)
In-Reply-To: <20171009144155.GB1561@krava>

On Mon, Oct 09, 2017 at 04:41:55PM +0200, Jiri Olsa wrote:
> On Mon, Oct 09, 2017 at 11:09:44AM -0300, Arnaldo Carvalho de Melo wrote:
> 
> SNIP
> 
> > [root@jouet bpf]# cat sys_read.c 
> > #define SEC(NAME) __attribute__((section(NAME), used))
> > SEC("func=sys_read")
> > int bpf_func__sys_read(void *ctx)
> > {
> > 	return 1;
> > }
> > char _license[] SEC("license") = "GPL";
> > int _version SEC("version") = LINUX_VERSION_CODE;
> > [root@jouet bpf]# perf trace --no-syscalls -e sys_read.c/max-stack=5/ sleep 1
> > bpf: builtin compilation failed: -95, try external compiler
> >      0.000 perf_bpf_probe:func:(ffffffffb7263190))
> >                                        sys_read ([kernel.kallsyms])
> >                                        entry_SYSCALL_64_fastpath ([kernel.kallsyms])
> >                                        __read (/usr/lib64/ld-2.25.so)
> >                                        _dl_map_object (/usr/lib64/ld-2.25.so)
> > [root@jouet bpf]# perf trace --no-syscalls -e sys_read.c sleep 1
> > bpf: builtin compilation failed: -95, try external compiler
> >      0.000 perf_bpf_probe:func:(ffffffffb7263190))
> > [root@jouet bpf]#
> 
> is this ok?
> 
> > 
> > [root@jouet bpf]# perf stat -e UOPS_EXECUTED.CORE sleep 1
> > 
> >  Performance counter stats for 'sleep 1':
> > 
> >          1,205,347      UOPS_EXECUTED.CORE                                          
> > 
> >        1.001694225 seconds time elapsed
> > 
> > But I noticed this problem:
> > 
> > [root@jouet bpf]# perf stat -e cpu/uops_executed.core/,uops_executed.core,cpu/UOPS_EXECUTED.CORE sleep 1
> > event syntax error: '..d=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:IY�'
> >                                   \___ parser error
> > Run 'perf list' for a list of valid events
> > 
> 
> mama mia, this looks like unhandled case of error printing.. I'll check

I think I found the issue, could you please check following patch?

and wrt Andi's concern about wrong error message,
now if you make typo in your bpf file it says:

	[jolsa@krava perf]$ ./perf stat -e krava.c// sleep 1 
	event syntax error: 'krava.c//'
			     \___ Cannot find PMU `krava.c'. Missing kernel support?
	Run 'perf list' for a list of valid events
	...

looks sane enough.. ;-)

thanks,
jirka


---
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index ea2426daf7e8..241396cd059d 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -8,6 +8,9 @@
 
 %{
 #include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include "../perf.h"
 #include "parse-events.h"
 #include "parse-events-bison.h"
@@ -53,9 +56,8 @@ static int str(yyscan_t scanner, int token)
 	return token;
 }
 
-static bool isbpf(yyscan_t scanner)
+static bool isbpf_suffix(char *text)
 {
-	char *text = parse_events_get_text(scanner);
 	int len = strlen(text);
 
 	if (len < 2)
@@ -68,6 +70,17 @@ static bool isbpf(yyscan_t scanner)
 	return false;
 }
 
+static bool isbpf(yyscan_t scanner)
+{
+	char *text = parse_events_get_text(scanner);
+	struct stat st;
+
+	if (!isbpf_suffix(text))
+		return false;
+
+	return stat(text, &st) == 0;
+}
+
 /*
  * This function is called when the parser gets two kind of input:
  *
@@ -141,6 +154,10 @@ do {							\
 	yycolumn += yyleng;				\
 } while (0);
 
+#define USER_REJECT		\
+	yycolumn -= yyleng;	\
+	REJECT
+
 %}
 
 %x mem
@@ -323,8 +340,8 @@ r{num_raw_hex}		{ return raw(yyscanner); }
 {num_hex}		{ return value(yyscanner, 16); }
 
 {modifier_event}	{ return str(yyscanner, PE_MODIFIER_EVENT); }
-{bpf_object}		{ if (!isbpf(yyscanner)) REJECT; return str(yyscanner, PE_BPF_OBJECT); }
-{bpf_source}		{ if (!isbpf(yyscanner)) REJECT; return str(yyscanner, PE_BPF_SOURCE); }
+{bpf_object}		{ if (!isbpf(yyscanner)) USER_REJECT; return str(yyscanner, PE_BPF_OBJECT); }
+{bpf_source}		{ if (!isbpf(yyscanner)) USER_REJECT; return str(yyscanner, PE_BPF_SOURCE); }
 {name}			{ return pmu_str_check(yyscanner); }
 "/"			{ BEGIN(config); return '/'; }
 -			{ return '-'; }

  reply	other threads:[~2017-10-12 15:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-12 19:56 [PATCH 1/2] perf, tools, json: Fix ILP metrics Andi Kleen
2017-09-12 19:56 ` [PATCH 2/2] perf, tools: Don't force MetricExprs to lower case Andi Kleen
2017-10-03 16:06   ` Arnaldo Carvalho de Melo
2017-10-04 10:30     ` Jiri Olsa
2017-10-04 16:27       ` Andi Kleen
2017-10-09 13:41         ` Jiri Olsa
2017-10-09 14:07           ` Andi Kleen
2017-10-09 14:12             ` Arnaldo Carvalho de Melo
2017-10-09 14:39               ` Jiri Olsa
2017-10-09 14:51                 ` Arnaldo Carvalho de Melo
2017-10-09 15:39                 ` Andi Kleen
2017-10-12 15:31                 ` Wangnan (F)
2017-10-12 15:59                   ` Jiri Olsa
2017-10-12 16:07                     ` Wangnan (F)
2017-10-09 14:43             ` Jiri Olsa
2017-10-09 14:09           ` Arnaldo Carvalho de Melo
2017-10-09 14:41             ` Jiri Olsa
2017-10-12 15:13               ` Jiri Olsa [this message]
2017-10-12 21:53                 ` Andi Kleen
2017-10-28 23:10             ` [tip:perf/urgent] perf tools: Unwind properly location after REJECT tip-bot for Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171012151335.GA20291@krava \
    --to=jolsa@redhat.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=ast@fb.com \
    --cc=hekuang@huawei.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox