Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-23 Thread Heinrich Fink
On Mon, 23 Sep 2019 at 14:06, Daniel Vetter  wrote:
>
> On Sat, Sep 21, 2019 at 10:33 AM Heinrich Fink  
> wrote:
> >
> > On Tue, 3 Sep 2019 at 11:53, Daniel Vetter  wrote:
> > >
> > > On Tue, Sep 03, 2019 at 11:19:19AM +0200, Heinrich Fink wrote:
> > > > On Tue, 3 Sep 2019 at 09:46, Daniel Vetter  wrote:
> > > > >
> > > > > On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> > > > > > Store the timestamp of the current vblank in the new field 'time' 
> > > > > > of the
> > > > > > vblank trace event. If the timestamp is calculated by a driver that
> > > > > > supports high-precision vblank timing, set the field 'high-prec' to
> > > > > > 'true'.
> > > > > >
> > > > > > User space can now access actual hardware vblank times via the 
> > > > > > tracing
> > > > > > infrastructure. Tracing applications (such as GPUVis, see [0] for
> > > > > > related discussion), can use the newly added information to conduct 
> > > > > > a
> > > > > > more accurate analysis of display timing.
> > > > > >
> > > > > > v2 Fix author name (missing last name)
> > > > > >
> > > > > > [0] https://github.com/mikesart/gpuvis/issues/30
> > > > > >
> > > > > > Reviewed-by: Daniel Vetter 
> > > > > > Signed-off-by: Heinrich Fink 
> > > > >
> > > > > Applied, thanks.
> > > >
> > > > thanks! One question: After sending v2, I got an email from patchwork
> > > > pointing at some failed style checks (CHECK:PARENTHESIS_ALIGNMENT,
> > > > CHECK:COMPARISON_TO_NULL). Just so I know for the future, are these
> > > > checks mandatory to be addressed? I haven't had a chance to address
> > > > them yet. FWIW, linux-tree/scripts/checkpatch.pl did not complain.
> > >
> > > It's the same script, but I think CI uses some different options/flags. I
> > > generally ignore these, but also generally good to stick to the style.
> > >
> > > $ dim checkpatch
> > >
> > > in our maintainer-tools should give you the drm flavoured checkpatch.
> > > -Daniel
> >
> > Apologies if that's a basic question, but at which point is this patch
> > landing upstream? I am monitoring the 5.4 merge window and couldn't
> > figure out what the stages are for this patch to get there. Is there
> > anything that is still left to do from my side?
>
> It missed the 5.4 feature cut-off just barely:
>
> commit 6914f8eb64f9de5308e2968968145cf6eb304025
> Author: Heinrich Fink 
> Date:   Mon Sep 2 16:24:12 2019 +0200
>
> drm: Add high-precision time to vblank trace event
>
> is your patch. Should land in 5.5 (and will show up in linux-next
> after -rc1 is tagged).

Thanks for the explanation, I missed that this landed in drm-misc.

cheers, Heinrich

