#include "cpumap.h"
 #include "debug.h"
 #include "env.h"
-#include "pmu-hybrid.h"
+#include "pmu.h"
 
 #define PACKAGE_CPUS_FMT \
        "%s/devices/system/cpu/cpu%d/topology/package_cpus_list"
 
 struct hybrid_topology *hybrid_topology__new(void)
 {
-       struct perf_pmu *pmu;
+       struct perf_pmu *pmu = NULL;
        struct hybrid_topology *tp = NULL;
-       u32 nr, i = 0;
+       u32 nr = 0, i = 0;
 
-       nr = perf_pmu__hybrid_pmu_num();
+       if (!perf_pmu__has_hybrid())
+               return NULL;
+
+       while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+               if (pmu->is_core)
+                       nr++;
+       }
        if (nr == 0)
                return NULL;
 
                return NULL;
 
        tp->nr = nr;
-       perf_pmu__for_each_hybrid_pmu(pmu) {
+       while ((pmu = perf_pmu__scan(pmu)) != NULL) {
+               if (!pmu->is_core)
+                       continue;
+
                if (load_hybrid_node(&tp->nodes[i], pmu)) {
                        hybrid_topology__delete(tp);
                        return NULL;