linux_dsm_epyc7002/tools/perf/util
Stephane Eranian db49a71798 perf stat: Fix bug in handling events in error state
(This is a patch has been sitting in the Intel CQM/CMT driver series for
 a while, despite not depend on it. Sending it now independently since
 the series is being discarded.)

When an event is in error state, read() returns 0 instead of sizeof()
buffer. In certain modes, such as interval printing, ignoring the 0
return value may cause bogus count deltas to be computed and thus
invalid results printed.

This patch fixes this problem by modifying read_counters() to mark the
event as not scaled (scaled = -1) to force the printout routine to show
<NOT COUNTED>.

Signed-off-by: Stephane Eranian <eranian@google.com>
Reviewed-by: David Carrillo-Cisneros <davidcc@google.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Paul Turner <pjt@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/20170412182301.44406-1-davidcc@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2017-04-13 10:40:36 -03:00
..
c++ perf clang: Compile BPF script using builtin clang support 2016-12-05 15:51:45 -03:00
include perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
intel-pt-decoder perf/core improvements and fixes: 2017-03-16 17:29:23 +01:00
libunwind perf unwind: Fix wrongly used regs for aarch64 unwind 2016-06-23 10:30:31 -03:00
scripting-engines Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-02-28 11:38:18 -08:00
annotate.c perf annotate: Use stripped line instead of raw disassemble line 2017-04-11 16:22:23 -03:00
annotate.h perf annotate: Fix missing number of samples for source_line_samples 2017-04-04 21:08:00 -03:00
auxtrace.c perf auxtrace: Fix no_size logic in addr_filter__resolve_kernel_syms() 2017-03-27 11:58:08 -03:00
auxtrace.h perf record: Add support for using symbols in address filters 2016-09-29 11:17:02 -03:00
block-range.c perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
block-range.h perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
bpf-loader.c perf bpf: Add missing newline in debug messages 2017-02-08 08:55:02 -03:00
bpf-loader.h perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event() 2016-07-13 23:09:03 -03:00
bpf-prologue.c perf bpf: Add prologue for BPF programs for fetching arguments 2015-11-18 17:51:04 -03:00
bpf-prologue.h perf bpf: Add prologue for BPF programs for fetching arguments 2015-11-18 17:51:04 -03:00
Build perf tools: Remove support for command aliases 2017-03-28 11:19:59 -03:00
build-id.c perf buildid: Do not assume that readlink() returns a null terminated string 2017-03-27 15:35:06 -03:00
build-id.h perf probe: Support @BUILDID or @FILE suffix for SDT events 2016-07-13 23:09:08 -03:00
cache.h perf tools: Remove support for command aliases 2017-03-28 11:19:59 -03:00
call-path.c perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
call-path.h perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
callchain.c perf callchains: Switch from strtok() to strtok_r() when parsing options 2017-04-11 08:45:09 -03:00
callchain.h perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
cgroup.c perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t 2017-03-03 19:07:14 -03:00
cgroup.h perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t 2017-03-03 19:07:14 -03:00
cloexec.c perf tools: Introduce weak alternative to sched_getcpu() 2016-07-12 15:20:34 -03:00
cloexec.h tools build: Add test for sched_getcpu() 2017-03-03 19:07:19 -03:00
color.c perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
color.h
comm.c perf comm: Convert comm_str.refcnt from atomic_t to refcount_t 2017-03-03 19:07:15 -03:00
comm.h
config.c perf tools: Do not fail in case of empty HOME env variable 2017-03-31 11:26:04 -03:00
config.h perf config: Mark where are config items from (user or system) 2016-11-14 13:10:37 -03:00
counts.c
counts.h
cpumap.c perf cpumap: Introduce cpu_map__snprint_mask() 2017-03-03 19:07:17 -03:00
cpumap.h perf cpumap: Introduce cpu_map__snprint_mask() 2017-03-03 19:07:17 -03:00
cs-etm.h perf tools: Add coresight etm PMU record capabilities 2016-09-22 12:19:40 -03:00
ctype.c perf ui/stdio: Align column header for hierarchy output 2016-02-24 20:21:12 -03:00
data-convert-bt.c perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
data-convert-bt.h perf data ctf: Pass convert options through opts structure 2016-06-28 10:54:55 -03:00
data-convert.h perf data ctf: Add 'all' option 2016-06-28 10:54:56 -03:00
data.c tools: Introduce str_error_r() 2016-07-12 15:19:47 -03:00
data.h perf data: Add perf_data_file__switch() helper 2016-04-14 08:57:54 -03:00
db-export.c perf thread: Adopt get_main_thread from db-export.c 2016-05-30 12:41:43 -03:00
db-export.h perf script: Add call path id to exported sample in db export 2016-05-06 13:00:53 -03:00
debug.c perf utils: Add perf_quiet_option() 2017-02-20 11:16:32 -03:00
debug.h perf utils: Add perf_quiet_option() 2017-02-20 11:16:32 -03:00
demangle-java.c perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-java.h perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-rust.c perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
demangle-rust.h perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
drv_configs.c perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
drv_configs.h perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
dso.c perf dso: Convert dso.refcnt from atomic_t to refcount_t 2017-03-03 19:07:15 -03:00
dso.h perf dso: Convert dso.refcnt from atomic_t to refcount_t 2017-03-03 19:07:15 -03:00
dump-insn.c perf script: Add 'brstackinsn' for branch stacks 2017-03-16 09:24:35 -03:00
dump-insn.h perf script: Add 'brstackinsn' for branch stacks 2017-03-16 09:24:35 -03:00
dwarf-aux.c perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-aux.h perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-regs.c perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
env.c perf tools: Replace _SC_NPROCESSORS_CONF with max_present_cpu in cpu_topology_map 2017-02-17 12:56:35 -03:00
env.h perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
event.c perf tools: Refactor the code to strip command name with {l,r}trim() 2017-04-11 15:23:26 -03:00
event.h perf tools: Handle partial AUX records and print a warning 2017-03-17 11:52:18 -03:00
evlist.c perf evlist: Clarify a bit the use of perf_mmap->refcnt 2017-03-03 19:07:16 -03:00
evlist.h perf evlist: Convert perf_map.refcnt from atomic_t to refcount_t 2017-03-03 19:07:15 -03:00
evsel_fprintf.c perf symbols: No need to check if sym->name is NULL 2017-02-13 17:22:34 -03:00
evsel.c perf stat: Fix bug in handling events in error state 2017-04-13 10:40:36 -03:00
evsel.h perf pmu: Add support for MetricName JSON attribute 2017-03-23 11:42:31 -03:00
expr.h perf tools: Add a simple expression parser for JSON 2017-03-23 11:39:27 -03:00
expr.y perf tools: Add a simple expression parser for JSON 2017-03-23 11:39:27 -03:00
find-vdso-map.c
genelf_debug.c perf jit: add source line info support 2016-02-05 12:33:09 -03:00
genelf.c perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
genelf.h perf jit: Generate .eh_frame/.eh_frame_hdr in DSO 2016-10-24 11:07:40 -03:00
generate-cmdlist.sh perf tools: Do not show trace command if it's not compiled in 2016-01-08 12:46:17 -03:00
group.h perf stat: Basic support for TopDown in perf stat 2016-06-06 17:04:15 -03:00
header.c perf tools: Do not print missing features in pipe-mode 2017-04-11 16:22:22 -03:00
header.h perf pmu: Use pmu_events table to create aliases 2016-10-03 19:58:00 -03:00
help-unknown-cmd.c perf tools: Remove support for command aliases 2017-03-28 11:19:59 -03:00
help-unknown-cmd.h perf tools: Move help_unknown_cmd() to its own file 2015-12-14 12:30:37 -03:00
hist.c perf utils: Fix spelling mistake: "Invalud" -> "Invalid" 2017-03-30 11:09:42 -03:00
hist.h perf tools: Add 'cgroup_id' sort order keyword 2017-03-14 15:17:37 -03:00
intel-bts.c perf intel-pt/bts: Report instruction bytes and length in sample 2016-10-24 10:31:32 -03:00
intel-bts.h
intel-pt.c perf tools: Propagate perf_config() errors 2017-01-27 12:23:33 -03:00
intel-pt.h perf intel-pt: Record address filter in AUXTRACE_INFO event 2016-09-29 11:17:05 -03:00
intlist.c
intlist.h perf intlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:39:19 -03:00
jit.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
jitdump.c perf jit: Check JITHEADER_VERSION 2016-10-24 11:07:40 -03:00
jitdump.h perf jit: Add unwinding support 2016-10-24 11:07:39 -03:00
kvm-stat.h perf kvm/powerpc: Port perf kvm stat to powerpc 2016-01-29 17:49:54 -03:00
levenshtein.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
levenshtein.h
llvm-utils.c perf tools: Propagate perf_config() errors 2017-01-27 12:23:33 -03:00
llvm-utils.h perf llvm: Extract helpers in llvm-utils.c 2016-12-05 15:51:42 -03:00
lzma.c perf tools: Fix error handling of lzma decompression 2016-08-24 11:20:58 -03:00
machine.c perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
machine.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
map.c perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
map.h perf map: Convert map_groups.refcnt from atomic_t to refcount_t 2017-03-03 19:07:15 -03:00
mem-events.c perf c2c report: Add struct c2c_stats::tot_hitm field 2016-11-23 10:44:05 -03:00
mem-events.h perf c2c report: Add struct c2c_stats::tot_hitm field 2016-11-23 10:44:05 -03:00
namespaces.c perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
namespaces.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
ordered-events.c perf inject: Copy events when reordering events in pipe mode 2017-04-11 15:23:41 -03:00
ordered-events.h perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
parse-branch-options.c perf tools: Add missing object file to the python binding linkage list 2016-10-28 11:29:45 -02:00
parse-branch-options.h perf tools: Implement branch_type event parameter 2016-10-24 11:07:35 -03:00
parse-events.c perf list: Move extra details printing to new option 2017-03-23 11:42:31 -03:00
parse-events.h perf list: Move extra details printing to new option 2017-03-23 11:42:31 -03:00
parse-events.l perf jevents: Handle events including .c and .o 2016-10-17 11:24:18 -03:00
parse-events.y perf pmu: Special case uncore_ prefix 2017-03-21 16:10:59 -03:00
parse-regs-options.c perf subcmd: Create subcmd library 2015-12-17 14:27:14 -03:00
parse-regs-options.h perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
path.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
perf_regs.c perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ 2017-03-28 12:25:30 -03:00
perf_regs.h perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ 2017-03-28 12:25:30 -03:00
perf-hooks-list.h perf tools: Introduce perf hooks 2016-11-29 12:13:27 -03:00
perf-hooks.c perf tools: Pass context to perf hook functions 2016-12-05 15:51:42 -03:00
perf-hooks.h perf tools: Pass context to perf hook functions 2016-12-05 15:51:42 -03:00
PERF-VERSION-GEN
pmu.c perf pmu: Refactor wordwrap() with ltrim() 2017-04-11 08:45:10 -03:00
pmu.h perf list: Move extra details printing to new option 2017-03-23 11:42:31 -03:00
pmu.l
pmu.y
probe-event.c perf probe: Change MAX_CMDLEN 2017-03-21 10:34:59 -03:00
probe-event.h perf tools: Add missing struct definition in probe_event.h 2016-11-25 11:25:46 -03:00
probe-file.c perf/sdt/x86: Move OP parser to tools/perf/arch/x86/ 2017-03-28 12:25:30 -03:00
probe-file.h perf kretprobes: Offset from reloc_sym if kernel supports it 2017-03-14 15:17:39 -03:00
probe-finder.c scripts/spelling.txt: add "an union" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
probe-finder.h perf probe: Fix to probe on gcc generated functions in modules 2017-01-16 15:43:04 -03:00
pstack.c
pstack.h
python-ext-sources perf tools: Add missing object file to the python binding linkage list 2016-10-28 11:29:45 -02:00
python.c perf tools: Make is_printable_array global 2016-07-18 19:49:47 -03:00
quote.c perf tools: Normalize sq_quote_argv() error reporting 2016-10-24 11:07:44 -03:00
quote.h perf quote: Disentangle headers 2016-07-12 15:19:55 -03:00
rb_resort.h perf rb_resort: Rename for_each() macros to for_each_entry() 2016-06-23 11:35:07 -03:00
rblist.c
rblist.h
record.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
session.c perf session: Don't rely on evlist in pipe mode 2017-04-11 16:22:20 -03:00
session.h perf evsel: Move some methods from session.[ch] to evsel.[ch] 2016-04-13 10:11:52 -03:00
setup.py perf python: Filter out -specs=/a/b/c from the python binding cc options 2017-02-17 10:31:13 -03:00
sort.c perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
sort.h perf report: Show inline stack for browser mode 2017-03-27 12:12:59 -03:00
srcline.c perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
stat-shadow.c perf pmu: Add support for MetricName JSON attribute 2017-03-23 11:42:31 -03:00
stat.c perf utils: Check verbose flag properly 2017-02-20 11:35:54 -03:00
stat.h perf stat: Output JSON MetricExpr metric 2017-03-23 11:42:30 -03:00
strbuf.c perf strbuf: Add missing headers 2016-07-12 15:19:55 -03:00
strbuf.h perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
strfilter.c tools strfilter: Use __fallthrough 2017-02-08 17:31:10 -03:00
strfilter.h
string.c perf string: Simplify ltrim() implementation 2017-04-11 15:23:39 -03:00
strlist.c perf tools: Add file_only config option to strlist 2016-01-12 12:42:07 -03:00
strlist.h perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
svghelper.c perf timechart: Use NSEC_PER_U?SEC 2016-08-23 15:37:33 -03:00
svghelper.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
symbol_fprintf.c perf symbols: No need to check if sym->name is NULL 2017-02-13 17:22:34 -03:00
symbol-elf.c perf report: Find the inline stack for a given address 2017-03-27 12:00:38 -03:00
symbol-minimal.c perf report: Find the inline stack for a given address 2017-03-27 12:00:38 -03:00
symbol.c perf symbols: Fix symbols__fixup_end heuristic for corner cases 2017-03-17 10:30:22 -03:00
symbol.h perf report: Introduce --inline option 2017-03-27 12:01:46 -03:00
syscalltbl.c perf tools: Build syscall table .c header from kernel's syscall_64.tbl 2016-04-08 09:58:14 -03:00
syscalltbl.h perf tools: Allow generating per-arch syscall table arrays 2016-04-08 09:58:14 -03:00
target.c perf target: str_error_r() always returns the buffer it receives 2016-07-29 11:54:35 -03:00
target.h
term.c perf tools: Move term functions out of util.c 2015-12-09 13:42:02 -03:00
term.h perf tools: Move term functions out of util.c 2015-12-09 13:42:02 -03:00
thread_map.c perf thread_map: Convert thread_map.refcnt from atomic_t to refcount_t 2017-03-03 19:07:16 -03:00
thread_map.h perf thread_map: Convert thread_map.refcnt from atomic_t to refcount_t 2017-03-03 19:07:16 -03:00
thread-stack.c perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread-stack.h perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread.c perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
thread.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
time-utils.c perf tools: Move parse_nsec_time to time-utils.c 2016-12-01 13:02:39 -03:00
time-utils.h perf tools: Move parse_nsec_time to time-utils.c 2016-12-01 13:02:39 -03:00
tool.h perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info 2017-03-14 11:38:23 -03:00
top.c
top.h perf top: Use machine->kptr_restrict_warned 2016-05-20 11:43:55 -03:00
trace-event-info.c perf tools: Create for_each_event macro for tracepoints iteration 2017-01-31 16:20:08 -03:00
trace-event-parse.c perf util: Save pid-cmdline mapping into tracing header 2017-01-26 11:42:59 -03:00
trace-event-read.c perf utils: Null terminate buf in read_ftrace_printk() 2017-03-27 15:37:35 -03:00
trace-event-scripting.c perf scripting: Don't die if scripting can't be setup, disable it 2016-10-28 11:29:44 -02:00
trace-event.c perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trace-event.h perf util: Save pid-cmdline mapping into tracing header 2017-01-26 11:42:59 -03:00
trigger.h perf tools: Introduce trigger class 2016-04-28 09:58:58 -03:00
tsc.c perf tools: Use 64-bit shifts with (TSC) time conversion 2016-03-08 10:11:18 +01:00
tsc.h perf jit: Add support for using TSC as a timestamp 2016-04-01 18:42:55 -03:00
unwind-libdw.c perf unwind: Use addr_location::addr instead of ip for entries 2016-08-16 15:23:29 -03:00
unwind-libdw.h perf callchain: Add order support for libdw DWARF unwinder 2015-11-23 18:31:13 -03:00
unwind-libunwind-local.c perf unwind: Fix looking up dwarf unwind stack info 2017-01-18 12:29:52 -03:00
unwind-libunwind.c perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
unwind.h perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
usage.c perf tools: Simplify die() mechanism 2016-03-23 12:32:31 -03:00
util-cxx.h perf clang: Update test case to use real BPF script 2016-12-05 15:51:44 -03:00
util.c tools perf util: Make rm_rf(path) argument const 2017-01-31 16:20:07 -03:00
util.h perf report: Enable sorting by srcline as key 2017-03-27 12:13:28 -03:00
values.c perf tools: Don't die on a print function 2017-04-04 12:11:07 -03:00
values.h perf tools: Use normal error reporting when processing PERF_RECORD_READ events 2016-10-24 11:07:44 -03:00
vdso.c perf tools: Find right DSO taking into account if binary is 32 or 64-bit 2016-06-23 10:25:58 -03:00
vdso.h
xyarray.c
xyarray.h
zlib.c