mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
perf test x86 hybrid: Update test expectations
Don't assume evlist order. Switch to a loop rather than depend on evlist order for raw events test. Update hybrid event expectations. Previous values were based on parsing legacy hardware events from sysfs, update to the correct PMU specific legacy values. Signed-off-by: Ian Rogers <irogers@google.com> Tested-by: Kan Liang <kan.liang@linux.intel.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ahmad Yasin <ahmad.yasin@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Caleb Biggers <caleb.biggers@intel.com> Cc: Edward Baker <edward.baker@intel.com> Cc: Florian Fischer <florian.fischer@muhq.space> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Kang Minchul <tegongkang@gmail.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Perry Taylor <perry.taylor@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Rob Herring <robh@kernel.org> Cc: Samantha Alt <samantha.alt@intel.com> Cc: Stephane Eranian <eranian@google.com> Cc: Sumanth Korikkar <sumanthk@linux.ibm.com> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Thomas Richter <tmricht@linux.ibm.com> Cc: Tiezhu Yang <yangtiezhu@loongson.cn> Cc: Weilin Wang <weilin.wang@intel.com> Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com> Cc: Yang Jihong <yangjihong1@huawei.com> Link: https://lore.kernel.org/r/20230502223851.2234828-22-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ae4aa00a1a
commit
8d8632887d
1 changed files with 26 additions and 28 deletions
|
@ -11,13 +11,18 @@ static bool test_config(const struct evsel *evsel, __u64 expected_config)
|
||||||
return (evsel->core.attr.config & PERF_HW_EVENT_MASK) == expected_config;
|
return (evsel->core.attr.config & PERF_HW_EVENT_MASK) == expected_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool test_perf_config(const struct perf_evsel *evsel, __u64 expected_config)
|
||||||
|
{
|
||||||
|
return (evsel->attr.config & PERF_HW_EVENT_MASK) == expected_config;
|
||||||
|
}
|
||||||
|
|
||||||
static int test__hybrid_hw_event_with_pmu(struct evlist *evlist)
|
static int test__hybrid_hw_event_with_pmu(struct evlist *evlist)
|
||||||
{
|
{
|
||||||
struct evsel *evsel = evlist__first(evlist);
|
struct evsel *evsel = evlist__first(evlist);
|
||||||
|
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
|
TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
|
||||||
return TEST_OK;
|
return TEST_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,13 +32,13 @@ static int test__hybrid_hw_group_event(struct evlist *evlist)
|
||||||
|
|
||||||
evsel = leader = evlist__first(evlist);
|
evsel = leader = evlist__first(evlist);
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
|
|
||||||
evsel = evsel__next(evsel);
|
evsel = evsel__next(evsel);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0xc0));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
return TEST_OK;
|
return TEST_OK;
|
||||||
}
|
}
|
||||||
|
@ -48,8 +53,8 @@ static int test__hybrid_sw_hw_group_event(struct evlist *evlist)
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
|
|
||||||
evsel = evsel__next(evsel);
|
evsel = evsel__next(evsel);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
return TEST_OK;
|
return TEST_OK;
|
||||||
}
|
}
|
||||||
|
@ -60,8 +65,8 @@ static int test__hybrid_hw_sw_group_event(struct evlist *evlist)
|
||||||
|
|
||||||
evsel = leader = evlist__first(evlist);
|
evsel = leader = evlist__first(evlist);
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
|
|
||||||
evsel = evsel__next(evsel);
|
evsel = evsel__next(evsel);
|
||||||
|
@ -76,15 +81,15 @@ static int test__hybrid_group_modifier1(struct evlist *evlist)
|
||||||
|
|
||||||
evsel = leader = evlist__first(evlist);
|
evsel = leader = evlist__first(evlist);
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);
|
TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);
|
||||||
TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);
|
TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);
|
||||||
|
|
||||||
evsel = evsel__next(evsel);
|
evsel = evsel__next(evsel);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0xc0));
|
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
|
||||||
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
|
||||||
TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);
|
TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);
|
||||||
TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);
|
TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);
|
||||||
|
@ -93,22 +98,15 @@ static int test__hybrid_group_modifier1(struct evlist *evlist)
|
||||||
|
|
||||||
static int test__hybrid_raw1(struct evlist *evlist)
|
static int test__hybrid_raw1(struct evlist *evlist)
|
||||||
{
|
{
|
||||||
struct evsel *evsel = evlist__first(evlist);
|
struct perf_evsel *evsel;
|
||||||
|
|
||||||
if (!perf_pmu__hybrid_mounted("cpu_atom")) {
|
perf_evlist__for_each_evsel(&evlist->core, evsel) {
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
|
struct perf_pmu *pmu = perf_pmu__find_by_type(evsel->attr.type);
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
|
TEST_ASSERT_VAL("missing pmu", pmu);
|
||||||
return TEST_OK;
|
TEST_ASSERT_VAL("unexpected pmu", !strncmp(pmu->name, "cpu_", 4));
|
||||||
|
TEST_ASSERT_VAL("wrong config", test_perf_config(evsel, 0x1a));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
|
|
||||||
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
|
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
|
|
||||||
|
|
||||||
/* The type of second event is randome value */
|
|
||||||
evsel = evsel__next(evsel);
|
|
||||||
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
|
|
||||||
return TEST_OK;
|
return TEST_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue