kernel-fxtec-pro1x/tools/perf
Adrian Hunter 484c4d9a9c perf script: Fix invalid LBR/binary mismatch error
[ Upstream commit 5172672da02e483d9b3c4d814c3482d0c8ffb1a6 ]

The 'len' returned by grab_bb() includes an extra MAXINSN bytes to allow
for the last instruction, so the the final 'offs' will not be 'len'.
Fix the error condition logic accordingly.

Before:

  $ perf record -e '{intel_pt//,cpu/mem_inst_retired.all_loads,aux-sample-size=8192/pp}:u' grep -rqs jhgjhg /boot
  [ perf record: Woken up 19 times to write data ]
  [ perf record: Captured and wrote 2.274 MB perf.data ]
  $ perf script -F +brstackinsn --xed --itrace=i1usl100 | head
            grep 13759 [002]  8091.310257:       1862                                        instructions:uH:      5641d58069eb bmexec+0x86b (/bin/grep)
        bmexec+2485:
        00005641d5806b35                        jnz 0x5641d5806bd0              # MISPRED
        00005641d5806bd0                        movzxb  (%r13,%rdx,1), %eax
        00005641d5806bd6                        add %rdi, %rax
        00005641d5806bd9                        movzxb  -0x1(%rax), %edx
        00005641d5806bdd                        cmp %rax, %r14
        00005641d5806be0                        jnb 0x5641d58069c0              # MISPRED
        mismatch of LBR data and executable
        00005641d58069c0                        movzxb  (%r13,%rdx,1), %edi

After:

  $ perf script -F +brstackinsn --xed --itrace=i1usl100 | head
            grep 13759 [002]  8091.310257:       1862                                        instructions:uH:      5641d58069eb bmexec+0x86b (/bin/grep)
        bmexec+2485:
        00005641d5806b35                        jnz 0x5641d5806bd0              # MISPRED
        00005641d5806bd0                        movzxb  (%r13,%rdx,1), %eax
        00005641d5806bd6                        add %rdi, %rax
        00005641d5806bd9                        movzxb  -0x1(%rax), %edx
        00005641d5806bdd                        cmp %rax, %r14
        00005641d5806be0                        jnb 0x5641d58069c0              # MISPRED
        00005641d58069c0                        movzxb  (%r13,%rdx,1), %edi
        00005641d58069c6                        add %rax, %rdi

Fixes: e98df280bc2a ("perf script brstackinsn: Fix recovery from LBR/binary mismatch")
Reported-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lore.kernel.org/lkml/20191127095631.15663-1-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-13 08:52:55 +01:00
..
arch perf tools: Propagate get_cpuid() error 2019-11-06 13:05:42 +01:00
bench perf bench numa: Fix cpu0 binding 2019-08-29 08:28:36 +02:00
Documentation perf config: Fix an error in the config template documentation 2019-04-20 09:15:57 +02:00
examples/bpf
include/bpf
jvmti perf jvmti: Address gcc string overflow warning for strncpy() 2019-07-26 09:14:04 +02:00
pmu-events perf jevents: Fix period for Intel fixed counters 2019-11-06 13:05:42 +01:00
python
scripts
tests perf tests: Avoid raising SEGV using an obvious NULL dereference 2019-11-06 13:05:41 +01:00
trace perf trace beauty ioctl: Fix off-by-one error in cmd->string table 2019-10-05 13:09:50 +02:00
ui perf hists browser: Fix potential NULL pointer dereference found by the smatch tool 2019-07-31 07:27:06 +02:00
util perf tools: Fix time sorting 2019-11-12 19:20:37 +01:00
.gitignore
Build
builtin-annotate.c
builtin-bench.c
builtin-buildid-cache.c
builtin-buildid-list.c
builtin-c2c.c perf c2c: Fix memory leak in build_cl_output() 2019-11-10 11:27:24 +01:00
builtin-config.c
builtin-data.c
builtin-diff.c
builtin-evlist.c
builtin-ftrace.c perf ftrace: Fix failure to set cpumask when only one cpu is present 2019-08-29 08:28:46 +02:00
builtin-help.c perf help: Remove needless use of strncpy() 2019-07-03 13:14:41 +02:00
builtin-inject.c
builtin-kallsyms.c
builtin-kmem.c perf kmem: Fix memory leak in compact_gfp_flags() 2019-11-10 11:27:25 +01:00
builtin-kvm.c perf tools: Propagate get_cpuid() error 2019-11-06 13:05:42 +01:00
builtin-list.c
builtin-lock.c
builtin-mem.c
builtin-probe.c perf probe: Avoid calling freeing routine multiple times for same pointer 2019-08-16 10:12:48 +02:00
builtin-record.c
builtin-report.c
builtin-sched.c
builtin-script.c perf script: Fix invalid LBR/binary mismatch error 2019-12-13 08:52:55 +01:00
builtin-stat.c perf stat: Reset previous counts on repeat with interval 2019-10-11 18:21:29 +02:00
builtin-timechart.c perf tools: Add missing open_memstream() prototype for systems lacking it 2019-01-26 09:32:41 +01:00
builtin-top.c perf top: Fix potential NULL pointer dereference detected by the smatch tool 2019-07-31 07:27:06 +02:00
builtin-trace.c perf trace: Support multiple "vfs_getname" probes 2019-03-13 14:02:37 -07:00
builtin-version.c perf version: Fix segfault due to missing OPT_END() 2019-08-06 19:06:50 +02:00
builtin.h
check-headers.sh tools include: Adopt linux/bits.h 2019-04-27 09:36:40 +02:00
command-list.txt
CREDITS
design.txt
Makefile
Makefile.config perf build: Add detection of java-11-openjdk-devel package 2019-10-11 18:21:22 +02:00
Makefile.perf
MANIFEST
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h
perf-with-kcore.sh
perf.c perf config: Honour $PERF_CONFIG env var to specify alternate .perfconfig 2019-10-05 13:09:40 +02:00
perf.h perf tools: Increase MAX_NR_CPUS and MAX_CACHES 2019-07-26 09:14:12 +02:00