On Tue, Jan 13, 2015 at 12:47:59PM +0000, Zhiqiang Zhang wrote:
> From:Jiri Olsa <[email protected]>
> 
> 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 <[email protected]>
> Signed-off-by: Jiri Olsa <[email protected]>
> Acked-by: Ingo Molnar <[email protected]>
> Cc: Andi Kleen <[email protected]>
> Cc: Corey Ashford <[email protected]>
> Cc: David Ahern <[email protected]>
> Cc: Frederic Weisbecker <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Linus Torvalds <[email protected]>
> Cc: Matt Fleming <[email protected]>
> Cc: Namhyung Kim <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Stephane Eranian <[email protected]>
> Link: 
> http://lkml.kernel.org/r/[email protected]
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
> 
> [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 <[email protected]>
> ---
>  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 [email protected]
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to