All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Mathieu Poirier <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, mathieu.poirier@linaro.org, jolsa@kernel.org,
	mingo@kernel.org, peterz@infradead.org, hpa@zytor.com,
	linux-kernel@vger.kernel.org, alexander.shishkin@linux.intel.com,
	tglx@linutronix.de
Subject: [tip:perf/core] perf tools: Add sink configuration for cs_etm PMU
Date: Thu, 22 Sep 2016 22:28:10 -0700	[thread overview]
Message-ID: <tip-3becf4525d9c0fb9cf8ff657b2aec1c733bc742f@git.kernel.org> (raw)
In-Reply-To: <1474041004-13956-8-git-send-email-mathieu.poirier@linaro.org>

Commit-ID:  3becf4525d9c0fb9cf8ff657b2aec1c733bc742f
Gitweb:     http://git.kernel.org/tip/3becf4525d9c0fb9cf8ff657b2aec1c733bc742f
Author:     Mathieu Poirier <mathieu.poirier@linaro.org>
AuthorDate: Fri, 16 Sep 2016 09:50:04 -0600
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 22 Sep 2016 13:08:55 -0300

perf tools: Add sink configuration for cs_etm PMU

Using the PMU::set_drv_config() callback to enable the CoreSight sink
that will be used for the trace session.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1474041004-13956-8-git-send-email-mathieu.poirier@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/arch/arm/util/cs-etm.c | 58 +++++++++++++++++++++++++++++++++++++++
 tools/perf/arch/arm/util/cs-etm.h |  3 ++
 tools/perf/arch/arm/util/pmu.c    |  2 ++
 3 files changed, 63 insertions(+)

diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index 829c479..47d584d 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -27,12 +27,16 @@
 #include "../../util/auxtrace.h"
 #include "../../util/cpumap.h"
 #include "../../util/evlist.h"
+#include "../../util/evsel.h"
 #include "../../util/pmu.h"
 #include "../../util/thread_map.h"
 #include "../../util/cs-etm.h"
 
 #include <stdlib.h>
 
+#define ENABLE_SINK_MAX	128
+#define CS_BUS_DEVICE_PATH "/bus/coresight/devices/"
+
 struct cs_etm_recording {
 	struct auxtrace_record	itr;
 	struct perf_pmu		*cs_etm_pmu;
@@ -557,3 +561,57 @@ struct auxtrace_record *cs_etm_record_init(int *err)
 out:
 	return NULL;
 }
+
+static FILE *cs_device__open_file(const char *name)
+{
+	struct stat st;
+	char path[PATH_MAX];
+	const char *sysfs;
+
+	sysfs = sysfs__mountpoint();
+	if (!sysfs)
+		return NULL;
+
+	snprintf(path, PATH_MAX,
+		 "%s" CS_BUS_DEVICE_PATH "%s", sysfs, name);
+
+	printf("path: %s\n", path);
+
+	if (stat(path, &st) < 0)
+		return NULL;
+
+	return fopen(path, "w");
+
+}
+
+static __attribute__((format(printf, 2, 3)))
+int cs_device__print_file(const char *name, const char *fmt, ...)
+{
+	va_list args;
+	FILE *file;
+	int ret = -EINVAL;
+
+	va_start(args, fmt);
+	file = cs_device__open_file(name);
+	if (file) {
+		ret = vfprintf(file, fmt, args);
+		fclose(file);
+	}
+	va_end(args);
+	return ret;
+}
+
+int cs_etm_set_drv_config(struct perf_evsel_config_term *term)
+{
+	int ret;
+	char enable_sink[ENABLE_SINK_MAX];
+
+	snprintf(enable_sink, ENABLE_SINK_MAX, "%s/%s",
+		 term->val.drv_cfg, "enable_sink");
+
+	ret = cs_device__print_file(enable_sink, "%d", 1);
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
diff --git a/tools/perf/arch/arm/util/cs-etm.h b/tools/perf/arch/arm/util/cs-etm.h
index 909f486..5256741 100644
--- a/tools/perf/arch/arm/util/cs-etm.h
+++ b/tools/perf/arch/arm/util/cs-etm.h
@@ -18,6 +18,9 @@
 #ifndef INCLUDE__PERF_CS_ETM_H__
 #define INCLUDE__PERF_CS_ETM_H__
 
+#include "../../util/evsel.h"
+
 struct auxtrace_record *cs_etm_record_init(int *err);
+int cs_etm_set_drv_config(struct perf_evsel_config_term *term);
 
 #endif
diff --git a/tools/perf/arch/arm/util/pmu.c b/tools/perf/arch/arm/util/pmu.c
index af9fb66..98d6739 100644
--- a/tools/perf/arch/arm/util/pmu.c
+++ b/tools/perf/arch/arm/util/pmu.c
@@ -19,6 +19,7 @@
 #include <linux/coresight-pmu.h>
 #include <linux/perf_event.h>
 
+#include "cs-etm.h"
 #include "../../util/pmu.h"
 
 struct perf_event_attr
@@ -28,6 +29,7 @@ struct perf_event_attr
 	if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) {
 		/* add ETM default config here */
 		pmu->selectable = true;
+		pmu->set_drv_config = cs_etm_set_drv_config;
 	}
 #endif
 	return NULL;

      reply	other threads:[~2016-09-23  5:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-16 15:49 [PATCH V8 0/7] perf: Driver specific configuration for PMU Mathieu Poirier
2016-09-16 15:49 ` Mathieu Poirier
2016-09-16 15:49 ` [PATCH V8 1/7] perf tools: confining __get_cpuid() to x86 architecture Mathieu Poirier
2016-09-16 15:49   ` Mathieu Poirier
2016-09-23  5:25   ` [tip:perf/core] perf tools: Confine " tip-bot for Mathieu Poirier
2016-09-16 15:49 ` [PATCH V8 2/7] perf tools: making coresight PMU listable Mathieu Poirier
2016-09-16 15:49   ` Mathieu Poirier
2016-09-23  5:26   ` [tip:perf/core] perf tools: Make " tip-bot for Mathieu Poirier
2016-09-16 15:50 ` [PATCH V8 3/7] perf tools: adding coresight etm PMU record capabilities Mathieu Poirier
2016-09-16 15:50   ` Mathieu Poirier
2016-09-23  5:26   ` [tip:perf/core] perf tools: Add " tip-bot for Mathieu Poirier
2016-09-16 15:50 ` [PATCH V8 4/7] perf tools: add infrastructure for PMU specific configuration Mathieu Poirier
2016-09-16 15:50   ` Mathieu Poirier
2016-09-16 15:50 ` [PATCH V8 5/7] perf tools: pushing configuration down to PMU driver Mathieu Poirier
2016-09-16 15:50   ` Mathieu Poirier
2016-09-23  5:27   ` [tip:perf/core] perf pmu: Push " tip-bot for Mathieu Poirier
2016-09-16 15:50 ` [PATCH V8 6/7] perf tools: adding PMU configuration to tools Mathieu Poirier
2016-09-16 15:50   ` Mathieu Poirier
2016-09-23  5:27   ` [tip:perf/core] perf tools: Add " tip-bot for Mathieu Poirier
2016-09-16 15:50 ` [PATCH V8 7/7] perf tools: adding sink configuration for cs_etm PMU Mathieu Poirier
2016-09-16 15:50   ` Mathieu Poirier
2016-09-23  5:28   ` tip-bot for Mathieu Poirier [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=tip-3becf4525d9c0fb9cf8ff657b2aec1c733bc742f@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --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.