Events that don't sample the timestamp have a timestamp value of -1. Intel BTS and Intel PT processing wasn't taking that into account. This is particularly noticeable with Intel BTS because timestamps are not requested by default. Then, if the conversion of -1 to TSC results in a small number, the processing is unaffected. However if the conversion results in a big number, then the data is processed prematurely before relevant sideband data like mmap events, which in turn results in samples with unknown dsos.
Signed-off-by: Adrian Hunter <[email protected]> --- tools/perf/util/intel-bts.c | 2 +- tools/perf/util/intel-pt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/intel-bts.c b/tools/perf/util/intel-bts.c index dce99cfb1309..ea768625ab5b 100644 --- a/tools/perf/util/intel-bts.c +++ b/tools/perf/util/intel-bts.c @@ -610,7 +610,7 @@ static int intel_bts_process_event(struct perf_session *session, return -EINVAL; } - if (sample->time) + if (sample->time && sample->time != (u64)-1) timestamp = perf_time_to_tsc(sample->time, &bts->tc); else timestamp = 0; diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index 2a4a4120473b..a5acd2fe2447 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -1450,7 +1450,7 @@ static int intel_pt_process_event(struct perf_session *session, return -EINVAL; } - if (sample->time) + if (sample->time && sample->time != (u64)-1) timestamp = perf_time_to_tsc(sample->time, &pt->tc); else timestamp = 0; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

