return thread;
 }
 
-static void perf_session__warn_about_errors(const struct perf_session *session,
-                                           const struct perf_tool *tool)
+static void perf_tool__warn_about_errors(const struct perf_tool *tool,
+                                        const struct events_stats *stats)
 {
        if (tool->lost == perf_event__process_lost &&
-           session->evlist->stats.nr_events[PERF_RECORD_LOST] != 0) {
+           stats->nr_events[PERF_RECORD_LOST] != 0) {
                ui__warning("Processed %d events and lost %d chunks!\n\n"
                            "Check IO/CPU overload!\n\n",
-                           session->evlist->stats.nr_events[0],
-                           session->evlist->stats.nr_events[PERF_RECORD_LOST]);
+                           stats->nr_events[0],
+                           stats->nr_events[PERF_RECORD_LOST]);
        }
 
-       if (session->evlist->stats.nr_unknown_events != 0) {
+       if (stats->nr_unknown_events != 0) {
                ui__warning("Found %u unknown events!\n\n"
                            "Is this an older tool processing a perf.data "
                            "file generated by a more recent tool?\n\n"
                            "If that is not the case, consider "
                            "reporting to linux-kernel@vger.kernel.org.\n\n",
-                           session->evlist->stats.nr_unknown_events);
+                           stats->nr_unknown_events);
        }
 
-       if (session->evlist->stats.nr_unknown_id != 0) {
+       if (stats->nr_unknown_id != 0) {
                ui__warning("%u samples with id not present in the header\n",
-                           session->evlist->stats.nr_unknown_id);
+                           stats->nr_unknown_id);
        }
 
-       if (session->evlist->stats.nr_invalid_chains != 0) {
+       if (stats->nr_invalid_chains != 0) {
                ui__warning("Found invalid callchains!\n\n"
                            "%u out of %u events were discarded for this reason.\n\n"
                            "Consider reporting to linux-kernel@vger.kernel.org.\n\n",
-                           session->evlist->stats.nr_invalid_chains,
-                           session->evlist->stats.nr_events[PERF_RECORD_SAMPLE]);
+                           stats->nr_invalid_chains,
+                           stats->nr_events[PERF_RECORD_SAMPLE]);
        }
 
-       if (session->evlist->stats.nr_unprocessable_samples != 0) {
+       if (stats->nr_unprocessable_samples != 0) {
                ui__warning("%u unprocessable samples recorded.\n"
                            "Do you have a KVM guest running and not using 'perf kvm'?\n",
-                           session->evlist->stats.nr_unprocessable_samples);
+                           stats->nr_unprocessable_samples);
        }
 
-       if (session->evlist->stats.nr_unordered_events != 0)
-               ui__warning("%u out of order events recorded.\n", session->evlist->stats.nr_unordered_events);
+       if (stats->nr_unordered_events != 0)
+               ui__warning("%u out of order events recorded.\n", stats->nr_unordered_events);
 }
 
 volatile int session_done;
        err = ordered_events__flush(session, tool, OE_FLUSH__FINAL);
 out_err:
        free(buf);
-       perf_session__warn_about_errors(session, tool);
+       perf_tool__warn_about_errors(tool, &session->evlist->stats);
        ordered_events__free(&session->ordered_events);
        return err;
 }
        err = ordered_events__flush(session, tool, OE_FLUSH__FINAL);
 out_err:
        ui_progress__finish();
-       perf_session__warn_about_errors(session, tool);
+       perf_tool__warn_about_errors(tool, &session->evlist->stats);
        ordered_events__free(&session->ordered_events);
        session->one_mmap = false;
        return err;