> -Daniel
>
> >
> > Thanks, Heinrich
> >
> > >
> > > >
> > > > - Heinrich
> > > >
> > > > > -Daniel
> > > > >
> > > > > > ---
> > > > > >  drivers/gpu/drm/drm_trace.h  | 14 ++
> > > > > >  drivers/gpu/drm/drm_vblank.c |  3 ++-
> > > > > >  2 files changed, 12 insertions(+), 5 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/drm_trace.h 
> > > > > > b/drivers/gpu/drm/drm_trace.h
> > > > > > index 471eb927474b..11c6dd577e8e 100644
> > > > > > --- a/drivers/gpu/drm/drm_trace.h
> > > > > > +++ b/drivers/gpu/drm/drm_trace.h
> > > > > > @@ -13,17 +13,23 @@ struct drm_file;
> > > > > >  #define TRACE_INCLUDE_FILE drm_trace
> > > > > >
> > > > > >  TRACE_EVENT(drm_vblank_event,
> > > > > > - TP_PROTO(int crtc, unsigned int seq),
> > > > > > - TP_ARGS(crtc, seq),
> > > > > > + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool 
> > > > > > high_prec),
> > > > > > + TP_ARGS(crtc, seq, time, high_prec),
> > > > > >   TP_STRUCT__entry(
> > > > > >   __field(int, crtc)
> > > > > >   __field(unsigned int, seq)
> > > > > > + __field(ktime_t, time)
> > > > > > + __field(bool, high_prec)
> > > > > >   ),
> > > > > >   TP_fast_assign(
> > > > > >   __entry->crtc = crtc;
> > > > > >   __entry->seq = seq;
> > > > > > - ),
> > > > > > - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> > > > > > + __entry->time = time;
> > > > > > + __entry->high_prec = high_prec;
> > > > > > + ),
> > > > > > + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> > > > > > + __entry->crtc, __entry->seq, __entry->time,
> > > > > > + __entry->high_prec ? "true" : "false")
> > > > > >  );
> > > > > >
> > > > > >  TRACE_EVENT(drm_vblank_event_queued,
> > > > > > diff --git a/drivers/gpu/drm/drm_vblank.c 
> > > > > > b/drivers/gpu/drm/drm_vblank.c
> > > > > > index fd1fbc77871f..c99feda25dea 100644
> > > > > > --- a/drivers/gpu/drm/drm_vblank.c
> > > > > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > > > > @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct 
> > > > > > drm_device *dev, unsigned int pipe)
> > > > > >   sen

Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-23 Thread Daniel Vetter
On Sat, Sep 21, 2019 at 10:33 AM Heinrich Fink  wrote:
>
> On Tue, 3 Sep 2019 at 11:53, Daniel Vetter  wrote:
> >
> > On Tue, Sep 03, 2019 at 11:19:19AM +0200, Heinrich Fink wrote:
> > > On Tue, 3 Sep 2019 at 09:46, Daniel Vetter  wrote:
> > > >
> > > > On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> > > > > Store the timestamp of the current vblank in the new field 'time' of 
> > > > > the
> > > > > vblank trace event. If the timestamp is calculated by a driver that
> > > > > supports high-precision vblank timing, set the field 'high-prec' to
> > > > > 'true'.
> > > > >
> > > > > User space can now access actual hardware vblank times via the tracing
> > > > > infrastructure. Tracing applications (such as GPUVis, see [0] for
> > > > > related discussion), can use the newly added information to conduct a
> > > > > more accurate analysis of display timing.
> > > > >
> > > > > v2 Fix author name (missing last name)
> > > > >
> > > > > [0] https://github.com/mikesart/gpuvis/issues/30
> > > > >
> > > > > Reviewed-by: Daniel Vetter 
> > > > > Signed-off-by: Heinrich Fink 
> > > >
> > > > Applied, thanks.
> > >
> > > thanks! One question: After sending v2, I got an email from patchwork
> > > pointing at some failed style checks (CHECK:PARENTHESIS_ALIGNMENT,
> > > CHECK:COMPARISON_TO_NULL). Just so I know for the future, are these
> > > checks mandatory to be addressed? I haven't had a chance to address
> > > them yet. FWIW, linux-tree/scripts/checkpatch.pl did not complain.
> >
> > It's the same script, but I think CI uses some different options/flags. I
> > generally ignore these, but also generally good to stick to the style.
> >
> > $ dim checkpatch
> >
> > in our maintainer-tools should give you the drm flavoured checkpatch.
> > -Daniel
>
> Apologies if that's a basic question, but at which point is this patch
> landing upstream? I am monitoring the 5.4 merge window and couldn't
> figure out what the stages are for this patch to get there. Is there
> anything that is still left to do from my side?

It missed the 5.4 feature cut-off just barely:

