[PATCH] drm: Wake up all waiters for the vblank
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu Aug 17 14:56:19 UTC 2017
On Thu, Aug 17, 2017 at 01:27:41PM +0100, Chris Wilson wrote:
> As we have a single list for vblank waiters (not sorted by the vblank
> they are waiting for), make sure we wake up all waiters rather than just
> the first as we may have multiple consumers for this vblank event.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter at 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 70f2b9593edc..930e3ed5234b 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -1118,7 +1118,7 @@ void drm_crtc_vblank_off(struct drm_crtc *crtc)
> if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset)
> drm_vblank_disable_and_save(dev, pipe);
>
> - wake_up(&vblank->queue);
> + wake_up_all(&vblank->queue);
I don't think we have any exclusive waiters currently so this shouldn't
actually change anything. I guess given the unordered nature of vblank
waiters exclusive waiters wouldn't really work anyway.
I guess it might be a reasonable measure to avoid bugs if someone
accidentally adds eclusive waiters so
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> /*
> * Prevent subsequent drm_vblank_get() from re-enabling
> @@ -1572,7 +1572,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe)
>
> spin_unlock(&dev->vblank_time_lock);
>
> - wake_up(&vblank->queue);
> + wake_up_all(&vblank->queue);
>
> /* With instant-off, we defer disabling the interrupt until after
> * we finish processing the following vblank after all events have
> --
> 2.14.1
--
Ville Syrjälä
Intel OTC
More information about the dri-devel
mailing list