[PATCH] drm/vblank: Tune drm_crtc_accurate_vblank_count() WARN down to a debug

Daniel Vetter daniel at ffwll.ch
Mon Oct 30 09:19:32 UTC 2017


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 at linux.intel.com>:
> > From: Ville Syrjälä <ville.syrjala at 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 at vger.kernel.org
> > Cc: Daniel Vetter <daniel at ffwll.ch>
> > Cc: "Szyprowski, Marek" <m.szyprowski at samsung.com>
> > Cc: Andrzej Hajda <a.hajda at samsung.com>
> > Reported-by: Andrzej Hajda <a.hajda at samsung.com>
> > Fixes: 632c6e4edef1 ("drm/vblank: Fix flip event vblank count")
> > Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> I have tested it on sti and stm driver, it fix the problem, thanks.
> 
> Acked-by: Benjamin Gaignard <benjamin.gaignard at 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 at ffwll.ch>

> >
> >         spin_lock_irqsave(&dev->vblank_time_lock, flags);
> >
> > --
> > 2.13.6
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list