commit 6914f8eb64f9de5308e2968968145cf6eb304025
Author: Heinrich Fink 
Date:   Mon Sep 2 16:24:12 2019 +0200

drm: Add high-precision time to vblank trace event

is your patch. Should land in 5.5 (and will show up in linux-next
after -rc1 is tagged).
-Daniel

>
> Thanks, Heinrich
>
> >
> > >
> > > - Heinrich
> > >
> > > > -Daniel
> > > >
> > > > > ---
> > > > >  drivers/gpu/drm/drm_trace.h  | 14 ++
> > > > >  drivers/gpu/drm/drm_vblank.c |  3 ++-
> > > > >  2 files changed, 12 insertions(+), 5 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
> > > > > index 471eb927474b..11c6dd577e8e 100644
> > > > > --- a/drivers/gpu/drm/drm_trace.h
> > > > > +++ b/drivers/gpu/drm/drm_trace.h
> > > > > @@ -13,17 +13,23 @@ struct drm_file;
> > > > >  #define TRACE_INCLUDE_FILE drm_trace
> > > > >
> > > > >  TRACE_EVENT(drm_vblank_event,
> > > > > - TP_PROTO(int crtc, unsigned int seq),
> > > > > - TP_ARGS(crtc, seq),
> > > > > + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool 
> > > > > high_prec),
> > > > > + TP_ARGS(crtc, seq, time, high_prec),
> > > > >   TP_STRUCT__entry(
> > > > >   __field(int, crtc)
> > > > >   __field(unsigned int, seq)
> > > > > + __field(ktime_t, time)
> > > > > + __field(bool, high_prec)
> > > > >   ),
> > > > >   TP_fast_assign(
> > > > >   __entry->crtc = crtc;
> > > > >   __entry->seq = seq;
> > > > > - ),
> > > > > - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> > > > > + __entry->time = time;
> > > > > + __entry->high_prec = high_prec;
> > > > > + ),
> > > > > + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> > > > > + __entry->crtc, __entry->seq, __entry->time,
> > > > > + __entry->high_prec ? "true" : "false")
> > > > >  );
> > > > >
> > > > >  TRACE_EVENT(drm_vblank_event_queued,
> > > > > diff --git a/drivers/gpu/drm/drm_vblank.c 
> > > > > b/drivers/gpu/drm/drm_vblank.c
> > > > > index fd1fbc77871f..c99feda25dea 100644
> > > > > --- a/drivers/gpu/drm/drm_vblank.c
> > > > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > > > @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct 
> > > > > drm_device *dev, unsigned int pipe)
> > > > >   send_vblank_event(dev, e, seq, now);
> > > > >   }
> > > > >
> > > > > - trace_drm_vblank_event(pipe, seq);
> > > > > + trace_drm_vblank_event(pipe, seq, now,
> > > > > + dev->driver->get_vblank_timestamp != NULL);
> > > > >  }
> > > > >
> > > > >  /**
> > > > > --
> > > > > 2.23.0.rc1
> > > > >
> > > >
> > > > --
> > > > Daniel Vetter
> > > > Software Engineer, Intel Corpor

Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-22 Thread Heinrich Fink
On Tue, 3 Sep 2019 at 11:53, Daniel Vetter  wrote:
>
> On Tue, Sep 03, 2019 at 11:19:19AM +0200, Heinrich Fink wrote:
> > On Tue, 3 Sep 2019 at 09:46, Daniel Vetter  wrote:
> > >
> > > On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> > > > Store the timestamp of the current vblank in the new field 'time' of the
> > > > vblank trace event. If the timestamp is calculated by a driver that
> > > > supports high-precision vblank timing, set the field 'high-prec' to
> > > > 'true'.
> > > >
> > > > User space can now access actual hardware vblank times via the tracing
> > > > infrastructure. Tracing applications (such as GPUVis, see [0] for
> > > > related discussion), can use the newly added information to conduct a
> > > > more accurate analysis of display timing.
> > > >
> > > > v2 Fix author name (missing last name)
> > > >
> > > > [0] https://github.com/mikesart/gpuvis/issues/30
> > > >
> > > > Reviewed-by: Daniel Vetter 
> > > > Signed-off-by: Heinrich Fink 
> > >
> > > Applied, thanks.
> >
> > thanks! One question: After sending v2, I got an email from patchwork
> > pointing at some failed style checks (CHECK:PARENTHESIS_ALIGNMENT,
> > CHECK:COMPARISON_TO_NULL). Just so I know for the future, are these
> > checks mandatory to be addressed? I haven't had a chance to address
> > them yet. FWIW, linux-tree/scripts/checkpatch.pl did not complain.
>
> It's the same script, but I think CI uses some different options/flags. I
> generally ignore these, but also generally good to stick to the style.
>
> $ dim checkpatch
>
> in our maintainer-tools should give you the drm flavoured checkpatch.
> -Daniel

Apologies if that's a basic question, but at which point is this patch
landing upstream? I am monitoring the 5.4 merge window and couldn't
figure out what the stages are for this patch to get there. Is there
anything that is still left to do from my side?

Thanks, Heinrich

>
> >
> > - Heinrich
> >
> > > -Daniel
> > >
> > > > ---
> > > >  drivers/gpu/drm/drm_trace.h  | 14 ++
> > > >  drivers/gpu/drm/drm_vblank.c |  3 ++-
> > > >  2 files changed, 12 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
> > > > index 471eb927474b..11c6dd577e8e 100644
> > > > --- a/drivers/gpu/drm/drm_trace.h
> > > > +++ b/drivers/gpu/drm/drm_trace.h
> > > > @@ -13,17 +13,23 @@ struct drm_file;
> > > >  #define TRACE_INCLUDE_FILE drm_trace
> > > >
> > > >  TRACE_EVENT(drm_vblank_event,
> > > > - TP_PROTO(int crtc, unsigned int seq),
> > > > - TP_ARGS(crtc, seq),
> > > > + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool 
> > > > high_prec),
> > > > + TP_ARGS(crtc, seq, time, high_prec),
> > > >   TP_STRUCT__entry(
> > > >   __field(int, crtc)
> > > >   __field(unsigned int, seq)
> > > > + __field(ktime_t, time)
> > > > + __field(bool, high_prec)
> > > >   ),
> > > >   TP_fast_assign(
> > > >   __entry->crtc = crtc;
> > > >   __entry->seq = seq;
> > > > - ),
> > > > - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> > > > + __entry->time = time;
> > > > + __entry->high_prec = high_prec;
> > > > + ),
> > > > + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> > > > + __entry->crtc, __entry->seq, __entry->time,
> > > > + __entry->high_prec ? "true" : "false")
> > > >  );
> > > >
> > > >  TRACE_EVENT(drm_vblank_event_queued,
> > > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > > > index fd1fbc77871f..c99feda25dea 100644
> > > > --- a/drivers/gpu/drm/drm_vblank.c
> > > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > > @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct 
> > > > drm_device *dev, unsigned int pipe)
> > > >   send_vblank_event(dev, e, seq, now);
> > > >   }
> > > >
> > > > - trace_drm_vblank_event(pipe, seq);
> > > > + trace_drm_vblank_event(pipe, seq, now,
> > > > + dev->driver->get_vblank_timestamp != NULL);
> > > >  }
> > > >
> > > >  /**
> > > > --
> > > > 2.23.0.rc1
> > > >
> > >
> > > --
> > > Daniel Vetter
> > > Software Engineer, Intel Corporation
> > > http://blog.ffwll.ch
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-03 Thread Daniel Vetter
On Tue, Sep 03, 2019 at 11:19:19AM +0200, Heinrich Fink wrote:
> On Tue, 3 Sep 2019 at 09:46, Daniel Vetter  wrote:
> >
> > On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> > > Store the timestamp of the current vblank in the new field 'time' of the
> > > vblank trace event. If the timestamp is calculated by a driver that
> > > supports high-precision vblank timing, set the field 'high-prec' to
> > > 'true'.
> > >
> > > User space can now access actual hardware vblank times via the tracing
> > > infrastructure. Tracing applications (such as GPUVis, see [0] for
> > > related discussion), can use the newly added information to conduct a
> > > more accurate analysis of display timing.
> > >
> > > v2 Fix author name (missing last name)
> > >
> > > [0] https://github.com/mikesart/gpuvis/issues/30
> > >
> > > Reviewed-by: Daniel Vetter 
> > > Signed-off-by: Heinrich Fink 
> >
> > Applied, thanks.
> 
> thanks! One question: After sending v2, I got an email from patchwork
> pointing at some failed style checks (CHECK:PARENTHESIS_ALIGNMENT,
> CHECK:COMPARISON_TO_NULL). Just so I know for the future, are these
> checks mandatory to be addressed? I haven't had a chance to address
> them yet. FWIW, linux-tree/scripts/checkpatch.pl did not complain.

It's the same script, but I think CI uses some different options/flags. I
generally ignore these, but also generally good to stick to the style.

$ dim checkpatch

in our maintainer-tools should give you the drm flavoured checkpatch.
-Daniel

> 
> - Heinrich
> 
> > -Daniel
> >
> > > ---
> > >  drivers/gpu/drm/drm_trace.h  | 14 ++
> > >  drivers/gpu/drm/drm_vblank.c |  3 ++-
> > >  2 files changed, 12 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
> > > index 471eb927474b..11c6dd577e8e 100644
> > > --- a/drivers/gpu/drm/drm_trace.h
> > > +++ b/drivers/gpu/drm/drm_trace.h
> > > @@ -13,17 +13,23 @@ struct drm_file;
> > >  #define TRACE_INCLUDE_FILE drm_trace
> > >
> > >  TRACE_EVENT(drm_vblank_event,
> > > - TP_PROTO(int crtc, unsigned int seq),
> > > - TP_ARGS(crtc, seq),
> > > + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool 
> > > high_prec),
> > > + TP_ARGS(crtc, seq, time, high_prec),
> > >   TP_STRUCT__entry(
> > >   __field(int, crtc)
> > >   __field(unsigned int, seq)
> > > + __field(ktime_t, time)
> > > + __field(bool, high_prec)
> > >   ),
> > >   TP_fast_assign(
> > >   __entry->crtc = crtc;
> > >   __entry->seq = seq;
> > > - ),
> > > - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> > > + __entry->time = time;
> > > + __entry->high_prec = high_prec;
> > > + ),
> > > + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> > > + __entry->crtc, __entry->seq, __entry->time,
> > > + __entry->high_prec ? "true" : "false")
> > >  );
> > >
> > >  TRACE_EVENT(drm_vblank_event_queued,
> > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > > index fd1fbc77871f..c99feda25dea 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct 
> > > drm_device *dev, unsigned int pipe)
> > >   send_vblank_event(dev, e, seq, now);
> > >   }
> > >
> > > - trace_drm_vblank_event(pipe, seq);
> > > + trace_drm_vblank_event(pipe, seq, now,
> > > + dev->driver->get_vblank_timestamp != NULL);
> > >  }
> > >
> > >  /**
> > > --
> > > 2.23.0.rc1
> > >
> >
> > --
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-03 Thread Heinrich Fink
On Tue, 3 Sep 2019 at 09:46, Daniel Vetter  wrote:
>
> On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> > Store the timestamp of the current vblank in the new field 'time' of the
> > vblank trace event. If the timestamp is calculated by a driver that
> > supports high-precision vblank timing, set the field 'high-prec' to
> > 'true'.
> >
> > User space can now access actual hardware vblank times via the tracing
> > infrastructure. Tracing applications (such as GPUVis, see [0] for
> > related discussion), can use the newly added information to conduct a
> > more accurate analysis of display timing.
> >
> > v2 Fix author name (missing last name)
> >
> > [0] https://github.com/mikesart/gpuvis/issues/30
> >
> > Reviewed-by: Daniel Vetter 
> > Signed-off-by: Heinrich Fink 
>
> Applied, thanks.

thanks! One question: After sending v2, I got an email from patchwork
pointing at some failed style checks (CHECK:PARENTHESIS_ALIGNMENT,
CHECK:COMPARISON_TO_NULL). Just so I know for the future, are these
checks mandatory to be addressed? I haven't had a chance to address
them yet. FWIW, linux-tree/scripts/checkpatch.pl did not complain.

- Heinrich

> -Daniel
>
> > ---
> >  drivers/gpu/drm/drm_trace.h  | 14 ++
> >  drivers/gpu/drm/drm_vblank.c |  3 ++-
> >  2 files changed, 12 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
> > index 471eb927474b..11c6dd577e8e 100644
> > --- a/drivers/gpu/drm/drm_trace.h
> > +++ b/drivers/gpu/drm/drm_trace.h
> > @@ -13,17 +13,23 @@ struct drm_file;
> >  #define TRACE_INCLUDE_FILE drm_trace
> >
> >  TRACE_EVENT(drm_vblank_event,
> > - TP_PROTO(int crtc, unsigned int seq),
> > - TP_ARGS(crtc, seq),
> > + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool 
> > high_prec),
> > + TP_ARGS(crtc, seq, time, high_prec),
> >   TP_STRUCT__entry(
> >   __field(int, crtc)
> >   __field(unsigned int, seq)
> > + __field(ktime_t, time)
> > + __field(bool, high_prec)
> >   ),
> >   TP_fast_assign(
> >   __entry->crtc = crtc;
> >   __entry->seq = seq;
> > - ),
> > - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> > + __entry->time = time;
> > + __entry->high_prec = high_prec;
> > + ),
> > + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> > + __entry->crtc, __entry->seq, __entry->time,
> > + __entry->high_prec ? "true" : "false")
> >  );
> >
> >  TRACE_EVENT(drm_vblank_event_queued,
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index fd1fbc77871f..c99feda25dea 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct 
> > drm_device *dev, unsigned int pipe)
> >   send_vblank_event(dev, e, seq, now);
> >   }
> >
> > - trace_drm_vblank_event(pipe, seq);
> > + trace_drm_vblank_event(pipe, seq, now,
> > + dev->driver->get_vblank_timestamp != NULL);
> >  }
> >
> >  /**
> > --
> > 2.23.0.rc1
> >
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-03 Thread Daniel Vetter
On Mon, Sep 02, 2019 at 04:24:12PM +0200, Heinrich Fink wrote:
> Store the timestamp of the current vblank in the new field 'time' of the
> vblank trace event. If the timestamp is calculated by a driver that
> supports high-precision vblank timing, set the field 'high-prec' to
> 'true'.
> 
> User space can now access actual hardware vblank times via the tracing
> infrastructure. Tracing applications (such as GPUVis, see [0] for
> related discussion), can use the newly added information to conduct a
> more accurate analysis of display timing.
> 
> v2 Fix author name (missing last name)
> 
> [0] https://github.com/mikesart/gpuvis/issues/30
> 
> Reviewed-by: Daniel Vetter 
> Signed-off-by: Heinrich Fink 

Applied, thanks.
-Daniel

> ---
>  drivers/gpu/drm/drm_trace.h  | 14 ++
>  drivers/gpu/drm/drm_vblank.c |  3 ++-
>  2 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
> index 471eb927474b..11c6dd577e8e 100644
> --- a/drivers/gpu/drm/drm_trace.h
> +++ b/drivers/gpu/drm/drm_trace.h
> @@ -13,17 +13,23 @@ struct drm_file;
>  #define TRACE_INCLUDE_FILE drm_trace
>  
>  TRACE_EVENT(drm_vblank_event,
> - TP_PROTO(int crtc, unsigned int seq),
> - TP_ARGS(crtc, seq),
> + TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool high_prec),
> + TP_ARGS(crtc, seq, time, high_prec),
>   TP_STRUCT__entry(
>   __field(int, crtc)
>   __field(unsigned int, seq)
> + __field(ktime_t, time)
> + __field(bool, high_prec)
>   ),
>   TP_fast_assign(
>   __entry->crtc = crtc;
>   __entry->seq = seq;
> - ),
> - TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
> + __entry->time = time;
> + __entry->high_prec = high_prec;
> + ),
> + TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
> + __entry->crtc, __entry->seq, __entry->time,
> + __entry->high_prec ? "true" : "false")
>  );
>  
>  TRACE_EVENT(drm_vblank_event_queued,
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index fd1fbc77871f..c99feda25dea 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct drm_device 
> *dev, unsigned int pipe)
>   send_vblank_event(dev, e, seq, now);
>   }
>  
> - trace_drm_vblank_event(pipe, seq);
> + trace_drm_vblank_event(pipe, seq, now,
> + dev->driver->get_vblank_timestamp != NULL);
>  }
>  
>  /**
> -- 
> 2.23.0.rc1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

[PATCH v2] drm: Add high-precision time to vblank trace event

2019-09-02 Thread Heinrich Fink
Store the timestamp of the current vblank in the new field 'time' of the
vblank trace event. If the timestamp is calculated by a driver that
supports high-precision vblank timing, set the field 'high-prec' to
'true'.

User space can now access actual hardware vblank times via the tracing
infrastructure. Tracing applications (such as GPUVis, see [0] for
related discussion), can use the newly added information to conduct a
more accurate analysis of display timing.

v2 Fix author name (missing last name)

[0] https://github.com/mikesart/gpuvis/issues/30

Reviewed-by: Daniel Vetter 
Signed-off-by: Heinrich Fink 
---
 drivers/gpu/drm/drm_trace.h  | 14 ++
 drivers/gpu/drm/drm_vblank.c |  3 ++-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
index 471eb927474b..11c6dd577e8e 100644
--- a/drivers/gpu/drm/drm_trace.h
+++ b/drivers/gpu/drm/drm_trace.h
@@ -13,17 +13,23 @@ struct drm_file;
 #define TRACE_INCLUDE_FILE drm_trace
 
 TRACE_EVENT(drm_vblank_event,
-   TP_PROTO(int crtc, unsigned int seq),
-   TP_ARGS(crtc, seq),
+   TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool high_prec),
+   TP_ARGS(crtc, seq, time, high_prec),
TP_STRUCT__entry(
__field(int, crtc)
__field(unsigned int, seq)
+   __field(ktime_t, time)
+   __field(bool, high_prec)
),
TP_fast_assign(
__entry->crtc = crtc;
__entry->seq = seq;
-   ),
-   TP_printk("crtc=%d, seq=%u", __entry->crtc, __entry->seq)
+   __entry->time = time;
+   __entry->high_prec = high_prec;
+   ),
+   TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
+   __entry->crtc, __entry->seq, __entry->time,
+   __entry->high_prec ? "true" : "false")
 );
 
 TRACE_EVENT(drm_vblank_event_queued,
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index fd1fbc77871f..c99feda25dea 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -1731,7 +1731,8 @@ static void drm_handle_vblank_events(struct drm_device 
*dev, unsigned int pipe)
send_vblank_event(dev, e, seq, now);
}
 
-   trace_drm_vblank_event(pipe, seq);
+   trace_drm_vblank_event(pipe, seq, now,
+   dev->driver->get_vblank_timestamp != NULL);
 }
 
 /**
-- 
2.23.0.rc1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel