Re: [PATCH] drm/exynos: fix vblank handling during dpms off

From: Thierry Reding
Date: Thu Oct 09 2014 - 05:59:34 EST


On Thu, Oct 09, 2014 at 09:52:58AM +0100, Russell King - ARM Linux wrote:
> On Thu, Oct 09, 2014 at 02:43:02PM +0900, Alexandre Courbot wrote:
> > But there might be another issue, which is that calls to
> > drm_vblank_get() will return -EINVAL if invoked between drm_blank_off
> > and drm_blank_on. Is this really the desired behavior? Can it at least
> > happen? If so, how are drivers supposed to react to this situation?
>
> I've not yet seen the commit which causes this problem, but I hope
> that drm_wait_vblank() isn't affected by this. In current mainline,
> drm_vblank_get() is used inside drm_wait_vblank(), which is called as
> a result of userspace calling DRM_IOCTL_WAIT_VBLANK.
>
> So, what is the effect of this change on user applications making use
> of the vblank wait ioctl - and is that change intended?

There's no effect on user applications if the driver behaves properly.
As far as I can tell, every driver that calls drm_vblank_off() but not
drm_vblank_on() will break. You can easily test this by running libdrm
modetest -s ... -v, which instead of toggling between the test pattern
and an all-gray framebuffer will switch to the gray one once and then
hang.

I guess that was probably not intended, but according to the new rules
all these drivers have now become buggy. So before merging this patch I
think we need to fix existing drivers to avoid regressions.

Thierry

Attachment: pgpu6cNmmQuE8.pgp
Description: PGP signature