From: Jiri Olsa <jolsa@redhat.com>
To: Borislav Petkov <bp@alien8.de>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Jiri Olsa <jolsa@kernel.org>, David Ahern <dsahern@gmail.com>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
lkml <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCHv2 4/5] perf stat: Add -a as a default target
Date: Tue, 21 Feb 2017 12:04:51 +0100 [thread overview]
Message-ID: <20170221110451.GA16152@krava> (raw)
In-Reply-To: <20170221075437.GB7384@krava>
On Tue, Feb 21, 2017 at 08:54:37AM +0100, Jiri Olsa wrote:
> On Mon, Feb 20, 2017 at 11:47:16PM +0100, Borislav Petkov wrote:
> > On Mon, Feb 20, 2017 at 06:22:54PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Well, this one should be read (and written in the tool output as):
> > >
> > > <not supported in workload only mode, try system wide, using -a>
> >
> > Do you want to change that CNTR_NOT_SUPPORTED string unconditionally to
> > something like above?
> >
> > Because perf_evsel.supported seems like it means that counter is not
> > supported but not necessarily only because of the missing -a for an
> > uncore event, AFAICT. I could be wrong.
> >
> > > Right, the ENOTSUPP in this case needs to be properly expanded into
> > > something meaningful, as suggested above.
> >
> > I dumped errno in __run_perf_stat():
> >
> > ./perf stat -v -e amd_nb/event=0xe0,umask=0x1f/ sleep 1
> > Using CPUID AuthenticAMD-21-2
> > Warning:
> > amd_nb/event=0xe0,umask=0x1f/ event is not supported by the kernel: 22.
> >
> > It is -EINVAL and the syscall returns -EINVAL in bunch of places so I'm
> > guessing this might not be a good way to match the retval to the proper
> > error message.
> >
> > Peterz said something about scanning all events supplied by -e and if
> > all are uncore, to set -a automatically. Can we do that?
>
> right, so that's different from what we actually did.. ;-)
>
> I'll check on this one.. might not be as straight forward,
> because some uncore events might have already cpumask limit
could you please test this change?
thanks,
jirka
---
diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c
index 79fe07158d00..424055bf32c9 100644
--- a/tools/perf/arch/x86/util/pmu.c
+++ b/tools/perf/arch/x86/util/pmu.c
@@ -14,5 +14,6 @@ struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu __mayb
if (!strcmp(pmu->name, INTEL_BTS_PMU_NAME))
pmu->selectable = true;
#endif
+ pmu->system_wide = strcmp(pmu->name, "cpu");
return NULL;
}
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 13b54999ad79..e924d56f3232 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -2339,6 +2339,27 @@ static int __cmd_report(int argc, const char **argv)
return 0;
}
+static void setup_system_wide(int argc)
+{
+ /*
+ * Make system wide (-a) the default target
+ * or change the target to system_wide if
+ * all the counters are system_ wide.
+ */
+ if (!argc && target__none(&target))
+ target.system_wide = true;
+ else {
+ struct perf_evsel *counter;
+
+ evlist__for_each_entry(evsel_list, counter) {
+ if (!counter->system_wide)
+ return;
+ }
+
+ target.system_wide = true;
+ }
+}
+
int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
{
const char * const stat_usage[] = {
@@ -2445,9 +2466,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
} else if (big_num_opt == 0) /* User passed --no-big-num */
big_num = false;
- /* Make system wide (-a) the default target. */
- if (!argc && target__none(&target))
- target.system_wide = true;
+ setup_system_wide(argc);
if (run_count < 0) {
pr_err("Run count must be a positive number\n");
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 67a8aebc67ab..8b06b21f1bbc 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -1254,6 +1254,7 @@ int parse_events_add_pmu(struct parse_events_evlist *data,
evsel->scale = info.scale;
evsel->per_pkg = info.per_pkg;
evsel->snapshot = info.snapshot;
+ evsel->system_wide = pmu->system_wide;
}
return evsel ? 0 : -ENOMEM;
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
index 00852ddc7741..0ce3ffacbf92 100644
--- a/tools/perf/util/pmu.h
+++ b/tools/perf/util/pmu.h
@@ -21,6 +21,7 @@ struct perf_pmu {
char *name;
__u32 type;
bool selectable;
+ bool system_wide;
struct perf_event_attr *default_config;
struct cpu_map *cpus;
struct list_head format; /* HEAD struct perf_pmu_format -> list */
next prev parent reply other threads:[~2017-02-21 11:05 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-17 14:00 [PATCH 0/5] perf tools: Few fixes Jiri Olsa
2017-02-17 14:00 ` [PATCH 1/5] perf build: Add special fixdep cleaning rule Jiri Olsa
2017-02-21 8:13 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2017-02-17 14:00 ` [PATCH 2/5] perf tools: Move new_term arguments into struct parse_events_term template Jiri Olsa
2017-02-21 8:13 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2017-02-17 14:00 ` [PATCH 3/5] perf tools: Fail on using multiple bits long terms without value Jiri Olsa
2017-02-21 8:14 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2017-02-17 14:00 ` [PATCH 4/5] perf stat: Add -a as a default target Jiri Olsa
2017-02-17 14:27 ` Arnaldo Carvalho de Melo
2017-02-17 14:33 ` Jiri Olsa
2017-02-17 14:41 ` Arnaldo Carvalho de Melo
2017-02-17 14:43 ` Jiri Olsa
2017-02-17 17:00 ` [PATCHv2 " Jiri Olsa
2017-02-17 17:48 ` Boris Petkov
2017-02-18 17:52 ` Borislav Petkov
2017-02-20 7:13 ` Jiri Olsa
[not found] ` <20170220134433.GI4109@kernel.org>
2017-02-20 20:31 ` Borislav Petkov
2017-02-20 21:22 ` Arnaldo Carvalho de Melo
2017-02-20 22:47 ` Borislav Petkov
2017-02-21 7:54 ` Jiri Olsa
2017-02-21 11:04 ` Jiri Olsa [this message]
2017-02-21 11:20 ` Borislav Petkov
2017-02-21 13:34 ` Arnaldo Carvalho de Melo
2017-02-21 14:05 ` Borislav Petkov
2017-02-21 14:20 ` Arnaldo Carvalho de Melo
2017-02-21 8:14 ` [tip:perf/urgent] perf stat: Add -a as " tip-bot for Jiri Olsa
2017-02-17 14:00 ` [PATCH 5/5] perf record: Add -a as a " Jiri Olsa
2017-02-17 14:28 ` Arnaldo Carvalho de Melo
2017-02-17 17:00 ` Jiri Olsa
2017-02-21 8:15 ` [tip:perf/urgent] perf record: Add -a as " 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=20170221110451.GA16152@krava \
--to=jolsa@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=bp@alien8.de \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/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.