perf test: Mask configs with extended types then test
authorIan Rogers <irogers@google.com>
Tue, 2 May 2023 22:38:19 +0000 (15:38 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 15 May 2023 12:12:13 +0000 (09:12 -0300)
Add helper to test the config of an evsel. Dependent on the type of
the evsel, mask the config so that high-bits containing the extended
PMU type are ignored.

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-13-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/parse-events.c

index c06fa76..4b00cb4 100644 (file)
 #define PERF_TP_SAMPLE_TYPE (PERF_SAMPLE_RAW | PERF_SAMPLE_TIME | \
                             PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD)
 
+static bool test_config(const struct evsel *evsel, __u64 expected_config)
+{
+       __u32 type = evsel->core.attr.type;
+       __u64 config = evsel->core.attr.config;
+
+       if (type == PERF_TYPE_HARDWARE || type == PERF_TYPE_HW_CACHE) {
+               /*
+                * HARDWARE and HW_CACHE events encode the PMU's extended type
+                * in the top 32-bits. Mask in order to ignore.
+                */
+               config &= PERF_HW_EVENT_MASK;
+       }
+       return config == expected_config;
+}
+
 #ifdef HAVE_LIBTRACEEVENT
 
 #if defined(__s390x__)
@@ -87,7 +102,7 @@ static int test__checkevent_raw(struct evlist *evlist)
 
        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 config", 0x1a == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
        return TEST_OK;
 }
 
@@ -97,7 +112,7 @@ static int test__checkevent_numeric(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", 1 == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 1 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1));
        return TEST_OK;
 }
 
@@ -107,8 +122,7 @@ static int test__checkevent_symbolic_name(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        return TEST_OK;
 }
 
@@ -118,8 +132,7 @@ static int test__checkevent_symbolic_name_config(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        /*
         * The period value gets configured within evlist__config,
         * while this test executes only parse events method.
@@ -139,8 +152,7 @@ static int test__checkevent_symbolic_alias(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_SW_PAGE_FAULTS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_SW_PAGE_FAULTS));
        return TEST_OK;
 }
 
@@ -150,7 +162,7 @@ static int test__checkevent_genhw(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HW_CACHE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", (1 << 16) == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1 << 16));
        return TEST_OK;
 }
 
@@ -160,7 +172,7 @@ static int test__checkevent_breakpoint(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type", (HW_BREAKPOINT_R | HW_BREAKPOINT_W) ==
                                         evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len", HW_BREAKPOINT_LEN_4 ==
@@ -174,7 +186,7 @@ static int test__checkevent_breakpoint_x(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type",
                        HW_BREAKPOINT_X == evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len", sizeof(long) == evsel->core.attr.bp_len);
@@ -188,7 +200,7 @@ static int test__checkevent_breakpoint_r(struct evlist *evlist)
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type",
                        PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type",
                        HW_BREAKPOINT_R == evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len",
@@ -203,7 +215,7 @@ static int test__checkevent_breakpoint_w(struct evlist *evlist)
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type",
                        PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type",
                        HW_BREAKPOINT_W == evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len",
@@ -218,7 +230,7 @@ static int test__checkevent_breakpoint_rw(struct evlist *evlist)
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type",
                        PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type",
                (HW_BREAKPOINT_R|HW_BREAKPOINT_W) == evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len",
@@ -447,7 +459,7 @@ static int test__checkevent_pmu(struct evlist *evlist)
 
        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 config",    10 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config",    test_config(evsel, 10));
        TEST_ASSERT_VAL("wrong config1",    1 == evsel->core.attr.config1);
        TEST_ASSERT_VAL("wrong config2",    3 == evsel->core.attr.config2);
        TEST_ASSERT_VAL("wrong config3",    0 == evsel->core.attr.config3);
@@ -469,7 +481,7 @@ static int test__checkevent_list(struct evlist *evlist)
 
        /* r1 */
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 1 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1));
        TEST_ASSERT_VAL("wrong config1", 0 == evsel->core.attr.config1);
        TEST_ASSERT_VAL("wrong config2", 0 == evsel->core.attr.config2);
        TEST_ASSERT_VAL("wrong config3", 0 == evsel->core.attr.config3);
@@ -492,7 +504,7 @@ static int test__checkevent_list(struct evlist *evlist)
        /* 1:1:hp */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", 1 == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 1 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -509,14 +521,14 @@ static int test__checkevent_pmu_name(struct evlist *evlist)
        /* cpu/config=1,name=krava/u */
        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",  1 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1));
        TEST_ASSERT_VAL("wrong name", !strcmp(evsel__name(evsel), "krava"));
 
        /* cpu/config=2/u" */
        evsel = evsel__next(evsel);
        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",  2 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 2));
        TEST_ASSERT_VAL("wrong name",
                        !strcmp(evsel__name(evsel), "cpu/config=2/u"));
 
