aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-12-10 00:18:06 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-12-10 00:18:06 -0500
commitbee2782f30f66898be3f74ad02e4d1f87a969694 (patch)
treecd175099b587ad14d2e6d5208b9a5781d696dc7c /tools
parent5706ffd045c3810912c4982357d7daa721af3464 (diff)
parent201e7deb9062bb9a8a5bc113e36457c3ff55b226 (diff)
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull leftover perf fixes from Ingo Molnar: "Two perf fixes left over from the previous cycle" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf session: Do not fail on processing out of order event x86/asm/traps: Disable tracing and kprobes in fixup_bad_iret and sync_regs
Diffstat (limited to 'tools')
-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 09b9e8d3fcf7..c4ffe2bd0738 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -242,6 +242,7 @@ struct events_stats {
242 u32 nr_invalid_chains; 242 u32 nr_invalid_chains;
243 u32 nr_unknown_id; 243 u32 nr_unknown_id;
244 u32 nr_unprocessable_samples; 244 u32 nr_unprocessable_samples;
245 u32 nr_unordered_events;
245}; 246};
246 247
247struct attr_event { 248struct attr_event {
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 6ac62ae6b8fa..5f0e05a76c05 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -533,15 +533,11 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
533 return -ETIME; 533 return -ETIME;
534 534
535 if (timestamp < oe->last_flush) { 535 if (timestamp < oe->last_flush) {
536 WARN_ONCE(1, "Timestamp below last timeslice flush\n"); 536 pr_oe_time(timestamp, "out of order event\n");
537
538 pr_oe_time(timestamp, "out of order event");
539 pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n", 537 pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n",
540 oe->last_flush_type); 538 oe->last_flush_type);
541 539
542 /* We could get out of order messages after forced flush. */ 540 s->stats.nr_unordered_events++;
543 if (oe->last_flush_type != OE_FLUSH__HALF)
544 return -EINVAL;
545 } 541 }
546 542
547 new = ordered_events__new(oe, timestamp, event); 543 new = ordered_events__new(oe, timestamp, event);
@@ -1118,6 +1114,9 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
1118 "Do you have a KVM guest running and not using 'perf kvm'?\n", 1114 "Do you have a KVM guest running and not using 'perf kvm'?\n",
1119 session->stats.nr_unprocessable_samples); 1115 session->stats.nr_unprocessable_samples);
1120 } 1116 }
1117
1118 if (session->stats.nr_unordered_events != 0)
1119 ui__warning("%u out of order events recorded.\n", session->stats.nr_unordered_events);
1121} 1120}
1122 1121
1123volatile int session_done; 1122volatile int session_done;