• Leo Yan's avatar
    perf cs-etm: Correct packets swapping in cs_etm__flush() · d6404de9
    Leo Yan authored
    [ Upstream commit 43fd5666 ]
    
    The structure cs_etm_queue uses 'prev_packet' to point to previous
    packet, this can be used to combine with new coming packet to generate
    samples.
    
    In function cs_etm__flush() it swaps packets only when the flag
    'etm->synth_opts.last_branch' is true, this means that it will not swap
    packets if without option '--itrace=il' to generate last branch entries;
    thus for this case the 'prev_packet' doesn't point to the correct
    previous packet and the stale packet still will be used to generate
    sequential sample.  Thus if dump trace with 'perf script' command we can
    see the incorrect flow with the stale packet's address info.
    
    This patch corrects packets swapping in cs_etm__flush(); except using
    the flag 'etm->synth_opts.last_branch' it also checks the another flag
    'etm->sample_branches', if any flag is true then it swaps packets so can
    save correct content to 'prev_packet'.  Finally this can fix the wrong
    program flow dumping issue.
    
    The patch has a minor refactoring to use 'etm->synth_opts.last_branch'
    instead of 'etmq->etm->synth_opts.last_branch' for condition checking,
    this is consistent with that is done in cs_etm__sample().
    Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
    Reviewed-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Robert Walker <robert.walker@arm.com>
    Cc: coresight@lists.linaro.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1544513908-16805-2-git-send-email-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    d6404de9
Name
Last commit
Last update
..
accounting Loading commit data...
arch Loading commit data...
bpf Loading commit data...
build Loading commit data...
cgroup Loading commit data...
crypto Loading commit data...
firewire Loading commit data...
gpio Loading commit data...
hv Loading commit data...
iio Loading commit data...
include Loading commit data...
kvm/kvm_stat Loading commit data...
laptop Loading commit data...
leds Loading commit data...
lib Loading commit data...
memory-model Loading commit data...
nfsd Loading commit data...
objtool Loading commit data...
pci Loading commit data...
pcmcia Loading commit data...
perf Loading commit data...
power Loading commit data...
scripts Loading commit data...
spi Loading commit data...
testing Loading commit data...
thermal/tmon Loading commit data...
time Loading commit data...
usb Loading commit data...
virtio Loading commit data...
vm Loading commit data...
wmi Loading commit data...
Makefile Loading commit data...