}
 #endif
 
-static void __p_config_id(char *buf, size_t size, u32 type, u64 value)
+static void __p_config_id(struct perf_pmu *pmu, char *buf, size_t size, u32 type, u64 value)
 {
+       const char *name = perf_pmu__name_from_config(pmu, value);
+
+       if (name) {
+               print_id_hex(name);
+               return;
+       }
        switch (type) {
        case PERF_TYPE_HARDWARE:
                return __p_config_hw_id(buf, size, value);
 #define p_branch_sample_type(val) __p_branch_sample_type(buf, BUF_SIZE, val)
 #define p_read_format(val)     __p_read_format(buf, BUF_SIZE, val)
 #define p_type_id(val)         __p_type_id(pmu, buf, BUF_SIZE, val)
-#define p_config_id(val)       __p_config_id(buf, BUF_SIZE, attr->type, val)
+#define p_config_id(val)       __p_config_id(pmu, buf, BUF_SIZE, attr->type, val)
 
 #define PRINT_ATTRn(_n, _f, _p, _a)                    \
 do {                                                   \
 
        zfree(&pmu->id);
        free(pmu);
 }
+
+const char *perf_pmu__name_from_config(struct perf_pmu *pmu, u64 config)
+{
+       struct perf_pmu_alias *event;
+
+       if (!pmu)
+               return NULL;
+
+       pmu_add_cpu_aliases(pmu);
+       list_for_each_entry(event, &pmu->aliases, list) {
+               struct perf_event_attr attr = {.config = 0,};
+               int ret = perf_pmu__config(pmu, &attr, &event->terms, NULL);
+
+               if (ret == 0 && config == attr.config)
+                       return event->name;
+       }
+       return NULL;
+}
 
 struct perf_pmu *perf_pmu__create_placeholder_core_pmu(struct list_head *core_pmus);
 void perf_pmu__delete(struct perf_pmu *pmu);
 struct perf_pmu *perf_pmus__find_core_pmu(void);
+const char *perf_pmu__name_from_config(struct perf_pmu *pmu, u64 config);
 
 #endif /* __PMU_H */
 
        return EOF;
 }
 
+const char *perf_pmu__name_from_config(struct perf_pmu *pmu __maybe_unused, u64 config __maybe_unused)
+{
+       return NULL;
+}
+
+struct perf_pmu *perf_pmus__find_by_type(unsigned int type __maybe_unused)
+{
+       return NULL;
+}
+
 int perf_pmus__num_core_pmus(void)
 {
        return 1;