On Thu, Sep 16, 2021 at 11:15:41PM +0200, Fernando Ramos wrote: > As requested in Documentation/gpu/todo.rst, replace driver calls to > drm_modeset_lock_all() with DRM_MODESET_LOCK_ALL_BEGIN() and > DRM_MODESET_LOCK_ALL_END() > > Signed-off-by: Fernando Ramos <greenfoo@xxxxxx> Reviewed-by: Sean Paul <sean@xxxxxxxxxx> > --- > drivers/gpu/drm/drm_client_modeset.c | 5 +++-- > drivers/gpu/drm/drm_crtc_helper.c | 18 ++++++++++++------ > drivers/gpu/drm/drm_fb_helper.c | 10 ++++++---- > drivers/gpu/drm/drm_framebuffer.c | 6 ++++-- > 4 files changed, 25 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c > index 5f5184f071ed..43f772543d2a 100644 > --- a/drivers/gpu/drm/drm_client_modeset.c > +++ b/drivers/gpu/drm/drm_client_modeset.c > @@ -1062,9 +1062,10 @@ static int drm_client_modeset_commit_legacy(struct drm_client_dev *client) > struct drm_device *dev = client->dev; > struct drm_mode_set *mode_set; > struct drm_plane *plane; > + struct drm_modeset_acquire_ctx ctx; > int ret = 0; > > - drm_modeset_lock_all(dev); > + DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret); > drm_for_each_plane(plane, dev) { > if (plane->type != DRM_PLANE_TYPE_PRIMARY) > drm_plane_force_disable(plane); > @@ -1093,7 +1094,7 @@ static int drm_client_modeset_commit_legacy(struct drm_client_dev *client) > goto out; > } > out: > - drm_modeset_unlock_all(dev); > + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); > > return ret; > } > diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c > index bff917531f33..f3ce073dff79 100644 > --- a/drivers/gpu/drm/drm_crtc_helper.c > +++ b/drivers/gpu/drm/drm_crtc_helper.c > @@ -218,11 +218,14 @@ static void __drm_helper_disable_unused_functions(struct drm_device *dev) > */ > void drm_helper_disable_unused_functions(struct drm_device *dev) > { > + struct drm_modeset_acquire_ctx ctx; > + int ret; > + > WARN_ON(drm_drv_uses_atomic_modeset(dev)); > > - drm_modeset_lock_all(dev); > + DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret); > __drm_helper_disable_unused_functions(dev); > - drm_modeset_unlock_all(dev); > + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); > } > EXPORT_SYMBOL(drm_helper_disable_unused_functions); > > @@ -942,12 +945,14 @@ void drm_helper_resume_force_mode(struct drm_device *dev) > struct drm_crtc *crtc; > struct drm_encoder *encoder; > const struct drm_crtc_helper_funcs *crtc_funcs; > + struct drm_modeset_acquire_ctx ctx; > int encoder_dpms; > bool ret; > + int err; > > WARN_ON(drm_drv_uses_atomic_modeset(dev)); > > - drm_modeset_lock_all(dev); > + DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, err); > drm_for_each_crtc(crtc, dev) { > > if (!crtc->enabled) > @@ -982,7 +987,7 @@ void drm_helper_resume_force_mode(struct drm_device *dev) > > /* disable the unused connectors while restoring the modesetting */ > __drm_helper_disable_unused_functions(dev); > - drm_modeset_unlock_all(dev); > + DRM_MODESET_LOCK_ALL_END(dev, ctx, err); > } > EXPORT_SYMBOL(drm_helper_resume_force_mode); > > @@ -1002,9 +1007,10 @@ EXPORT_SYMBOL(drm_helper_resume_force_mode); > int drm_helper_force_disable_all(struct drm_device *dev) > { > struct drm_crtc *crtc; > + struct drm_modeset_acquire_ctx ctx; > int ret = 0; > > - drm_modeset_lock_all(dev); > + DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret); > drm_for_each_crtc(crtc, dev) > if (crtc->enabled) { > struct drm_mode_set set = { > @@ -1016,7 +1022,7 @@ int drm_helper_force_disable_all(struct drm_device *dev) > goto out; > } > out: > - drm_modeset_unlock_all(dev); > + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); > return ret; > } > EXPORT_SYMBOL(drm_helper_force_disable_all); > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 3ab078321045..6860223f0068 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -940,10 +940,11 @@ static int setcmap_legacy(struct fb_cmap *cmap, struct fb_info *info) > struct drm_fb_helper *fb_helper = info->par; > struct drm_mode_set *modeset; > struct drm_crtc *crtc; > + struct drm_modeset_acquire_ctx ctx; > u16 *r, *g, *b; > int ret = 0; > > - drm_modeset_lock_all(fb_helper->dev); > + DRM_MODESET_LOCK_ALL_BEGIN(fb_helper->dev, ctx, 0, ret); > drm_client_for_each_modeset(modeset, &fb_helper->client) { > crtc = modeset->crtc; > if (!crtc->funcs->gamma_set || !crtc->gamma_size) { > @@ -970,7 +971,7 @@ static int setcmap_legacy(struct fb_cmap *cmap, struct fb_info *info) > goto out; > } > out: > - drm_modeset_unlock_all(fb_helper->dev); > + DRM_MODESET_LOCK_ALL_END(fb_helper->dev, ctx, ret); > > return ret; > } > @@ -1441,10 +1442,11 @@ static int pan_display_legacy(struct fb_var_screeninfo *var, > struct drm_fb_helper *fb_helper = info->par; > struct drm_client_dev *client = &fb_helper->client; > struct drm_mode_set *modeset; > + struct drm_modeset_acquire_ctx ctx; > int ret = 0; > > mutex_lock(&client->modeset_mutex); > - drm_modeset_lock_all(fb_helper->dev); > + DRM_MODESET_LOCK_ALL_BEGIN(fb_helper->dev, ctx, 0, ret); > drm_client_for_each_modeset(modeset, client) { > modeset->x = var->xoffset; > modeset->y = var->yoffset; > @@ -1457,7 +1459,7 @@ static int pan_display_legacy(struct fb_var_screeninfo *var, > } > } > } > - drm_modeset_unlock_all(fb_helper->dev); > + DRM_MODESET_LOCK_ALL_END(fb_helper->dev, ctx, ret); > mutex_unlock(&client->modeset_mutex); > > return ret; > diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c > index 07f5abc875e9..205e9aa9a409 100644 > --- a/drivers/gpu/drm/drm_framebuffer.c > +++ b/drivers/gpu/drm/drm_framebuffer.c > @@ -1059,8 +1059,10 @@ static void legacy_remove_fb(struct drm_framebuffer *fb) > struct drm_device *dev = fb->dev; > struct drm_crtc *crtc; > struct drm_plane *plane; > + struct drm_modeset_acquire_ctx ctx; > + int ret; > > - drm_modeset_lock_all(dev); > + DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret); > /* remove from any CRTC */ > drm_for_each_crtc(crtc, dev) { > if (crtc->primary->fb == fb) { > @@ -1082,7 +1084,7 @@ static void legacy_remove_fb(struct drm_framebuffer *fb) > drm_plane_force_disable(plane); > } > } > - drm_modeset_unlock_all(dev); > + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); > } > > /** > -- > 2.33.0 > -- Sean Paul, Software Engineer, Google / Chromium OS