linux/tools/perf/arch/x86/util
Ravi Bangoria eb39bf3256 perf evsel: Don't set exclude_guest by default
Perf tool sets exclude_guest by default while calling perf_event_open().
Because IBS does not have filtering capability, it always gets rejected
by IBS PMU driver and thus perf falls back to non-precise sampling. Fix
it by not setting exclude_guest by default on AMD.

Before:
  $ sudo ./perf record -C 0 -vvv true |& grep precise
    precise_ip                       3
  decreasing precise_ip by one (2)
    precise_ip                       2
  decreasing precise_ip by one (1)
    precise_ip                       1
  decreasing precise_ip by one (0)

After:
  $ sudo ./perf record -C 0 -vvv true |& grep precise
    precise_ip                       3
  decreasing precise_ip by one (2)
    precise_ip                       2

Committer notes:

Fixup init to zero for perf_env in older compilers:

  arch/x86/util/evsel.c:15:26: error: missing field 'os_release' initializer [-Werror,-Wmissing-field-initializers]
          struct perf_env env = {0};
                                  ^

Committer notes:

Namhyung remarked:

  It'd be nice if it can cover explicit "-e cycles:pp" as well.

Ravi clarified:

  For explicit :pp modifier, evsel->precise_max does not get set and thus perf
  does not try with different attr->precise_ip values while exclude_guest set.
  So no issue with explicit :pp:

    $ sudo ./perf record -C 0 -e cycles:pp -vvv |& grep "precise_ip\|exclude_guest"
      precise_ip                       2
      exclude_guest                    1
      precise_ip                       2
      exclude_guest                    1
    switching off exclude_guest, exclude_host
      precise_ip                       2
    ^C

  Also, with :P modifier, evsel->precise_max gets set but exclude_guest does
  not and thus :P also works fine:

    $ sudo ./perf record -C 0 -e cycles:P -vvv |& grep "precise_ip\|exclude_guest"
      precise_ip                       3
    decreasing precise_ip by one (2)
      precise_ip                       2
    ^C

Reported-by: Kim Phillips <kim.phillips@amd.com>
Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20211103072112.32312-1-ravi.bangoria@amd.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-11-07 12:26:24 -03:00
..
archinsn.c tools/perf: Convert to insn_decode() 2021-03-15 12:41:26 +01:00
auxtrace.c tools: Fix off-by 1 relative directory includes 2020-03-06 08:36:46 -03:00
Build perf stat: Enable iostat mode for x86 platforms 2021-04-20 08:40:20 -03:00
dwarf-regs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
event.c perf tools: Support arch specific PERF_SAMPLE_WEIGHT_STRUCT processing 2021-02-18 16:07:06 -03:00
evlist.c perf stat: Add Topdown metrics L2 events as default events 2021-07-09 14:04:32 -03:00
evsel.c perf evsel: Don't set exclude_guest by default 2021-11-07 12:26:24 -03:00
header.c tools: Fix off-by 1 relative directory includes 2020-03-06 08:36:46 -03:00
intel-bts.c perf evlist: Use the right prefix for 'struct evlist' evsel list methods 2020-11-30 14:52:44 -03:00
intel-pt.c perf intel-pt: Use aux_watermark 2021-04-16 16:32:39 +02:00
iostat.c perf iostat: Fix Segmentation fault from NULL 'struct perf_counts_values *' 2021-09-27 09:41:07 -03:00
kvm-stat.c perf x86 kvm-stat: Support to analyze kvm MSR 2021-05-12 12:43:12 -03:00
machine.c tools: Fix off-by 1 relative directory includes 2020-03-06 08:36:46 -03:00
mem-events.c perf tools: Support pmu prefix for mem-store event 2021-06-01 11:04:05 -03:00
perf_regs.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
pmu.c perf pmu: Add PMU alias support 2021-09-03 08:33:26 -03:00
topdown.c perf record: Support sample-read topdown metric group 2020-09-17 15:47:58 -03:00
tsc.c perf tsc: Move out common functions from x86 2020-09-22 13:38:33 -03:00
unwind-libdw.c perf libdw: Fix off-by 1 relative directory includes 2020-06-01 12:24:23 -03:00
unwind-libunwind.c perf unwind: Fix libunwind build failure on i386 systems 2019-09-26 21:59:38 +02:00