kernel_optimize_test/tools/perf/arch
Andi Kleen ca138a7aab perf tools x86: Add support for recording and printing XMM registers
Icelake and later platforms support collecting XMM registers with PEBS
event.

Add support for 'perf script' to dump them, and support for the register
parser in 'perf record -I=' ... to configure them.

For now they are just printed in hex, we could potentially later add
other formats too.

Committer testing:

Before:

  # perf record -IXMM0
  Warning:
  unknown register XMM0, check man page or run 'perf record -I?'

   Usage: perf record [<options>] [<command>]
      or: perf record [<options>] -- <command> [<options>]

  #
  # perf record -I?
  available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15

   Usage: perf record [<options>] [<command>]
      or: perf record [<options>] -- <command> [<options>]
  #

After:

  # perf record -IXMM0
  Error:
  The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles).
  /bin/dmesg | grep -i perf may provide additional information.

  #
  # perf record -I?
  available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 XMM9 XMM10 XMM11 XMM12 XMM13 XMM14 XMM15

   Usage: perf record [<options>] [<command>]
      or: perf record [<options>] -- <command> [<options>]

      -I, --intr-regs[=<any register>]
                            sample selected machine registers on interrupt, use -I ? to list register names
  #

More work is needed to, when faced with such error, warn the user that
that register is not available on the running platform.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20190506141926.13659-1-kan.liang@linux.intel.com
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2019-05-15 16:36:47 -03:00
..
alpha perf tools: Add empty Build files for architectures lacking them 2015-08-06 16:24:15 -03:00
arc/annotate perf annotate: Introduce basic support for ARC 2018-12-17 14:59:42 -03:00
arm perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
arm64 perf annotate: Calculate the max instruction name, align column to that 2019-03-06 16:40:15 -03:00
csky csky: Add support for libdw 2019-05-15 16:36:46 -03:00
mips perf tools: Add empty Build files for architectures lacking them 2015-08-06 16:24:15 -03:00
nds32 perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
parisc perf tools: Add empty Build files for architectures lacking them 2015-08-06 16:24:15 -03:00
powerpc perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
s390 perf annotate: Calculate the max instruction name, align column to that 2019-03-06 16:40:15 -03:00
sh perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
sparc perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
x86 perf tools x86: Add support for recording and printing XMM registers 2019-05-15 16:36:47 -03:00
xtensa perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
Build perf tools: Rename build libperf to perf 2019-02-14 15:18:08 -03:00
common.c perf annotate: Introduce basic support for ARC 2018-12-17 14:59:42 -03:00
common.h perf machine: Record if a arch has a single user/kernel address space 2018-12-17 14:54:07 -03:00