On Tue, Jan 13, 2015 at 12:47:59PM +0000, Zhiqiang Zhang wrote: > From:Jiri Olsa <jolsa@xxxxxxxxxx> > > commit f61ff6c06dc8f32c7036013ad802c899ec590607 upstream > Thank you, I'll queue this for the 3.16 kernel as well. Cheers, -- Luís > Linus reported perf report command being interrupted due to processing > of 'out of order' event, with following error: > > Timestamp below last timeslice flush > 0x5733a8 [0x28]: failed to process type: 3 > > I could reproduce the issue and in my case it was caused by one CPU > (mmap) being behind during record and userspace mmap reader seeing the > data after other CPUs data were already stored. > > This is expected under some circumstances because we need to limit the > number of events that we queue for reordering when we receive a > PERF_RECORD_FINISHED_ROUND or when we force flush due to memory > pressure. > > Reported-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> > Cc: Corey Ashford <cjashfor@xxxxxxxxxxxxxxxxxx> > Cc: David Ahern <dsahern@xxxxxxxxx> > Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Matt Fleming <matt.fleming@xxxxxxxxx> > Cc: Namhyung Kim <namhyung@xxxxxxxxxx> > Cc: Paul Mackerras <paulus@xxxxxxxxx> > Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > Cc: Stephane Eranian <eranian@xxxxxxxxxx> > Link: http://lkml.kernel.org/r/1417016371-30249-1-git-send-email-jolsa@xxxxxxxxxx > Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > > [zhangzhiqiang: backport to 3.10: > - adjust context > - commit f61ff6c06d struct events_stats was defined in tools/perf/util/event.h > while 3.10 stable defined in tools/perf/util/hist.h. > - 3.10 stable there is no pr_oe_time() which used for debug. > - After the above adjustments, becomes same to the original patch: > https://github.com/torvalds/linux/commit/f61ff6c06dc8f32c7036013ad802c899ec590607 > ] > > Signed-off-by: Zhiqiang Zhang <zhangzhiqiang.zhang@xxxxxxxxxx> > --- > tools/perf/util/hist.h | 1 + > tools/perf/util/session.c | 5 +++-- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h > index 14c2fe2..20764e0 100644 > --- a/tools/perf/util/hist.h > +++ b/tools/perf/util/hist.h > @@ -34,6 +34,7 @@ struct events_stats { > u32 nr_invalid_chains; > u32 nr_unknown_id; > u32 nr_unprocessable_samples; > + u32 nr_unordered_events; > }; > > enum hist_column { > diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c > index e392202..6f593a7 100644 > --- a/tools/perf/util/session.c > +++ b/tools/perf/util/session.c > @@ -656,8 +656,7 @@ static int perf_session_queue_event(struct perf_session *s, union perf_event *ev > return -ETIME; > > if (timestamp < s->ordered_samples.last_flush) { > - printf("Warning: Timestamp below last timeslice flush\n"); > - return -EINVAL; > + s->stats.nr_unordered_events++; > } > > if (!list_empty(sc)) { > @@ -1057,6 +1056,8 @@ static void perf_session__warn_about_errors(const struct perf_session *session, > "Do you have a KVM guest running and not using 'perf kvm'?\n", > session->stats.nr_unprocessable_samples); > } > + if (session->stats.nr_unordered_events != 0) > + ui__warning("%u out of order events recorded.\n", session->stats.nr_unordered_events); > } > > #define session_done() (*(volatile int *)(&session_done)) > -- > 1.8.3.4 > > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html