Skip to content

Commit 057ae59

Browse files
ahunter6acmel
authored andcommitted
perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage
Packet generation enable (PGE) refers to whether control flow (COFI) packets are being produced. PGE may be false even when branch-tracing is enabled, due to being out-of-context, or outside a filter address range. Fix some missing PGE usage. Fixes: 7c1b16b ("perf intel-pt: Add support for decoding FUP/TIP only") Fixes: 8395981 ("perf intel-pt: Allow decoding with branch tracing disabled") Signed-off-by: Adrian Hunter <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: [email protected] # v5.15+ Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent c897899 commit 057ae59

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

tools/perf/util/intel-pt-decoder/intel-pt-decoder.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2678,6 +2678,7 @@ static int intel_pt_hop_trace(struct intel_pt_decoder *decoder, bool *no_tip, in
26782678
return HOP_IGNORE;
26792679

26802680
case INTEL_PT_TIP_PGD:
2681+
decoder->pge = false;
26812682
if (!decoder->packet.count) {
26822683
intel_pt_set_nr(decoder);
26832684
return HOP_IGNORE;
@@ -2707,7 +2708,7 @@ static int intel_pt_hop_trace(struct intel_pt_decoder *decoder, bool *no_tip, in
27072708
intel_pt_set_ip(decoder);
27082709
if (intel_pt_fup_event(decoder))
27092710
return HOP_RETURN;
2710-
if (!decoder->branch_enable)
2711+
if (!decoder->branch_enable || !decoder->pge)
27112712
*no_tip = true;
27122713
if (*no_tip) {
27132714
decoder->state.type = INTEL_PT_INSTRUCTION;
@@ -2897,7 +2898,7 @@ static bool intel_pt_psb_with_fup(struct intel_pt_decoder *decoder, int *err)
28972898
{
28982899
struct intel_pt_psb_info data = { .fup = false };
28992900

2900-
if (!decoder->branch_enable || !decoder->pge)
2901+
if (!decoder->branch_enable)
29012902
return false;
29022903

29032904
intel_pt_pkt_lookahead(decoder, intel_pt_psb_lookahead_cb, &data);
@@ -2999,7 +3000,7 @@ static int intel_pt_walk_trace(struct intel_pt_decoder *decoder)
29993000
break;
30003001
}
30013002
intel_pt_set_last_ip(decoder);
3002-
if (!decoder->branch_enable) {
3003+
if (!decoder->branch_enable || !decoder->pge) {
30033004
decoder->ip = decoder->last_ip;
30043005
if (intel_pt_fup_event(decoder))
30053006
return 0;

0 commit comments

Comments
 (0)