* [PATCH] drm/vblank: Fix flip event vblank count
@ 2017-10-10 13:33 ` Ville Syrjala
2017-10-12 15:20 ` Ville Syrjälä
2017-10-18 7:07 ` Andrzej Hajda
0 siblings, 2 replies; 10+ messages in thread
From: Ville Syrjala @ 2017-10-10 13:33 UTC (permalink / raw)
To: dri-devel; +Cc: stable
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
On machines where the vblank interrupt fires some time after the start
of vblank (or we just manage to race with the vblank interrupt handler)
we will currently stuff a stale vblank counter value into the flip event,
and thus we'll prematurely complete the flip.
Switch over to drm_crtc_accurate_vblank_count() to make sure we have an
up to date counter value, crucially also remember to add the +1 so that
the delayed vblank interrupt won't complete the flip prematurely.
Cc: stable@vger.kernel.org
Cc: Daniel Vetter <daniel@ffwll.ch>
Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_vblank.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 70f2b9593edc..f14e6c92e332 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -869,7 +869,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
assert_spin_locked(&dev->event_lock);
e->pipe = pipe;
- e->event.sequence = drm_vblank_count(dev, pipe);
+ e->event.sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
e->event.crtc_id = crtc->base.id;
list_add_tail(&e->base.link, &dev->vblank_event_list);
}
--
2.13.6
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Fix flip event vblank count
2017-10-10 13:33 ` [PATCH] drm/vblank: Fix flip event vblank count Ville Syrjala
@ 2017-10-12 15:20 ` Ville Syrjälä
2017-10-18 7:07 ` Andrzej Hajda
1 sibling, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2017-10-12 15:20 UTC (permalink / raw)
To: dri-devel; +Cc: stable, Daniel Vetter
On Tue, Oct 10, 2017 at 04:33:22PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> On machines where the vblank interrupt fires some time after the start
> of vblank (or we just manage to race with the vblank interrupt handler)
> we will currently stuff a stale vblank counter value into the flip event,
> and thus we'll prematurely complete the flip.
>
> Switch over to drm_crtc_accurate_vblank_count() to make sure we have an
> up to date counter value, crucially also remember to add the +1 so that
> the delayed vblank interrupt won't complete the flip prematurely.
>
> Cc: stable@vger.kernel.org
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Pushed to drm-misc-next with Daniel's irc r-b:
16:48 < danvet> vsyrjala, r-b, I think
...
17:31 < vsyrjala> danvet: your irc r-b for vblank_accurate+1 still
holds?
17:32 < danvet> vsyrjala, yeah
> ---
> drivers/gpu/drm/drm_vblank.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 70f2b9593edc..f14e6c92e332 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -869,7 +869,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
> assert_spin_locked(&dev->event_lock);
>
> e->pipe = pipe;
> - e->event.sequence = drm_vblank_count(dev, pipe);
> + e->event.sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
> e->event.crtc_id = crtc->base.id;
> list_add_tail(&e->base.link, &dev->vblank_event_list);
> }
> --
> 2.13.6
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Fix flip event vblank count
2017-10-10 13:33 ` [PATCH] drm/vblank: Fix flip event vblank count Ville Syrjala
2017-10-12 15:20 ` Ville Syrjälä
@ 2017-10-18 7:07 ` Andrzej Hajda
2017-10-18 13:50 ` Ville Syrjälä
2017-10-23 15:25 ` [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug Ville Syrjala
1 sibling, 2 replies; 10+ messages in thread
From: Andrzej Hajda @ 2017-10-18 7:07 UTC (permalink / raw)
To: Ville Syrjala, dri-devel; +Cc: stable, Szyprowski, Marek
Hi Ville,
On 10.10.2017 15:33, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> On machines where the vblank interrupt fires some time after the start
> of vblank (or we just manage to race with the vblank interrupt handler)
> we will currently stuff a stale vblank counter value into the flip event,
> and thus we'll prematurely complete the flip.
>
> Switch over to drm_crtc_accurate_vblank_count() to make sure we have an
> up to date counter value, crucially also remember to add the +1 so that
> the delayed vblank interrupt won't complete the flip prematurely.
>
> Cc: stable@vger.kernel.org
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/drm_vblank.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 70f2b9593edc..f14e6c92e332 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -869,7 +869,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
> assert_spin_locked(&dev->event_lock);
>
> e->pipe = pipe;
> - e->event.sequence = drm_vblank_count(dev, pipe);
> + e->event.sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
With this patch drm_crtc_arm_vblank_event calls
drm_crtc_accurate_vblank_count, which requires get_vblank_timestamp
callback, otherwise it issue WARN every time it is called.
On the other side most of the users of drm_crtc_arm_vblank_event do not
implement this callback. As a result one can observe multiple WARNs.
It was observed on Exynos platform but grep shows it can affect many
other platforms:
$ git grep -l drm_crtc_arm_vblank_event drivers/gpu/drm/
drivers/gpu/drm/arm/hdlcd_crtc.c
drivers/gpu/drm/arm/malidp_drv.c
drivers/gpu/drm/drm_vblank.c
drivers/gpu/drm/exynos/exynos_drm_crtc.c
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
drivers/gpu/drm/i915/intel_sprite.c
drivers/gpu/drm/imx/ipuv3-crtc.c
drivers/gpu/drm/mxsfb/mxsfb_crtc.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/pl111/pl111_display.c
drivers/gpu/drm/sti/sti_crtc.c
drivers/gpu/drm/stm/ltdc.c
drivers/gpu/drm/sun4i/sun4i_crtc.c
drivers/gpu/drm/tve200/tve200_display.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/zte/zx_vou.c
$ git grep -l get_vblank_timestamp drivers/gpu/drm/
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/drm_vblank.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/vc4/vc4_drv.c
Regards
Andrzej
> e->event.crtc_id = crtc->base.id;
> list_add_tail(&e->base.link, &dev->vblank_event_list);
> }
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Fix flip event vblank count
2017-10-18 7:07 ` Andrzej Hajda
@ 2017-10-18 13:50 ` Ville Syrjälä
2017-10-18 14:32 ` Daniel Vetter
2017-10-23 15:25 ` [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug Ville Syrjala
1 sibling, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2017-10-18 13:50 UTC (permalink / raw)
To: Andrzej Hajda; +Cc: dri-devel, stable, Szyprowski, Marek, Daniel Vetter
On Wed, Oct 18, 2017 at 09:07:47AM +0200, Andrzej Hajda wrote:
> Hi Ville,
>
> On 10.10.2017 15:33, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > On machines where the vblank interrupt fires some time after the start
> > of vblank (or we just manage to race with the vblank interrupt handler)
> > we will currently stuff a stale vblank counter value into the flip event,
> > and thus we'll prematurely complete the flip.
> >
> > Switch over to drm_crtc_accurate_vblank_count() to make sure we have an
> > up to date counter value, crucially also remember to add the +1 so that
> > the delayed vblank interrupt won't complete the flip prematurely.
> >
> > Cc: stable@vger.kernel.org
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/drm_vblank.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index 70f2b9593edc..f14e6c92e332 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -869,7 +869,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
> > assert_spin_locked(&dev->event_lock);
> >
> > e->pipe = pipe;
> > - e->event.sequence = drm_vblank_count(dev, pipe);
> > + e->event.sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
>
> With this patch drm_crtc_arm_vblank_event calls
> drm_crtc_accurate_vblank_count, which requires get_vblank_timestamp
> callback, otherwise it issue WARN every time it is called.
Argh! Maybe just remove the WARN then?
> On the other side most of the users of drm_crtc_arm_vblank_event do not
> implement this callback. As a result one can observe multiple WARNs.
> It was observed on Exynos platform but grep shows it can affect many
> other platforms:
>
> $ git grep -l drm_crtc_arm_vblank_event drivers/gpu/drm/
> drivers/gpu/drm/arm/hdlcd_crtc.c
> drivers/gpu/drm/arm/malidp_drv.c
> drivers/gpu/drm/drm_vblank.c
> drivers/gpu/drm/exynos/exynos_drm_crtc.c
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> drivers/gpu/drm/i915/intel_sprite.c
> drivers/gpu/drm/imx/ipuv3-crtc.c
> drivers/gpu/drm/mxsfb/mxsfb_crtc.c
> drivers/gpu/drm/nouveau/nouveau_display.c
> drivers/gpu/drm/pl111/pl111_display.c
> drivers/gpu/drm/sti/sti_crtc.c
> drivers/gpu/drm/stm/ltdc.c
> drivers/gpu/drm/sun4i/sun4i_crtc.c
> drivers/gpu/drm/tve200/tve200_display.c
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> drivers/gpu/drm/zte/zx_vou.c
>
> $ git grep -l get_vblank_timestamp drivers/gpu/drm/
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> drivers/gpu/drm/drm_vblank.c
> drivers/gpu/drm/i915/i915_irq.c
> drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
> drivers/gpu/drm/nouveau/nouveau_drm.c
> drivers/gpu/drm/radeon/radeon_drv.c
> drivers/gpu/drm/vc4/vc4_drv.c
>
> Regards
> Andrzej
>
> > e->event.crtc_id = crtc->base.id;
> > list_add_tail(&e->base.link, &dev->vblank_event_list);
> > }
>
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Fix flip event vblank count
2017-10-18 13:50 ` Ville Syrjälä
@ 2017-10-18 14:32 ` Daniel Vetter
0 siblings, 0 replies; 10+ messages in thread
From: Daniel Vetter @ 2017-10-18 14:32 UTC (permalink / raw)
To: Ville Syrjälä
Cc: Andrzej Hajda, dri-devel, stable, Szyprowski, Marek,
Daniel Vetter
On Wed, Oct 18, 2017 at 04:50:19PM +0300, Ville Syrjälä wrote:
> On Wed, Oct 18, 2017 at 09:07:47AM +0200, Andrzej Hajda wrote:
> > Hi Ville,
> >
> > On 10.10.2017 15:33, Ville Syrjala wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > On machines where the vblank interrupt fires some time after the start
> > > of vblank (or we just manage to race with the vblank interrupt handler)
> > > we will currently stuff a stale vblank counter value into the flip event,
> > > and thus we'll prematurely complete the flip.
> > >
> > > Switch over to drm_crtc_accurate_vblank_count() to make sure we have an
> > > up to date counter value, crucially also remember to add the +1 so that
> > > the delayed vblank interrupt won't complete the flip prematurely.
> > >
> > > Cc: stable@vger.kernel.org
> > > Cc: Daniel Vetter <daniel@ffwll.ch>
> > > Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > > drivers/gpu/drm/drm_vblank.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > > index 70f2b9593edc..f14e6c92e332 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -869,7 +869,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
> > > assert_spin_locked(&dev->event_lock);
> > >
> > > e->pipe = pipe;
> > > - e->event.sequence = drm_vblank_count(dev, pipe);
> > > + e->event.sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
> >
> > With this patch drm_crtc_arm_vblank_event calls
> > drm_crtc_accurate_vblank_count, which requires get_vblank_timestamp
> > callback, otherwise it issue WARN every time it is called.
>
> Argh! Maybe just remove the WARN then?
Yeah tune it down to DRM_DEBUG_KMS or something similar I'd say.
-Daniel
>
> > On the other side most of the users of drm_crtc_arm_vblank_event do not
> > implement this callback. As a result one can observe multiple WARNs.
> > It was observed on Exynos platform but grep shows it can affect many
> > other platforms:
> >
> > $ git grep -l drm_crtc_arm_vblank_event drivers/gpu/drm/
> > drivers/gpu/drm/arm/hdlcd_crtc.c
> > drivers/gpu/drm/arm/malidp_drv.c
> > drivers/gpu/drm/drm_vblank.c
> > drivers/gpu/drm/exynos/exynos_drm_crtc.c
> > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
> > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> > drivers/gpu/drm/i915/intel_sprite.c
> > drivers/gpu/drm/imx/ipuv3-crtc.c
> > drivers/gpu/drm/mxsfb/mxsfb_crtc.c
> > drivers/gpu/drm/nouveau/nouveau_display.c
> > drivers/gpu/drm/pl111/pl111_display.c
> > drivers/gpu/drm/sti/sti_crtc.c
> > drivers/gpu/drm/stm/ltdc.c
> > drivers/gpu/drm/sun4i/sun4i_crtc.c
> > drivers/gpu/drm/tve200/tve200_display.c
> > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> > drivers/gpu/drm/zte/zx_vou.c
> >
> > $ git grep -l get_vblank_timestamp drivers/gpu/drm/
> > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> > drivers/gpu/drm/drm_vblank.c
> > drivers/gpu/drm/i915/i915_irq.c
> > drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
> > drivers/gpu/drm/nouveau/nouveau_drm.c
> > drivers/gpu/drm/radeon/radeon_drv.c
> > drivers/gpu/drm/vc4/vc4_drv.c
> >
> > Regards
> > Andrzej
> >
> > > e->event.crtc_id = crtc->base.id;
> > > list_add_tail(&e->base.link, &dev->vblank_event_list);
> > > }
> >
>
> --
> Ville Syrjälä
> Intel OTC
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
2017-10-18 7:07 ` Andrzej Hajda
2017-10-18 13:50 ` Ville Syrjälä
@ 2017-10-23 15:25 ` Ville Syrjala
2017-10-24 9:01 ` Benjamin Gaignard
1 sibling, 1 reply; 10+ messages in thread
From: Ville Syrjala @ 2017-10-23 15:25 UTC (permalink / raw)
To: dri-devel; +Cc: stable, Szyprowski, Marek
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Since commit 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
even drivers that don't implement accurate vblank timestamps will end
up using drm_crtc_accurate_vblank_count(). That leads to a WARN every
time drm_crtc_arm_vblank_event() gets called. The could be as often
as every frame for each active crtc.
Considering drm_crtc_accurate_vblank_count() is never any worse than
the drm_vblank_count() we used previously, let's just skip the WARN
unless DRM_UT_VBL is enabled. That way people won't be bothered by
this unless they're debugging vblank code. And let's also change it
to WARN_ONCE() so that even when you're debugging vblank code you
won't get drowned by constant WARNs.
Cc: stable@vger.kernel.org
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: "Szyprowski, Marek" <m.szyprowski@samsung.com>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Reported-by: Andrzej Hajda <a.hajda@samsung.com>
Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_vblank.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 13722c373a6a..c81c297995c6 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -299,8 +299,8 @@ u32 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
u32 vblank;
unsigned long flags;
- WARN(!dev->driver->get_vblank_timestamp,
- "This function requires support for accurate vblank timestamps.");
+ WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
+ "This function requires support for accurate vblank timestamps.");
spin_lock_irqsave(&dev->vblank_time_lock, flags);
--
2.13.6
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
2017-10-23 15:25 ` [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug Ville Syrjala
@ 2017-10-24 9:01 ` Benjamin Gaignard
2017-10-30 9:19 ` Daniel Vetter
0 siblings, 1 reply; 10+ messages in thread
From: Benjamin Gaignard @ 2017-10-24 9:01 UTC (permalink / raw)
To: Ville Syrjala; +Cc: dri-devel@lists.freedesktop.org, stable, Szyprowski, Marek
2017-10-23 17:25 GMT+02:00 Ville Syrjala <ville.syrjala@linux.intel.com>:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Since commit 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> even drivers that don't implement accurate vblank timestamps will end
> up using drm_crtc_accurate_vblank_count(). That leads to a WARN every
> time drm_crtc_arm_vblank_event() gets called. The could be as often
> as every frame for each active crtc.
>
> Considering drm_crtc_accurate_vblank_count() is never any worse than
> the drm_vblank_count() we used previously, let's just skip the WARN
> unless DRM_UT_VBL is enabled. That way people won't be bothered by
> this unless they're debugging vblank code. And let's also change it
> to WARN_ONCE() so that even when you're debugging vblank code you
> won't get drowned by constant WARNs.
>
> Cc: stable@vger.kernel.org
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: "Szyprowski, Marek" <m.szyprowski@samsung.com>
> Cc: Andrzej Hajda <a.hajda@samsung.com>
> Reported-by: Andrzej Hajda <a.hajda@samsung.com>
> Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
I have tested it on sti and stm driver, it fix the problem, thanks.
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> ---
> drivers/gpu/drm/drm_vblank.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 13722c373a6a..c81c297995c6 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -299,8 +299,8 @@ u32 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
> u32 vblank;
> unsigned long flags;
>
> - WARN(!dev->driver->get_vblank_timestamp,
> - "This function requires support for accurate vblank timestamps.");
> + WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
> + "This function requires support for accurate vblank timestamps.");
>
> spin_lock_irqsave(&dev->vblank_time_lock, flags);
>
> --
> 2.13.6
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
2017-10-24 9:01 ` Benjamin Gaignard
@ 2017-10-30 9:19 ` Daniel Vetter
2017-11-16 14:19 ` Benjamin Gaignard
0 siblings, 1 reply; 10+ messages in thread
From: Daniel Vetter @ 2017-10-30 9:19 UTC (permalink / raw)
To: Benjamin Gaignard
Cc: dri-devel@lists.freedesktop.org, stable, Szyprowski, Marek
On Tue, Oct 24, 2017 at 11:01:32AM +0200, Benjamin Gaignard wrote:
> 2017-10-23 17:25 GMT+02:00 Ville Syrjala <ville.syrjala@linux.intel.com>:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Since commit 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> > even drivers that don't implement accurate vblank timestamps will end
> > up using drm_crtc_accurate_vblank_count(). That leads to a WARN every
> > time drm_crtc_arm_vblank_event() gets called. The could be as often
> > as every frame for each active crtc.
> >
> > Considering drm_crtc_accurate_vblank_count() is never any worse than
> > the drm_vblank_count() we used previously, let's just skip the WARN
> > unless DRM_UT_VBL is enabled. That way people won't be bothered by
> > this unless they're debugging vblank code. And let's also change it
> > to WARN_ONCE() so that even when you're debugging vblank code you
> > won't get drowned by constant WARNs.
> >
> > Cc: stable@vger.kernel.org
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Cc: "Szyprowski, Marek" <m.szyprowski@samsung.com>
> > Cc: Andrzej Hajda <a.hajda@samsung.com>
> > Reported-by: Andrzej Hajda <a.hajda@samsung.com>
> > Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> I have tested it on sti and stm driver, it fix the problem, thanks.
>
> Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
>
> > ---
> > drivers/gpu/drm/drm_vblank.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > index 13722c373a6a..c81c297995c6 100644
> > --- a/drivers/gpu/drm/drm_vblank.c
> > +++ b/drivers/gpu/drm/drm_vblank.c
> > @@ -299,8 +299,8 @@ u32 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
> > u32 vblank;
> > unsigned long flags;
> >
> > - WARN(!dev->driver->get_vblank_timestamp,
> > - "This function requires support for accurate vblank timestamps.");
> > + WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
> > + "This function requires support for accurate vblank timestamps.");
Somewhat a bikeshed, but if we e.g. enable debugging in a CI or piglit
run, then this could change the results. I'd go with a if ()
DRM_DEBUG_VBLANK. Either way:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> >
> > spin_lock_irqsave(&dev->vblank_time_lock, flags);
> >
> > --
> > 2.13.6
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
2017-10-30 9:19 ` Daniel Vetter
@ 2017-11-16 14:19 ` Benjamin Gaignard
2017-11-16 16:14 ` Ville Syrjälä
0 siblings, 1 reply; 10+ messages in thread
From: Benjamin Gaignard @ 2017-11-16 14:19 UTC (permalink / raw)
To: Daniel Vetter
Cc: Ville Syrjala, stable, dri-devel@lists.freedesktop.org,
Szyprowski, Marek
2017-10-30 10:19 GMT+01:00 Daniel Vetter <daniel@ffwll.ch>:
> On Tue, Oct 24, 2017 at 11:01:32AM +0200, Benjamin Gaignard wrote:
>> 2017-10-23 17:25 GMT+02:00 Ville Syrjala <ville.syrjala@linux.intel.com>:
>> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >
>> > Since commit 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
>> > even drivers that don't implement accurate vblank timestamps will end
>> > up using drm_crtc_accurate_vblank_count(). That leads to a WARN every
>> > time drm_crtc_arm_vblank_event() gets called. The could be as often
>> > as every frame for each active crtc.
>> >
>> > Considering drm_crtc_accurate_vblank_count() is never any worse than
>> > the drm_vblank_count() we used previously, let's just skip the WARN
>> > unless DRM_UT_VBL is enabled. That way people won't be bothered by
>> > this unless they're debugging vblank code. And let's also change it
>> > to WARN_ONCE() so that even when you're debugging vblank code you
>> > won't get drowned by constant WARNs.
>> >
>> > Cc: stable@vger.kernel.org
>> > Cc: Daniel Vetter <daniel@ffwll.ch>
>> > Cc: "Szyprowski, Marek" <m.szyprowski@samsung.com>
>> > Cc: Andrzej Hajda <a.hajda@samsung.com>
>> > Reported-by: Andrzej Hajda <a.hajda@samsung.com>
>> > Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
>> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> I have tested it on sti and stm driver, it fix the problem, thanks.
>>
>> Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
>>
>> > ---
>> > drivers/gpu/drm/drm_vblank.c | 4 ++--
>> > 1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
>> > index 13722c373a6a..c81c297995c6 100644
>> > --- a/drivers/gpu/drm/drm_vblank.c
>> > +++ b/drivers/gpu/drm/drm_vblank.c
>> > @@ -299,8 +299,8 @@ u32 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
>> > u32 vblank;
>> > unsigned long flags;
>> >
>> > - WARN(!dev->driver->get_vblank_timestamp,
>> > - "This function requires support for accurate vblank timestamps.");
>> > + WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
>> > + "This function requires support for accurate vblank timestamps.");
>
> Somewhat a bikeshed, but if we e.g. enable debugging in a CI or piglit
> run, then this could change the results. I'd go with a if ()
> DRM_DEBUG_VBLANK. Either way:
>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
Does something is missing to merge this fix in drm-misc ?
Without it I got warning at each frame.
Benjamin
>> >
>> > spin_lock_irqsave(&dev->vblank_time_lock, flags);
>> >
>> > --
>> > 2.13.6
>> >
>> > _______________________________________________
>> > dri-devel mailing list
>> > dri-devel@lists.freedesktop.org
>> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug
2017-11-16 14:19 ` Benjamin Gaignard
@ 2017-11-16 16:14 ` Ville Syrjälä
0 siblings, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2017-11-16 16:14 UTC (permalink / raw)
To: Benjamin Gaignard
Cc: Daniel Vetter, stable, dri-devel@lists.freedesktop.org,
Szyprowski, Marek
On Thu, Nov 16, 2017 at 03:19:35PM +0100, Benjamin Gaignard wrote:
> 2017-10-30 10:19 GMT+01:00 Daniel Vetter <daniel@ffwll.ch>:
> > On Tue, Oct 24, 2017 at 11:01:32AM +0200, Benjamin Gaignard wrote:
> >> 2017-10-23 17:25 GMT+02:00 Ville Syrjala <ville.syrjala@linux.intel.com>:
> >> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> >
> >> > Since commit 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> >> > even drivers that don't implement accurate vblank timestamps will end
> >> > up using drm_crtc_accurate_vblank_count(). That leads to a WARN every
> >> > time drm_crtc_arm_vblank_event() gets called. The could be as often
> >> > as every frame for each active crtc.
> >> >
> >> > Considering drm_crtc_accurate_vblank_count() is never any worse than
> >> > the drm_vblank_count() we used previously, let's just skip the WARN
> >> > unless DRM_UT_VBL is enabled. That way people won't be bothered by
> >> > this unless they're debugging vblank code. And let's also change it
> >> > to WARN_ONCE() so that even when you're debugging vblank code you
> >> > won't get drowned by constant WARNs.
> >> >
> >> > Cc: stable@vger.kernel.org
> >> > Cc: Daniel Vetter <daniel@ffwll.ch>
> >> > Cc: "Szyprowski, Marek" <m.szyprowski@samsung.com>
> >> > Cc: Andrzej Hajda <a.hajda@samsung.com>
> >> > Reported-by: Andrzej Hajda <a.hajda@samsung.com>
> >> > Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> >> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >> I have tested it on sti and stm driver, it fix the problem, thanks.
> >>
> >> Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> >>
> >> > ---
> >> > drivers/gpu/drm/drm_vblank.c | 4 ++--
> >> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >> >
> >> > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> >> > index 13722c373a6a..c81c297995c6 100644
> >> > --- a/drivers/gpu/drm/drm_vblank.c
> >> > +++ b/drivers/gpu/drm/drm_vblank.c
> >> > @@ -299,8 +299,8 @@ u32 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc)
> >> > u32 vblank;
> >> > unsigned long flags;
> >> >
> >> > - WARN(!dev->driver->get_vblank_timestamp,
> >> > - "This function requires support for accurate vblank timestamps.");
> >> > + WARN_ONCE(drm_debug & DRM_UT_VBL && !dev->driver->get_vblank_timestamp,
> >> > + "This function requires support for accurate vblank timestamps.");
> >
> > Somewhat a bikeshed, but if we e.g. enable debugging in a CI or piglit
> > run, then this could change the results. I'd go with a if ()
> > DRM_DEBUG_VBLANK. Either way:
> >
> > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> >
>
> Does something is missing to merge this fix in drm-misc ?
> Without it I got warning at each frame.
Pushed... 9 days ago it seems.
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-11-16 16:14 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20171010133338epcas4p3860854878d180c8fae89d9072fcf76be@epcas4p3.samsung.com>
2017-10-10 13:33 ` [PATCH] drm/vblank: Fix flip event vblank count Ville Syrjala
2017-10-12 15:20 ` Ville Syrjälä
2017-10-18 7:07 ` Andrzej Hajda
2017-10-18 13:50 ` Ville Syrjälä
2017-10-18 14:32 ` Daniel Vetter
2017-10-23 15:25 ` [PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug Ville Syrjala
2017-10-24 9:01 ` Benjamin Gaignard
2017-10-30 9:19 ` Daniel Vetter
2017-11-16 14:19 ` Benjamin Gaignard
2017-11-16 16:14 ` Ville Syrjälä
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).