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)
 {
        struct evsel *evsel = evlist__first(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", test_config(evsel, 0x3c));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        return TEST_OK;
 }
 
 
        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", test_config(evsel, 0x3c));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        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", test_config(evsel, 0xc0));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        return TEST_OK;
 }
        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", test_config(evsel, 0x3c));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
        return TEST_OK;
 }
 
        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", test_config(evsel, 0x3c));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
        TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
 
        evsel = evsel__next(evsel);
 
        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", test_config(evsel, 0x3c));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       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 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", test_config(evsel, 0xc0));
+       TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
+       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 exclude_user", !evsel->core.attr.exclude_user);
        TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);
 
 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")) {
-               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", 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", test_config(evsel, 0x1a));
+       perf_evlist__for_each_evsel(&evlist->core, evsel) {
+               struct perf_pmu *pmu = perf_pmu__find_by_type(evsel->attr.type);
 
-       /* The type of second event is randome value */
-       evsel = evsel__next(evsel);
-       TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
+               TEST_ASSERT_VAL("missing pmu", pmu);
+               TEST_ASSERT_VAL("unexpected pmu", !strncmp(pmu->name, "cpu_", 4));
+               TEST_ASSERT_VAL("wrong config", test_perf_config(evsel, 0x1a));
+       }
        return TEST_OK;
 }