• Robert Walker's avatar
    perf cs-etm: Inject capabilitity for CoreSight traces · e573e978
    Robert Walker authored
    Added user space perf functionality to translate CoreSight traces into
    instruction events with branch stack.
    
    To invoke the new functionality, use the perf inject tool with
    --itrace=il. For example, to translate the ETM trace from perf.data into
    last branch records in a new inj.data file:
    
        $ perf inject --itrace=i100000il128 -i perf.data -o perf.data.new
    
    The 'i' parameter to itrace generates periodic instruction events.  The
    period between instruction events can be specified as a number of
    instructions suffixed by i (default 100000).
    
    The parameter to 'l' specifies the number of entries in the branch stack
    attached to instruction events.
    
    The 'b' parameter to itrace generates events on taken branches.
    
    This patch also fixes the contents of the branch events used in perf
    report - previously branch events were generated for each contiguous
    range of instructions executed.  These are fixed to generate branch
    events between the last address of a range ending in an executed branch
    instruction and the start address of the next range.
    
    Based on patches by Sebastian Pop <s.pop@samsung.com> with additional fixes
    and support for specifying the instruction period.
    Originally-by: default avatarSebastian Pop <s.pop@samsung.com>
    Signed-off-by: default avatarRobert Walker <robert.walker@arm.com>
    Acked-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1518607481-4059-2-git-send-email-robert.walker@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e573e978
cs-etm.c 34.4 KB