perf intel-pt: Packet splitting can happen only on 32-bit
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 6 Feb 2019 10:39:46 +0000 (12:39 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 6 Feb 2019 13:27:54 +0000 (10:27 -0300)
Data is copied when the trace is stopped, so packets are never split
between buffers except when processing if the buffer cannot fit in the
address space which can only happen on 32-bit systems. Change the logic
to reflect that.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/20190206103947.15750-5-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c

index a54d6c9a460184ffd096e5c6cb367cea301c369c..6e03db142091badf132f7a19869c76180f1075c4 100644 (file)
@@ -868,7 +868,7 @@ static int intel_pt_get_next_packet(struct intel_pt_decoder *decoder)
 
                ret = intel_pt_get_packet(decoder->buf, decoder->len,
                                          &decoder->packet);
-               if (ret == INTEL_PT_NEED_MORE_BYTES &&
+               if (ret == INTEL_PT_NEED_MORE_BYTES && BITS_PER_LONG == 32 &&
                    decoder->len < INTEL_PT_PKT_MAX_SZ && !decoder->next_buf) {
                        ret = intel_pt_get_split_packet(decoder);
                        if (ret < 0)