struct machine *machine __maybe_unused)
 {
        struct stat_config_event *config = &event->stat_config;
+       struct perf_stat_config stat_config;
 
 #define HAS(term, val) \
        has_term(config, PERF_STAT_CONFIG_TERM__##term, val)
 
 #undef HAS
 
+       perf_event__read_stat_config(&stat_config, config);
+
+       TEST_ASSERT_VAL("wrong aggr_mode", stat_config.aggr_mode == AGGR_CORE);
+       TEST_ASSERT_VAL("wrong scale",     stat_config.scale == 1);
+       TEST_ASSERT_VAL("wrong interval",  stat_config.interval == 1);
        return 0;
 }
 
 
        return err;
 }
 
+void perf_event__read_stat_config(struct perf_stat_config *config,
+                                 struct stat_config_event *event)
+{
+       unsigned i;
+
+       for (i = 0; i < event->nr; i++) {
+
+               switch (event->data[i].tag) {
+#define CASE(__term, __val)                                    \
+               case PERF_STAT_CONFIG_TERM__##__term:           \
+                       config->__val = event->data[i].val;     \
+                       break;
+
+               CASE(AGGR_MODE, aggr_mode)
+               CASE(SCALE,     scale)
+               CASE(INTERVAL,  interval)
+#undef CASE
+               default:
+                       pr_warning("unknown stat config term %" PRIu64 "\n",
+                                  event->data[i].tag);
+               }
+       }
+}
+
 size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp)
 {
        const char *s;
 
                                       struct perf_stat_config *config,
                                       perf_event__handler_t process,
                                       struct machine *machine);
+void perf_event__read_stat_config(struct perf_stat_config *config,
+                                 struct stat_config_event *event);
 
 int perf_event__synthesize_modules(struct perf_tool *tool,
                                   perf_event__handler_t process,