From: tip-bot for Mathieu Poirier <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: jolsa@redhat.com, gregkh@linuxfoundation.org, mingo@kernel.org,
will.deacon@arm.com, schwidefsky@de.ibm.com,
peterz@infradead.org, alexander.shishkin@linux.intel.com,
tglx@linutronix.de, namhyung@kernel.org,
linux-kernel@vger.kernel.org, ast@kernel.org,
mark.rutland@arm.com, adrian.hunter@intel.com,
mathieu.poirier@linaro.org, hpa@zytor.com,
suzuki.poulose@arm.com, acme@redhat.com,
heiko.carstens@de.ibm.com
Subject: [tip:perf/core] perf arm cs-etm: Use event attributes to send sink information to kernel
Date: Sat, 9 Feb 2019 04:43:25 -0800 [thread overview]
Message-ID: <tip-fa4e819bbca9939c54e87ba994a6a9bffd0247df@git.kernel.org> (raw)
In-Reply-To: <20190131184714.20388-6-mathieu.poirier@linaro.org>
Commit-ID: fa4e819bbca9939c54e87ba994a6a9bffd0247df
Gitweb: https://git.kernel.org/tip/fa4e819bbca9939c54e87ba994a6a9bffd0247df
Author: Mathieu Poirier <mathieu.poirier@linaro.org>
AuthorDate: Thu, 31 Jan 2019 11:47:12 -0700
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 6 Feb 2019 10:00:39 -0300
perf arm cs-etm: Use event attributes to send sink information to kernel
The communication of sink information for a trace session doesn't work
when more than on CPU is involved in the scenario due to the static
nature of sysfs. As such communicate the sink information to each event
by using the perf_event::attr:config2 attribute. The information sent
to the kernel is an hash of the sink's name, which is unique in a
system.
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Acked-by: Suzuki K Poulouse <suzuki.poulose@arm.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-s390@vger.kernel.org
Link: http://lkml.kernel.org/r/20190131184714.20388-6-mathieu.poirier@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/arm/util/cs-etm.c | 44 +++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index 2f595cd73da6..4f31cf0d1e6d 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -5,6 +5,7 @@
*/
#include <api/fs/fs.h>
+#include <linux/bits.h>
#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/coresight-pmu.h>
@@ -22,6 +23,7 @@
#include "../../util/thread_map.h"
#include "../../util/cs-etm.h"
+#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
@@ -60,10 +62,48 @@ static int cs_etm_parse_snapshot_options(struct auxtrace_record *itr,
return 0;
}
+static int cs_etm_set_sink_attr(struct perf_pmu *pmu,
+ struct perf_evsel *evsel)
+{
+ char msg[BUFSIZ], path[PATH_MAX], *sink;
+ struct perf_evsel_config_term *term;
+ int ret = -EINVAL;
+ u32 hash;
+
+ if (evsel->attr.config2 & GENMASK(31, 0))
+ return 0;
+
+ list_for_each_entry(term, &evsel->config_terms, list) {
+ if (term->type != PERF_EVSEL__CONFIG_TERM_DRV_CFG)
+ continue;
+
+ sink = term->val.drv_cfg;
+ snprintf(path, PATH_MAX, "sinks/%s", sink);
+
+ ret = perf_pmu__scan_file(pmu, path, "%x", &hash);
+ if (ret != 1) {
+ pr_err("failed to set sink \"%s\" on event %s with %d (%s)\n",
+ sink, perf_evsel__name(evsel), errno,
+ str_error_r(errno, msg, sizeof(msg)));
+ return ret;
+ }
+
+ evsel->attr.config2 |= hash;
+ return 0;
+ }
+
+ /*
+ * No sink was provided on the command line - for _now_ treat
+ * this as an error.
+ */
+ return ret;
+}
+
static int cs_etm_recording_options(struct auxtrace_record *itr,
struct perf_evlist *evlist,
struct record_opts *opts)
{
+ int ret;
struct cs_etm_recording *ptr =
container_of(itr, struct cs_etm_recording, itr);
struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
@@ -92,6 +132,10 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
if (!cs_etm_evsel)
return 0;
+ ret = cs_etm_set_sink_attr(cs_etm_pmu, cs_etm_evsel);
+ if (ret)
+ return ret;
+
if (opts->use_clockid) {
pr_err("Cannot use clockid (-k option) with %s\n",
CORESIGHT_ETM_PMU_NAME);
next prev parent reply other threads:[~2019-02-09 12:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-31 18:47 [PATCH v3 0/7] perf: Communicate sink via event::attr:config2 Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 1/7] perf/aux: Make perf_event accessible to setup_aux() Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-02-09 12:40 ` [tip:perf/core] " tip-bot for Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 2/7] coresight: perf: Add "sinks" group to PMU directory Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-01-31 18:56 ` Suzuki K Poulose
2019-01-31 18:56 ` Suzuki K Poulose
2019-02-09 12:41 ` [tip:perf/core] " tip-bot for Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 3/7] coresight: Use event attributes for sink selection Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-01-31 18:58 ` Suzuki K Poulose
2019-01-31 18:58 ` Suzuki K Poulose
2019-02-09 12:42 ` [tip:perf/core] " tip-bot for Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 4/7] perf pmu: Moving EVENT_SOURCE_DEVICE_PATH to PMU header file Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-02-09 12:42 ` [tip:perf/core] perf pmu: Move " tip-bot for Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 5/7] perf tools: Use event attributes to send sink information to kernel Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-02-09 12:43 ` tip-bot for Mathieu Poirier [this message]
2019-01-31 18:47 ` [PATCH v3 6/7] perf tools: Removing CoreSight set_drv_config() API Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-02-09 12:44 ` [tip:perf/core] perf coresight: Remove " tip-bot for Mathieu Poirier
2019-01-31 18:47 ` [PATCH v3 7/7] perf tools: Remove PMU::set_drv_config API Mathieu Poirier
2019-01-31 18:47 ` Mathieu Poirier
2019-01-31 19:03 ` Suzuki K Poulose
2019-01-31 19:03 ` Suzuki K Poulose
2019-02-01 16:03 ` Arnaldo Carvalho de Melo
2019-02-01 16:03 ` Arnaldo Carvalho de Melo
2019-02-09 12:44 ` [tip:perf/core] perf pmu: Remove set_drv_config API tip-bot for Mathieu Poirier
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=tip-fa4e819bbca9939c54e87ba994a6a9bffd0247df@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=ast@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heiko.carstens@de.ibm.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.poirier@linaro.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=schwidefsky@de.ibm.com \
--cc=suzuki.poulose@arm.com \
--cc=tglx@linutronix.de \
--cc=will.deacon@arm.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 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.