All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] perf intel-pt: Add more information to debug log
@ 2018-11-05  7:35 Adrian Hunter
  2018-11-05  7:35 ` [PATCH 1/2] perf intel-pt: Add more event " Adrian Hunter
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Adrian Hunter @ 2018-11-05  7:35 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel

Hi

Here is a couple of small patches to add more information to the Intel PT
debug log.


Adrian Hunter (2):
      perf intel-pt: Add more event information to debug log
      perf intel-pt: Add MTC and CYC timestamps to debug log

 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c |  4 ++++
 tools/perf/util/intel-pt-decoder/intel-pt-log.c     |  5 +++++
 tools/perf/util/intel-pt-decoder/intel-pt-log.h     |  1 +
 tools/perf/util/intel-pt.c                          | 16 +++++++++++++---
 4 files changed, 23 insertions(+), 3 deletions(-)


Regards
Adrian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] perf intel-pt: Add more event information to debug log
  2018-11-05  7:35 [PATCH 0/2] perf intel-pt: Add more information to debug log Adrian Hunter
@ 2018-11-05  7:35 ` Adrian Hunter
  2018-11-06 19:17   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
  2018-11-05  7:35 ` [PATCH 2/2] perf intel-pt: Add MTC and CYC timestamps " Adrian Hunter
  2018-11-05 17:54 ` [PATCH 0/2] perf intel-pt: Add more information " Arnaldo Carvalho de Melo
  2 siblings, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2018-11-05  7:35 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel

More event information is useful for debugging, especially MMAP events.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/util/intel-pt-decoder/intel-pt-log.c |  5 +++++
 tools/perf/util/intel-pt-decoder/intel-pt-log.h |  1 +
 tools/perf/util/intel-pt.c                      | 16 +++++++++++++---
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.c b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
index e02bc7b166a0..5e64da270f97 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
@@ -31,6 +31,11 @@ static FILE *f;
 static char log_name[MAX_LOG_NAME];
 bool intel_pt_enable_logging;
 