@@ -530,7 +542,7 @@ static int test__checkevent_pmu_partial_time_callgraph(struct evlist *evlist)
        /* cpu/config=1,call-graph=fp,time,period=100000/ */
        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",  1 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 1));
        /*
         * The period, time and callgraph value gets configured within evlist__config,
         * while this test executes only parse events method.
@@ -542,7 +554,7 @@ static int test__checkevent_pmu_partial_time_callgraph(struct evlist *evlist)
        /* cpu/config=2,call-graph=no,time=0,period=2000/ */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",  2 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 2));
        /*
         * The period, time and callgraph value gets configured within evlist__config,
         * while this test executes only parse events method.
@@ -696,8 +708,7 @@ static int test__group1(struct evlist *evlist)
        /* instructions:k */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", evsel->core.attr.exclude_hv);
@@ -712,8 +723,7 @@ static int test__group1(struct evlist *evlist)
        /* cycles:upp */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -738,8 +748,7 @@ static int test__group2(struct evlist *evlist)
        /* faults + :ku modifier */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_SW_PAGE_FAULTS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_SW_PAGE_FAULTS));
        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_hv", evsel->core.attr.exclude_hv);
@@ -754,8 +763,7 @@ static int test__group2(struct evlist *evlist)
        /* cache-references + :u modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_REFERENCES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_REFERENCES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -769,8 +777,7 @@ static int test__group2(struct evlist *evlist)
        /* cycles:k */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -813,8 +820,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
        /* group1 cycles:kppp */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -830,8 +836,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
        /* group2 cycles + G modifier */
        evsel = leader = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -848,7 +853,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
        /* group2 1:3 + G modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", 1 == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 3 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 3));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -862,8 +867,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
        /* instructions:u */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", evsel->core.attr.exclude_hv);
@@ -887,8 +891,7 @@ static int test__group4(struct evlist *evlist __maybe_unused)
        /* cycles:u + p */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -905,8 +908,7 @@ static int test__group4(struct evlist *evlist __maybe_unused)
        /* instructions:kp + p */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", evsel->core.attr.exclude_hv);
@@ -931,8 +933,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
        /* cycles + G */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -948,8 +949,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
        /* instructions + G */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -963,8 +963,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
        /* cycles:G */
        evsel = leader = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -980,8 +979,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
        /* instructions:G */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -994,8 +992,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
        /* cycles */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1017,8 +1014,7 @@ static int test__group_gh1(struct evlist *evlist)
        /* cycles + :H group modifier */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1033,8 +1029,7 @@ static int test__group_gh1(struct evlist *evlist)
        /* cache-misses:G + :H group modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1057,8 +1052,7 @@ static int test__group_gh2(struct evlist *evlist)
        /* cycles + :G group modifier */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1073,8 +1067,7 @@ static int test__group_gh2(struct evlist *evlist)
        /* cache-misses:H + :G group modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1097,8 +1090,7 @@ static int test__group_gh3(struct evlist *evlist)
        /* cycles:G + :u group modifier */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1113,8 +1105,7 @@ static int test__group_gh3(struct evlist *evlist)
        /* cache-misses:H + :u group modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1137,8 +1128,7 @@ static int test__group_gh4(struct evlist *evlist)
        /* cycles:G + :uG group modifier */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1153,8 +1143,7 @@ static int test__group_gh4(struct evlist *evlist)
        /* cache-misses:H + :uG group modifier */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1176,8 +1165,7 @@ static int test__leader_sample1(struct evlist *evlist)
        /* cycles - sampling group leader */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1191,8 +1179,7 @@ static int test__leader_sample1(struct evlist *evlist)
        /* cache-misses - not sampling */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1205,8 +1192,7 @@ static int test__leader_sample1(struct evlist *evlist)
        /* branch-misses - not sampling */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_BRANCH_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES));
        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_hv", !evsel->core.attr.exclude_hv);
@@ -1229,8 +1215,7 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)
        /* instructions - sampling group leader */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_INSTRUCTIONS == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1244,8 +1229,7 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)
        /* branch-misses - not sampling */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_BRANCH_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES));
        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_hv", evsel->core.attr.exclude_hv);
@@ -1281,8 +1265,7 @@ static int test__pinned_group(struct evlist *evlist)
        /* cycles - group leader */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        TEST_ASSERT_VAL("wrong pinned", evsel->core.attr.pinned);
@@ -1290,14 +1273,12 @@ static int test__pinned_group(struct evlist *evlist)
        /* cache-misses - can not be pinned, but will go on with the leader */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        TEST_ASSERT_VAL("wrong pinned", !evsel->core.attr.pinned);
 
        /* branch-misses - ditto */
        evsel = evsel__next(evsel);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_BRANCH_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES));
        TEST_ASSERT_VAL("wrong pinned", !evsel->core.attr.pinned);
 
        return TEST_OK;
@@ -1325,8 +1306,7 @@ static int test__exclusive_group(struct evlist *evlist)
        /* cycles - group leader */
        evsel = leader = evlist__first(evlist);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        TEST_ASSERT_VAL("wrong exclusive", evsel->core.attr.exclusive);
