• James Clark's avatar
    perf cs-etm: Output 0 instead of 0xdeadbeef when exception packets are flushed · 41947446
    James Clark authored
    Normally exception packets don't directly output a branch sample, but
    if they're the last record in a buffer then they will. Because they
    don't have addresses set we'll see the placeholder value
    CS_ETM_INVAL_ADDR (0xdeadbeef) in the output.
    
    Since commit 6035b680 ("perf cs-etm: Support dummy address value for
    CS_ETM_TRACE_ON packet") we've used 0 as an externally visible "not set"
    address value. For consistency reasons and to not make exceptions look
    like an error, change them to use 0 too.
    
    This is particularly visible when doing userspace only tracing because
    trace is disabled when jumping to the kernel, causing the flush and then
    forcing the last exception packet to be emitted as a branch. With kernel
    trace included, there is no flush so exception packets don't generate
    samples until the next range packet and they'll pick up the correct
    address.
    
    Before:
    
      $ perf record -e cs_etm//u -- stress -i 1 -t 1
      $ perf script -F comm,ip,addr,flags
    
      stress   syscall                    ffffb7eedbc0 => deadbeefdeadbeef
      stress   syscall                    ffffb7f14a14 => deadbeefdeadbeef
      stress   syscall                    ffffb7eedbc0 => deadbeefdeadbeef
    
    After:
    
      stress   syscall                    ffffb7eedbc0 =>                0
      stress   syscall                    ffffb7f14a14 =>                0
      stress   syscall                    ffffb7eedbc0 =>                0
    Reviewed-by: default avatarMike Leach <mike.leach@linaro.org>
    Signed-off-by: default avatarJames Clark <james.clark@linaro.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Leo Yan <leo.yan@arm.com>
    Cc: Leo Yan <leo.yan@linux.dev>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: coresight@lists.linaro.org
    Cc: gankulkarni@os.amperecomputing.com
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20240722152756.59453-2-james.clark@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    41947446
cs-etm.c 97.3 KB