+void *intel_pt_log_fp(void)
+{
+	return f;
+}
+
 void intel_pt_log_enable(void)
 {
 	intel_pt_enable_logging = true;
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.h b/tools/perf/util/intel-pt-decoder/intel-pt-log.h
index 45b64f93f358..cc084937f701 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.h
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.h
@@ -22,6 +22,7 @@
 
 struct intel_pt_pkt;
 
+void *intel_pt_log_fp(void);
 void intel_pt_log_enable(void);
 void intel_pt_log_disable(void);
 void intel_pt_log_set_name(const char *name);
diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
index ffa385a029b3..71339d1d4340 100644
--- a/tools/perf/util/intel-pt.c
+++ b/tools/perf/util/intel-pt.c
@@ -206,6 +206,16 @@ static void intel_pt_dump_event(struct intel_pt *pt, unsigned char *buf,
 	intel_pt_dump(pt, buf, len);
 }
 
+static void intel_pt_log_event(union perf_event *event)
+{
+	FILE *f = intel_pt_log_fp();
+
+	if (!intel_pt_enable_logging || !f)
+		return;
+
+	perf_event__fprintf(event, f);
+}
+
 static int intel_pt_do_fix_overlap(struct intel_pt *pt, struct auxtrace_buffer *a,
 				   struct auxtrace_buffer *b)
 {
@@ -2004,9 +2014,9 @@ static int intel_pt_process_event(struct perf_session *session,
 		 event->header.type == PERF_RECORD_SWITCH_CPU_WIDE)
 		err = intel_pt_context_switch(pt, event, sample);
 
-	intel_pt_log("event %s (%u): cpu %d time %"PRIu64" tsc %#"PRIx64"\n",
-		     perf_event__name(event->header.type), event->header.type,
-		     sample->cpu, sample->time, timestamp);
+	intel_pt_log("event %u: cpu %d time %"PRIu64" tsc %#"PRIx64" ",
+		     event->header.type, sample->cpu, sample->time, timestamp);
+	intel_pt_log_event(event);
 
 	return err;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] perf intel-pt: Add MTC and CYC timestamps to debug log
  2018-11-05  7:35 [PATCH 0/2] perf intel-pt: Add more information to debug log Adrian Hunter
  2018-11-05  7:35 ` [PATCH 1/2] perf intel-pt: Add more event " Adrian Hunter
@ 2018-11-05  7:35 ` Adrian Hunter
  2018-11-06 19:18   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
  2018-11-05 17:54 ` [PATCH 0/2] perf intel-pt: Add more information " Arnaldo Carvalho de Melo
  2 siblings, 1 reply; 6+ messages in thread
From: Adrian Hunter @ 2018-11-05  7:35 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel

One cause of decoding errors is un-synchronized side-band data. Timestamps
are needed to debug such cases. TSC packet timestamps are logged. Log also
MTC and CYC timestamps.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
index 58f6a9ceb590..4503f3ca45ab 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -1474,6 +1474,8 @@ static void intel_pt_calc_mtc_timestamp(struct intel_pt_decoder *decoder)
 		decoder->have_calc_cyc_to_tsc = false;
 		intel_pt_calc_cyc_to_tsc(decoder, true);
 	}
+
+	intel_pt_log_to("Setting timestamp", decoder->timestamp);
 }
 
 static void intel_pt_calc_cbr(struct intel_pt_decoder *decoder)
@@ -1514,6 +1516,8 @@ static void intel_pt_calc_cyc_timestamp(struct intel_pt_decoder *decoder)
 		decoder->timestamp = timestamp;
 
 	decoder->timestamp_insn_cnt = 0;
+
+	intel_pt_log_to("Setting timestamp", decoder->timestamp);
 }
 
 /* Walk PSB+ packets when already in sync. */
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] perf intel-pt: Add more information to debug log
  2018-11-05  7:35 [PATCH 0/2] perf intel-pt: Add more information to debug log Adrian Hunter
  2018-11-05  7:35 ` [PATCH 1/2] perf intel-pt: Add more event " Adrian Hunter
  2018-11-05  7:35 ` [PATCH 2/2] perf intel-pt: Add MTC and CYC timestamps " Adrian Hunter
@ 2018-11-05 17:54 ` Arnaldo Carvalho de Melo
  2 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-11-05 17:54 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-kernel

Em Mon, Nov 05, 2018 at 09:35:03AM +0200, Adrian Hunter escreveu:
> Hi
> 
> Here is a couple of small patches to add more information to the Intel PT
> debug log.
> 
> 
> Adrian Hunter (2):
>       perf intel-pt: Add more event information to debug log
>       perf intel-pt: Add MTC and CYC timestamps to debug log

Thanks, applied both patches.

- Arnaldo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip:perf/urgent] perf intel-pt: Add more event information to debug log
  2018-11-05  7:35 ` [PATCH 1/2] perf intel-pt: Add more event " Adrian Hunter
@ 2018-11-06 19:17   ` tip-bot for Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Adrian Hunter @ 2018-11-06 19:17 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: hpa, acme, adrian.hunter, tglx, linux-kernel, mingo

Commit-ID:  93f8be2799515e01647c5a9b0d17a90a00ebcf82
Gitweb:     https://git.kernel.org/tip/93f8be2799515e01647c5a9b0d17a90a00ebcf82
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Mon, 5 Nov 2018 09:35:04 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 5 Nov 2018 14:53:37 -0300

perf intel-pt: Add more event information to debug log

More event information is useful for debugging, especially MMAP events.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Link: http://lkml.kernel.org/r/20181105073505.8129-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/intel-pt-decoder/intel-pt-log.c |  5 +++++
 tools/perf/util/intel-pt-decoder/intel-pt-log.h |  1 +
 tools/perf/util/intel-pt.c                      | 16 +++++++++++++---
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.c b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
index e02bc7b166a0..5e64da270f97 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
@@ -31,6 +31,11 @@ static FILE *f;
 static char log_name[MAX_LOG_NAME];
 bool intel_pt_enable_logging;
 