@@ -1334,14 +1314,12 @@ static int test__exclusive_group(struct evlist *evlist)
        /* cache-misses - can not be pinned, but will go on with the leader */
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_CACHE_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES));
        TEST_ASSERT_VAL("wrong exclusive", !evsel->core.attr.exclusive);
 
        /* branch-misses - ditto */
        evsel = evsel__next(evsel);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_HW_BRANCH_MISSES == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES));
        TEST_ASSERT_VAL("wrong exclusive", !evsel->core.attr.exclusive);
 
        return TEST_OK;
@@ -1352,7 +1330,7 @@ static int test__checkevent_breakpoint_len(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type", (HW_BREAKPOINT_R | HW_BREAKPOINT_W) ==
                                         evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len", HW_BREAKPOINT_LEN_1 ==
@@ -1367,7 +1345,7 @@ static int test__checkevent_breakpoint_len_w(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0));
        TEST_ASSERT_VAL("wrong bp_type", HW_BREAKPOINT_W ==
                                         evsel->core.attr.bp_type);
        TEST_ASSERT_VAL("wrong bp_len", HW_BREAKPOINT_LEN_2 ==
@@ -1395,8 +1373,7 @@ static int test__checkevent_precise_max_modifier(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config",
-                       PERF_COUNT_SW_TASK_CLOCK == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_SW_TASK_CLOCK));
        return TEST_OK;
 }
 
@@ -1454,7 +1431,9 @@ static int test__checkevent_complex_name(struct evlist *evlist)
 {
        struct evsel *evsel = evlist__first(evlist);
 
-       TEST_ASSERT_VAL("wrong complex name parsing", evsel__name_is(evsel, "COMPLEX_CYCLES_NAME:orig=cycles,desc=chip-clock-ticks"));
+       TEST_ASSERT_VAL("wrong complex name parsing",
+                       evsel__name_is(evsel,
+                                      "COMPLEX_CYCLES_NAME:orig=cycles,desc=chip-clock-ticks"));
        return TEST_OK;
 }
 
@@ -1464,7 +1443,7 @@ static int test__checkevent_raw_pmu(struct evlist *evlist)
 
        TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0x1a == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
        return TEST_OK;
 }
 
@@ -1473,7 +1452,7 @@ static int test__sym_event_slash(struct evlist *evlist)
        struct evsel *evsel = evlist__first(evlist);
 
        TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE);
-       TEST_ASSERT_VAL("wrong config", evsel->core.attr.config == PERF_COUNT_HW_CPU_CYCLES);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);
        return TEST_OK;
 }
@@ -1483,7 +1462,7 @@ static int test__sym_event_dc(struct evlist *evlist)
        struct evsel *evsel = evlist__first(evlist);
 
        TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE);
-       TEST_ASSERT_VAL("wrong config", evsel->core.attr.config == PERF_COUNT_HW_CPU_CYCLES);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);
        return TEST_OK;
 }
@@ -1550,7 +1529,7 @@ static int test__hybrid_hw_event_with_pmu(struct evlist *evlist)
 
        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 config", 0x3c == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
        return TEST_OK;
 }
 
@@ -1561,12 +1540,12 @@ static int test__hybrid_hw_group_event(struct evlist *evlist)
        evsel = leader = evlist__first(evlist);
        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", 0x3c == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
 
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0xc0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0xc0));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        return TEST_OK;
 }
@@ -1582,7 +1561,7 @@ static int test__hybrid_sw_hw_group_event(struct evlist *evlist)
 
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0x3c == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        return TEST_OK;
 }
@@ -1594,7 +1573,7 @@ static int test__hybrid_hw_sw_group_event(struct evlist *evlist)
        evsel = leader = evlist__first(evlist);
        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", 0x3c == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
 
        evsel = evsel__next(evsel);
@@ -1610,14 +1589,14 @@ static int test__hybrid_group_modifier1(struct evlist *evlist)
        evsel = leader = evlist__first(evlist);
        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", 0x3c == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x3c));
        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_kernel", !evsel->core.attr.exclude_kernel);
 
        evsel = evsel__next(evsel);
        TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
-       TEST_ASSERT_VAL("wrong config", 0xc0 == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0xc0));
        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_kernel", evsel->core.attr.exclude_kernel);
@@ -1631,17 +1610,17 @@ static int test__hybrid_raw1(struct evlist *evlist)
        if (!perf_pmu__hybrid_mounted("cpu_atom")) {
                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 config", 0x1a == evsel->core.attr.config);
+               TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
                return TEST_OK;
        }
 
        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", 0x1a == evsel->core.attr.config);
+       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", 0x1a == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
        return TEST_OK;
 }
 
@@ -1651,7 +1630,7 @@ static int test__hybrid_raw2(struct evlist *evlist)
 
        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 config", 0x1a == evsel->core.attr.config);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
        return TEST_OK;
 }