aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/util/event.h1
-rw-r--r--tools/perf/util/session.c11
2 files changed, 6 insertions, 6 deletions
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 5699e7e2a790..50a7b115698c 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -214,6 +214,7 @@ struct events_stats {
214 u32 nr_invalid_chains; 214 u32 nr_invalid_chains;
215 u32 nr_unknown_id; 215 u32 nr_unknown_id;
216 u32 nr_unprocessable_samples; 216 u32 nr_unprocessable_samples;
217 u32 nr_unordered_events;
217}; 218};
218 219
219struct attr_event { 220struct attr_event {
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 6702ac28754b..80dbba095f30 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -521,15 +521,11 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
521 return -ETIME; 521 return -ETIME;
522 522
523 if (timestamp < oe->last_flush) { 523 if (timestamp < oe->last_flush) {
524 WARN_ONCE(1, "Timestamp below last timeslice flush\n"); 524 pr_oe_time(timestamp, "out of order event\n");
525
526 pr_oe_time(timestamp, "out of order event");
527 pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n", 525 pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n",
528 oe->last_flush_type); 526 oe->last_flush_type);
529 527
530 /* We could get out of order messages after forced flush. */ 528 s->stats.nr_unordered_events++;
531 if (oe->last_flush_type != OE_FLUSH__HALF)
532 return -EINVAL;
533 } 529 }
534 530
535 new = ordered_events__new(oe, timestamp, event); 531 new = ordered_events__new(oe, timestamp, event);
@@ -1057,6 +1053,9 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
1057 "Do you have a KVM guest running and not using 'perf kvm'?\n", 1053 "Do you have a KVM guest running and not using 'perf kvm'?\n",
1058 session->stats.nr_unprocessable_samples); 1054 session->stats.nr_unprocessable_samples);
1059 } 1055 }
1056
1057 if (session->stats.nr_unordered_events != 0)
1058 ui__warning("%u out of order events recorded.\n", session->stats.nr_unordered_events);
1060} 1059}
1061 1060
1062volatile int session_done; 1061volatile int session_done;