+void *intel_pt_log_fp(void)
+{
+	return f;
+}
+
 void intel_pt_log_enable(void)
 {
 	intel_pt_enable_logging = true;
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.h b/tools/perf/util/intel-pt-decoder/intel-pt-log.h
index 45b64f93f358..cc084937f701 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.h
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.h
@@ -22,6 +22,7 @@
 
 struct intel_pt_pkt;
 
+void *intel_pt_log_fp(void);
 void intel_pt_log_enable(void);
 void intel_pt_log_disable(void);
 void intel_pt_log_set_name(const char *name);
diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
index 86cc9a64e982..149ff361ca78 100644
--- a/tools/perf/util/intel-pt.c
+++ b/tools/perf/util/intel-pt.c
@@ -206,6 +206,16 @@ static void intel_pt_dump_event(struct intel_pt *pt, unsigned char *buf,
 	intel_pt_dump(pt, buf, len);
 }
 
+static void intel_pt_log_event(union perf_event *event)
+{
+	FILE *f = intel_pt_log_fp();
+
+	if (!intel_pt_enable_logging || !f)
+		return;
+
+	perf_event__fprintf(event, f);
+}
+
 static int intel_pt_do_fix_overlap(struct intel_pt *pt, struct auxtrace_buffer *a,
 				   struct auxtrace_buffer *b)
 {
@@ -2010,9 +2020,9 @@ static int intel_pt_process_event(struct perf_session *session,
 		 event->header.type == PERF_RECORD_SWITCH_CPU_WIDE)
 		err = intel_pt_context_switch(pt, event, sample);
 
-	intel_pt_log("event %s (%u): cpu %d time %"PRIu64" tsc %#"PRIx64"\n",
-		     perf_event__name(event->header.type), event->header.type,
-		     sample->cpu, sample->time, timestamp);
+	intel_pt_log("event %u: cpu %d time %"PRIu64" tsc %#"PRIx64" ",
+		     event->header.type, sample->cpu, sample->time, timestamp);
+	intel_pt_log_event(event);
 
 	return err;
 }

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip:perf/urgent] perf intel-pt: Add MTC and CYC timestamps to debug log
  2018-11-05  7:35 ` [PATCH 2/2] perf intel-pt: Add MTC and CYC timestamps " Adrian Hunter
@ 2018-11-06 19:18   ` tip-bot for Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Adrian Hunter @ 2018-11-06 19:18 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: tglx, adrian.hunter, acme, linux-kernel, mingo, hpa

Commit-ID:  f6c23e3b55cb93f32a724f41af8d38888bc2ab6b
Gitweb:     https://git.kernel.org/tip/f6c23e3b55cb93f32a724f41af8d38888bc2ab6b
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Mon, 5 Nov 2018 09:35:05 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 5 Nov 2018 14:53:54 -0300

perf intel-pt: Add MTC and CYC timestamps to debug log

One cause of decoding errors is un-synchronized side-band data.
Timestamps are needed to debug such cases. TSC packet timestamps are
logged. Log also MTC and CYC timestamps.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Link: http://lkml.kernel.org/r/20181105073505.8129-3-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
index 58f6a9ceb590..4503f3ca45ab 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
@@ -1474,6 +1474,8 @@ static void intel_pt_calc_mtc_timestamp(struct intel_pt_decoder *decoder)
 		decoder->have_calc_cyc_to_tsc = false;
 		intel_pt_calc_cyc_to_tsc(decoder, true);
 	}
+
+	intel_pt_log_to("Setting timestamp", decoder->timestamp);
 }
 
 static void intel_pt_calc_cbr(struct intel_pt_decoder *decoder)
@@ -1514,6 +1516,8 @@ static void intel_pt_calc_cyc_timestamp(struct intel_pt_decoder *decoder)
 		decoder->timestamp = timestamp;
 
 	decoder->timestamp_insn_cnt = 0;
+
+	intel_pt_log_to("Setting timestamp", decoder->timestamp);
 }
 
 /* Walk PSB+ packets when already in sync. */

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-11-06 19:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-05  7:35 [PATCH 0/2] perf intel-pt: Add more information to debug log Adrian Hunter
2018-11-05  7:35 ` [PATCH 1/2] perf intel-pt: Add more event " Adrian Hunter
2018-11-06 19:17   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
2018-11-05  7:35 ` [PATCH 2/2] perf intel-pt: Add MTC and CYC timestamps " Adrian Hunter
2018-11-06 19:18   ` [tip:perf/urgent] " tip-bot for Adrian Hunter
2018-11-05 17:54 ` [PATCH 0/2] perf intel-pt: Add more information " Arnaldo Carvalho de Melo

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.