• James Clark's avatar
    perf cs-etm: Split --dump-raw-trace by AUX records · 48e8a7b5
    James Clark authored
    Currently --dump-raw-trace skips queueing and splitting buffers because
    of an early exit condition in cs_etm__process_auxtrace_info(). Once
    that is removed we can print the split data by using the queues
    and searching for split buffers with the same reference as the
    one that is currently being processed.
    
    This keeps the same behaviour of dumping in file order when an AUXTRACE
    event appears, rather than moving trace dump to where AUX records are in
    the file.
    
    There will be a newline and size printout for each fragment. For example
    this buffer is comprised of two AUX records, but was printed as one:
    
      0 0 0x8098 [0x30]: PERF_RECORD_AUXTRACE size: 0xa0  offset: 0  ref: 0x491a4dfc52fc0e6e  idx: 0  t
    
      . ... CoreSight ETM Trace data: size 160 bytes
              Idx:0; ID:10;   I_ASYNC : Alignment Synchronisation.
              Idx:12; ID:10;  I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
              Idx:17; ID:10;  I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000000000000000;
              Idx:80; ID:10;  I_ASYNC : Alignment Synchronisation.
              Idx:92; ID:10;  I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
              Idx:97; ID:10;  I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0xFFFFDE2AD3FD76D4;
    
    But is now printed as two fragments:
    
      0 0 0x8098 [0x30]: PERF_RECORD_AUXTRACE size: 0xa0  offset: 0  ref: 0x491a4dfc52fc0e6e  idx: 0  t
    
      . ... CoreSight ETM Trace data: size 80 bytes
              Idx:0; ID:10;   I_ASYNC : Alignment Synchronisation.
              Idx:12; ID:10;  I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
              Idx:17; ID:10;  I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000000000000000;
    
      . ... CoreSight ETM Trace data: size 80 bytes
              Idx:80; ID:10;  I_ASYNC : Alignment Synchronisation.
              Idx:92; ID:10;  I_TRACE_INFO : Trace Info.; INFO=0x0 { CC.0 }
              Idx:97; ID:10;  I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0xFFFFDE2AD3FD76D4;
    
    Decoding errors that appeared in problematic files are now not present,
    for example:
    
            Idx:808; ID:1c; I_BAD_SEQUENCE : Invalid Sequence in packet.[I_ASYNC]
            ...
            PKTP_ETMV4I_0016 : 0x0014 (OCSD_ERR_INVALID_PCKT_HDR) [Invalid packet header]; TrcIdx=822
    Signed-off-by: default avatarJames Clark <james.clark@arm.com>
    Reviewed-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    Tested-by: default avatarLeo Yan <leo.yan@linaro.org>
    Cc: Al Grant <al.grant@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Branislav Rankov <branislav.rankov@arm.com>
    Cc: Denis Nikitin <denik@chromium.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lore.kernel.org/lkml/20210624164303.28632-3-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    48e8a7b5
cs-etm.c 84.3 KB