Skip to contentSkip to conversation

Patch "perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Aug 3, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
perf-intel-pt-ensure-never-to-set-last_ip-when-packet-count-is-zero.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From f952eaceb089b691eba7c4e13686e742a8f26bf5 Mon Sep 17 00:00:00 2001

From: Adrian Hunter <[email protected]>
Date: Fri, 26 May 2017 11:17:07 +0300
Subject: perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero

From: Adrian Hunter <[email protected]>

commit f952eaceb089b691eba7c4e13686e742a8f26bf5 upstream.

Intel PT uses IP compression based on the last IP. For decoding purposes, 'last IP' is not updated when a branch target has been suppressed, which is indicated by IPBytes == 0. IPBytes is stored in the packet 'count', so ensure never to set 'last_ip' when packet 'count' is zero.

---
 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +5 -3
@@ -1438,7 +1438,8 @@ static int intel_pt_walk_psbend(struct i
 
 		case INTEL_PT_FUP:
 			decoder->pge = true;
-			intel_pt_set_last_ip(decoder);
+			if (decoder->packet.count)
+				intel_pt_set_last_ip(decoder);
 			break;
 
 		case INTEL_PT_MODE_TSX:
@@ -1724,8 +1725,9 @@ next:
 
 static inline bool intel_pt_have_ip(struct intel_pt_decoder *decoder)
 {
-	return decoder->have_last_ip || decoder->packet.count == 0 ||
-	       decoder->packet.count == 3 || decoder->packet.count == 6;
+	return decoder->packet.count &&
+	       (decoder->have_last_ip || decoder->packet.count == 3 ||
+		decoder->packet.count == 6);
 }
 
 /* Walk PSB+ packets to get in sync. */

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/perf-intel-pt-ensure-never-to-set-last_ip-when-packet-count-is-zero.patch queue-4.4/perf-intel-pt-use-fup-always-when-scanning-for-an-ip.patch queue-4.4/perf-intel-pt-fix-last_ip-usage.patch queue-4.4/perf-intel-pt-fix-ip-compression.patch