perf parse-events: Set default GH modifier properly
authorNamhyung Kim <namhyung@kernel.org>
Fri, 6 Jun 2025 22:54:31 +0000 (15:54 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 20 Jun 2025 20:33:30 +0000 (13:33 -0700)
commitdcbe6e51a0bb80a40f9a8c87750c291c2364573d
tree1f61f617b8ef2fb71828bfce35d4626d49c3af2e
parent588d22b40480bca9efdb6e24d253baaa5165884c
perf parse-events: Set default GH modifier properly

Commit 7b100989b4f6bce7 ("perf evlist: Remove __evlist__add_default")
changed to use "cycles:P" as a default event.  But the problem is it
cannot set other default modifiers correctly.

perf kvm needs to set attr.exclude_host by default but it didn't work
because of the logic in the parse_events__modifier_list().  Also the
exclude_GH_default was applied only if ":u" modifier was specified -
which is strange.  Move it out after handling the ":GH" and check
perf_host and perf_guest properly.

Before:
  $ ./perf kvm record -vv true |& grep exclude
  (nothing)

But specifying an event (without a modifier) works:

  $ ./perf kvm record -vv -e cycles true |& grep exclude
    exclude_host                     1

After:
It now works for the both cases:

  $ ./perf kvm record -vv true |& grep exclude
    exclude_host                     1

  $ ./perf kvm record -vv -e cycles true |& grep exclude
    exclude_host                     1

Reviewed-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250606225431.2109754-1-namhyung@kernel.org
Fixes: 35c8d21371e9b342 ("perf tools: Don't set attr.exclude_guest by default")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/parse-events.c