[PATCH 01/16] omapdrm: only take crtc->mutex in crtc callbacks

Rob Clark robdclark at gmail.com
Thu Jan 24 08:45:53 PST 2013


On Thu, Jan 24, 2013 at 10:20 AM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> Omapdrm doesn't do anything nefarious with crtc load detection or has
> any shared resources, so this is enough. We also need to adjust the
> WARN_ON.

looks good, after I double checked the locking in setplane.  In case I
didn't send this earlier,

Reviewed-by: Rob Clark <rob at ti.com>

> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/staging/omapdrm/omap_crtc.c |   12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/staging/omapdrm/omap_crtc.c b/drivers/staging/omapdrm/omap_crtc.c
> index 510942e..fb5d722 100644
> --- a/drivers/staging/omapdrm/omap_crtc.c
> +++ b/drivers/staging/omapdrm/omap_crtc.c
> @@ -274,17 +274,16 @@ static void page_flip_worker(struct work_struct *work)
>         struct omap_crtc *omap_crtc =
>                         container_of(work, struct omap_crtc, page_flip_work);
>         struct drm_crtc *crtc = &omap_crtc->base;
> -       struct drm_device *dev = crtc->dev;
>         struct drm_display_mode *mode = &crtc->mode;
>         struct drm_gem_object *bo;
>
> -       drm_modeset_lock_all(dev);
> +       mutex_lock(&crtc->mutex);
>         omap_plane_mode_set(omap_crtc->plane, crtc, crtc->fb,
>                         0, 0, mode->hdisplay, mode->vdisplay,
>                         crtc->x << 16, crtc->y << 16,
>                         mode->hdisplay << 16, mode->vdisplay << 16,
>                         vblank_cb, crtc);
> -       drm_modeset_unlock_all(dev);
> +       mutex_unlock(&crtc->mutex);
>
>         bo = omap_framebuffer_bo(crtc->fb, 0);
>         drm_gem_object_unreference_unlocked(bo);
> @@ -417,7 +416,7 @@ static void apply_worker(struct work_struct *work)
>          * the callbacks and list modification all serialized
>          * with respect to modesetting ioctls from userspace.
>          */
> -       drm_modeset_lock_all(dev);
> +       mutex_lock(&crtc->mutex);
>         dispc_runtime_get();
>
>         /*
> @@ -462,16 +461,15 @@ static void apply_worker(struct work_struct *work)
>
>  out:
>         dispc_runtime_put();
> -       drm_modeset_unlock_all(dev);
> +       mutex_unlock(&crtc->mutex);
>  }
>
>  int omap_crtc_apply(struct drm_crtc *crtc,
>                 struct omap_drm_apply *apply)
>  {
>         struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
> -       struct drm_device *dev = crtc->dev;
>
> -       WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
> +       WARN_ON(!mutex_is_locked(&crtc->mutex));
>
>         /* no need to queue it again if it is already queued: */
>         if (apply->queued)
> --
> 1.7.10.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list