return NULL;
 }
 
+static int pmu_max_precise(const char *name)
+{
+       char path[PATH_MAX];
+       int max_precise = -1;
+
+       scnprintf(path, PATH_MAX,
+                "bus/event_source/devices/%s/caps/max_precise",
+                name);
+
+       sysfs__read_int(path, &max_precise);
+       return max_precise;
+}
+
 static struct perf_pmu *pmu_lookup(const char *name)
 {
        struct perf_pmu *pmu;
        pmu->name = strdup(name);
        pmu->type = type;
        pmu->is_uncore = pmu_is_uncore(name);
+       pmu->max_precise = pmu_max_precise(name);
        pmu_add_cpu_aliases(&aliases, pmu);
 
        INIT_LIST_HEAD(&pmu->format);