Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1213152
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 10/16] perf tools: Add Intel PT support for using MTC packets |
| Date | 2015-08-25 18:20 +0200 |
| Message-ID | <q1p75-3gB-47@gated-at.bofh.it> (permalink) |
| References | <q1p73-3gB-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Adrian Hunter <adrian.hunter@intel.com>
MTC packets are a new Intel PT feature.
MTC packets provide finer grain timestamp information than TSC packets.
Support for this feature is indicated by:
/sys/bus/event_source/devices/intel_pt/caps/mtc
which contains "1" if the feature is supported and "0" otherwise.
MTC packets can be requested using a PMU config term e.g. perf record -e
intel_pt/mtc/u sleep 1
The frequency of MTC packets can also be specified. e.g. perf record -e
intel_pt/mtc,mtc_period=2/u sleep 1
The default value is 3 or the nearest lower value that is supported. 0
is always supported.
Valid values are given by:
/sys/bus/event_source/devices/intel_pt/caps/mtc_periods
which contains a hexadecimal value, the bits of which represent valid
values e.g. bit 2 set means value 2 is valid.
The value is converted to the MTC frequency as:
CTC-frequency / (2 ^ value)
e.g. value 3 means one eighth of CTC-frequency
Where CTC is the hardware crystal clock, the frequency of which can be
related to TSC via values provided in cpuid leaf 0x15.
If an invalid value is entered, the error message will give a list of
valid values e.g.
$ perf record -e intel_pt/mtc_period=15/u uname
Invalid mtc_period for intel_pt. Valid values are: 0,3,6,9
tools/perf/Documentation/intel-pt.txt is updated in a later patch as
there are a number of new features being added.
For more information refer to the June 2015 or later Intel 64 and IA-32
Architectures SDM Chapter 36 Intel Processor Trace.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1437150840-31811-22-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/x86/util/intel-pt.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
index faae9289bcf6..a5de01dad868 100644
--- a/tools/perf/arch/x86/util/intel-pt.c
+++ b/tools/perf/arch/x86/util/intel-pt.c
@@ -190,17 +190,33 @@ static int intel_pt_pick_bit(int bits, int target)
static u64 intel_pt_default_config(struct perf_pmu *intel_pt_pmu)
{
char buf[256];
+ int mtc, mtc_periods = 0, mtc_period;
int psb_cyc, psb_periods, psb_period;
int pos = 0;
u64 config;
pos += scnprintf(buf + pos, sizeof(buf) - pos, "tsc");
+ if (perf_pmu__scan_file(intel_pt_pmu, "caps/mtc", "%d",
+ &mtc) != 1)
+ mtc = 1;
+
+ if (mtc) {
+ if (perf_pmu__scan_file(intel_pt_pmu, "caps/mtc_periods", "%x",
+ &mtc_periods) != 1)
+ mtc_periods = 0;
+ if (mtc_periods) {
+ mtc_period = intel_pt_pick_bit(mtc_periods, 3);
+ pos += scnprintf(buf + pos, sizeof(buf) - pos,
+ ",mtc,mtc_period=%d", mtc_period);
+ }
+ }
+
if (perf_pmu__scan_file(intel_pt_pmu, "caps/psb_cyc", "%d",
&psb_cyc) != 1)
psb_cyc = 1;
- if (psb_cyc) {
+ if (psb_cyc && mtc_periods) {
if (perf_pmu__scan_file(intel_pt_pmu, "caps/psb_periods", "%x",
&psb_periods) != 1)
psb_periods = 0;
@@ -454,9 +470,17 @@ out_err:
static int intel_pt_validate_config(struct perf_pmu *intel_pt_pmu,
struct perf_evsel *evsel)
{
+ int err;
+
if (!evsel)
return 0;
+ err = intel_pt_val_config_term(intel_pt_pmu, "caps/mtc_periods",
+ "mtc_period", "caps/mtc",
+ evsel->attr.config);
+ if (err)
+ return err;
+
return intel_pt_val_config_term(intel_pt_pmu, "caps/psb_periods",
"psb_period", "caps/psb_cyc",
evsel->attr.config);
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/16] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 01/16] perf tools: Fix tarball build broken by pt/bts Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 06/16] perf tools: Add Intel PT support for PSB periods Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 04/16] perf ordered_events: Clear the progress bar at the end of a flush Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 02/16] perf annotate: Reset the dso find_symbol cache when removing symbols Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 16/16] perf probe: Support probing at absolute addresses Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
RE: [PATCH 16/16] perf probe: Support probing at absolute addresses 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 02:10 +0200
Re: [PATCH 16/16] perf probe: Support probing at absolute addresses Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-26 15:00 +0200
[PATCH 14/16] perf tools: Update Intel PT documentation Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 12/16] perf tools: Add Intel PT support for using CYC packets Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 09/16] perf tools: Add Intel PT support for decoding MTC packets Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 07/16] perf tools: Add new Intel PT packet definitions Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 10/16] perf tools: Add Intel PT support for using MTC packets Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
[PATCH 03/16] perf ui tui progress: Implement the ui_progress_ops->finish() method Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-25 18:20 +0200
Re: [GIT PULL 00/16] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-08-26 15:40 +0200
csiph-web