• James Clark's avatar
    perf cs-etm: Fix corrupt inject files when only last branch option is enabled · 9de07369
    James Clark authored
    'perf inject' with Coresight data generates files that cannot be opened
    when only the last branch option is specified:
    
      perf inject -i perf.data --itrace=l -o inject.data
      perf script -i inject.data
      0x33faa8 [0x8]: failed to process type: 9 [Bad address]
    
    This is because cs_etm__synth_instruction_sample() is called even when
    the sample type for instructions hasn't been setup. Last branch records
    are attached to instruction samples so it doesn't make sense to generate
    them when --itrace=i isn't specified anyway.
    
    This change disables all calls of cs_etm__synth_instruction_sample()
    unless --itrace=i is specified, resulting in a file with no samples if
    only --itrace=l is provided, rather than a bad file.
    Reviewed-by: default avatarLeo Yan <leo.yan@linaro.org>
    Signed-off-by: default avatarJames Clark <james.clark@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.garry@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: https://lore.kernel.org/r/20220210200620.1227232-2-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9de07369
cs-etm.c 86.6 KB