return 0;
 }
 
+static int count_lost_samples_event(struct perf_tool *tool,
+                                   union perf_event *event,
+                                   struct perf_sample *sample,
+                                   struct machine *machine __maybe_unused)
+{
+       struct report *rep = container_of(tool, struct report, tool);
+       struct evsel *evsel;
+
+       evsel = evlist__id2evsel(rep->session->evlist, sample->id);
+       if (evsel) {
+               hists__inc_nr_lost_samples(evsel__hists(evsel),
+                                          event->lost_samples.lost);
+       }
+       return 0;
+}
+
 static int process_attr(struct perf_tool *tool __maybe_unused,
                        union perf_event *event,
                        struct evlist **pevlist);
        memset(&rep->tool, 0, sizeof(rep->tool));
        rep->tool.attr = process_attr;
        rep->tool.sample = count_sample_event;
+       rep->tool.lost_samples = count_lost_samples_event;
        rep->tool.no_warn = true;
 }
 
 
        evlist__for_each_entry(evlist, pos) {
                struct hists *hists = evsel__hists(pos);
 
-               if (skip_empty && !hists->stats.nr_samples)
+               if (skip_empty && !hists->stats.nr_samples && !hists->stats.nr_lost_samples)
                        continue;
 
                ret += fprintf(fp, "%s stats:\n", evsel__name(pos));
-               ret += fprintf(fp, "%16s events: %10d\n",
-                              "SAMPLE", hists->stats.nr_samples);
+               if (hists->stats.nr_samples)
+                       ret += fprintf(fp, "%16s events: %10d\n",
+                                      "SAMPLE", hists->stats.nr_samples);
+               if (hists->stats.nr_lost_samples)
+                       ret += fprintf(fp, "%16s events: %10d\n",
+                                      "LOST_SAMPLES", hists->stats.nr_lost_samples);
        }
 
        return ret;