From: David Ahern <dsahern@gmail.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: mingo@redhat.com, hpa@zytor.com, acme@redhat.com,
linux-kernel@vger.kernel.org, fweisbec@gmail.com,
a.p.zijlstra@chello.nl, tglx@linutronix.de,
linux-tip-commits@vger.kernel.org
Subject: Re: [tip:perf/stat] perf stat: Fail softly on unsupported events
Date: Fri, 29 Apr 2011 13:29:27 -0600 [thread overview]
Message-ID: <4DBB1197.9010501@gmail.com> (raw)
In-Reply-To: <20110429192347.GA15068@elte.hu>
On 04/29/11 13:23, Ingo Molnar wrote:
>
> * David Ahern <dsahern@gmail.com> wrote:
>
>>
>>
>> On 04/29/11 08:27, tip-bot for Ingo Molnar wrote:
>>> Commit-ID: 370faf1dd0461ad811852c8abbbcd3d73b1e4fc4
>>> Gitweb: http://git.kernel.org/tip/370faf1dd0461ad811852c8abbbcd3d73b1e4fc4
>>> Author: Ingo Molnar <mingo@elte.hu>
>>> AuthorDate: Fri, 29 Apr 2011 16:11:03 +0200
>>> Committer: Ingo Molnar <mingo@elte.hu>
>>> CommitDate: Fri, 29 Apr 2011 16:22:33 +0200
>>>
>>> perf stat: Fail softly on unsupported events
>>>
>>> David Ahern reported this perf stat failure:
>>>
>>>> # /tmp/build-perf/perf stat -- sleep 1
>>>> Error: stalled-cycles-frontend event is not supported.
>>>> Fatal: Not all events could be opened.
>>>>
>>>> This is a Dell R410 with an E5620 processor.
>>>
>>> Fail in a softer fashion on unknown/unsupported events.
>>>
>>> Reported-by: David Ahern <dsahern@gmail.com>
>>> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
>>> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
>>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>>> Link: http://lkml.kernel.org/n/tip-7y40wib8n006io7hjpn1dsrm@git.kernel.org
>>> Signed-off-by: Ingo Molnar <mingo@elte.hu>
>>> ---
>>> tools/perf/builtin-stat.c | 4 +---
>>> 1 files changed, 1 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
>>> index 9e596ab..c8b535b 100644
>>> --- a/tools/perf/builtin-stat.c
>>> +++ b/tools/perf/builtin-stat.c
>>> @@ -377,7 +377,7 @@ static int run_perf_stat(int argc __used, const char **argv)
>>>
>>> list_for_each_entry(counter, &evsel_list->entries, node) {
>>> if (create_perf_stat_counter(counter) < 0) {
>>> - if (errno == EINVAL || errno == ENOSYS)
>>> + if (errno == EINVAL || errno == ENOSYS || errno == ENOENT)
>>> continue;
>>>
>>> if (errno == EPERM || errno == EACCES) {
>>> @@ -385,8 +385,6 @@ static int run_perf_stat(int argc __used, const char **argv)
>>> "\t Consider tweaking"
>>> " /proc/sys/kernel/perf_event_paranoid or running as root.",
>>> system_wide ? "system-wide " : "");
>>> - } else if (errno == ENOENT) {
>>> - error("%s event is not supported. ", event_name(counter));
>>
>> This silently ignores events -- including ones that a user requested. I
>> think a better option is a continue here.
>>
>> /tmp/build-perf/perf stat -- sleep 1
>> Error: stalled-cycles-frontend event is not supported.
>> Error: stalled-cycles-backend event is not supported.
>
> Ok. Got time to send a patch for that, which prints whichever message you find
> the most intuitive? Perhaps word it as:
>
> Info: stalled-cycles-frontend event is not supported by the kernel
>
> to not yell 'error!' at users all the time?
Yes, Error is the wrong prefix, unless the user asked for the event.
It's also not as simple as a continue; the fd array contains 0 so the
command blocks trying to read from fd 0. e.g.:
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 2492a0e..bb1c4dc 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -318,7 +318,7 @@ static int read_counter(struct perf_evsel *counter)
static int run_perf_stat(int argc __used, const char **argv)
{
unsigned long long t0, t1;
- struct perf_evsel *counter;
+ struct perf_evsel *counter, *n;
int status = 0;
int child_ready_pipe[2], go_pipe[2];
const bool forks = (argc > 0);
@@ -375,7 +375,7 @@ static int run_perf_stat(int argc __used, const char
**argv)
close(child_ready_pipe[0]);
}
- list_for_each_entry(counter, &evsel_list->entries, node) {
+ list_for_each_entry_safe(counter, n, &evsel_list->entries, node) {
if (create_perf_stat_counter(counter) < 0) {
if (errno == EINVAL || errno == ENOSYS)
continue;
@@ -387,6 +387,8 @@ static int run_perf_stat(int argc __used, const char
**argv)
system_wide ? "system-wide " : "");
} else if (errno == ENOENT) {
error("%s event is not supported. ", event_name(counter));
+ list_del(&counter->node);
+ continue;
} else {
error("open_counter returned with %d (%s). "
"/bin/dmesg may provide additional information.\n",
That set the xyarray to -1.
David
>
> Thanks,
>
> Ingo
prev parent reply other threads:[~2011-04-29 19:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-29 14:27 [tip:perf/stat] perf stat: Fail softly on unsupported events tip-bot for Ingo Molnar
2011-04-29 14:34 ` David Ahern
2011-04-29 19:23 ` Ingo Molnar
2011-04-29 19:29 ` David Ahern [this message]
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=4DBB1197.9010501@gmail.com \
--to=dsahern@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/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 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.