diff mbox

[18/19] drm: Add acquire ctx parameter to ->set_config

Message ID 20170322215058.8671-19-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter March 22, 2017, 9:50 p.m. UTC
Surprisingly a lot of legacy drivers roll their own, for
runtime pm and because vmwgfx.

Also make nouveau's set_config static while at it.

Cc: Sinclair Yeh <syeh@vmware.com>
Cc: Thomas Hellstrom <thellstrom@vmware.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 +++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h    | 3 ++-
 drivers/gpu/drm/drm_atomic_helper.c         | 4 +++-
 drivers/gpu/drm/drm_crtc.c                  | 2 +-
 drivers/gpu/drm/drm_crtc_helper.c           | 4 +++-
 drivers/gpu/drm/drm_plane_helper.c          | 2 +-
 drivers/gpu/drm/gma500/gma_display.c        | 7 ++++---
 drivers/gpu/drm/gma500/gma_display.h        | 3 ++-
 drivers/gpu/drm/nouveau/dispnv04/crtc.c     | 7 ++++---
 drivers/gpu/drm/nouveau/nouveau_display.h   | 1 -
 drivers/gpu/drm/radeon/radeon_display.c     | 5 +++--
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c         | 3 ++-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c        | 3 ++-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c        | 3 ++-
 include/drm/drm_atomic_helper.h             | 3 ++-
 include/drm/drm_crtc.h                      | 3 ++-
 include/drm/drm_crtc_helper.h               | 3 ++-
 17 files changed, 38 insertions(+), 23 deletions(-)

Comments

Sinclair Yeh April 4, 2017, 12:06 a.m. UTC | #1
I missed this one, and looks like it's already in.  So a belated:
Reviewed-by: Sinclair Yeh <syeh@vmware.com>

for the vmwgfx part

On Wed, Mar 22, 2017 at 10:50:57PM +0100, Daniel Vetter wrote:
> Surprisingly a lot of legacy drivers roll their own, for
> runtime pm and because vmwgfx.
> 
> Also make nouveau's set_config static while at it.
> 
> Cc: Sinclair Yeh <syeh@vmware.com>
> Cc: Thomas Hellstrom <thellstrom@vmware.com>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 +++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h    | 3 ++-
>  drivers/gpu/drm/drm_atomic_helper.c         | 4 +++-
>  drivers/gpu/drm/drm_crtc.c                  | 2 +-
>  drivers/gpu/drm/drm_crtc_helper.c           | 4 +++-
>  drivers/gpu/drm/drm_plane_helper.c          | 2 +-
>  drivers/gpu/drm/gma500/gma_display.c        | 7 ++++---
>  drivers/gpu/drm/gma500/gma_display.h        | 3 ++-
>  drivers/gpu/drm/nouveau/dispnv04/crtc.c     | 7 ++++---
>  drivers/gpu/drm/nouveau/nouveau_display.h   | 1 -
>  drivers/gpu/drm/radeon/radeon_display.c     | 5 +++--
>  drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c         | 3 ++-
>  drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c        | 3 ++-
>  drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c        | 3 ++-
>  include/drm/drm_atomic_helper.h             | 3 ++-
>  include/drm/drm_crtc.h                      | 3 ++-
>  include/drm/drm_crtc_helper.h               | 3 ++-
>  17 files changed, 38 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index 7b4fe91d3aec..ce15721cadda 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -333,7 +333,8 @@ int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
>  	return 0;
>  }
>  
> -int amdgpu_crtc_set_config(struct drm_mode_set *set)
> +int amdgpu_crtc_set_config(struct drm_mode_set *set,
> +			   struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_device *dev;
>  	struct amdgpu_device *adev;
> @@ -350,7 +351,7 @@ int amdgpu_crtc_set_config(struct drm_mode_set *set)
>  	if (ret < 0)
>  		return ret;
>  
> -	ret = drm_crtc_helper_set_config(set);
> +	ret = drm_crtc_helper_set_config(set, ctx);
>  
>  	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
>  		if (crtc->enabled)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> index d19b803ba509..20d6522fd7b4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> @@ -593,7 +593,8 @@ int amdgpu_align_pitch(struct amdgpu_device *adev, int width, int bpp, bool tile
>  /* amdgpu_display.c */
>  void amdgpu_print_display_setup(struct drm_device *dev);
>  int amdgpu_modeset_create_props(struct amdgpu_device *adev);
> -int amdgpu_crtc_set_config(struct drm_mode_set *set);
> +int amdgpu_crtc_set_config(struct drm_mode_set *set,
> +			   struct drm_modeset_acquire_ctx *ctx);
>  int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
>  				 struct drm_framebuffer *fb,
>  				 struct drm_pending_vblank_event *event,
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 08d10abcece0..b502e2809ebd 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -2266,6 +2266,7 @@ static int update_output_state(struct drm_atomic_state *state,
>  /**
>   * drm_atomic_helper_set_config - set a new config from userspace
>   * @set: mode set configuration
> + * @ctx: lock acquisition context
>   *
>   * Provides a default crtc set_config handler using the atomic driver interface.
>   *
> @@ -2278,7 +2279,8 @@ static int update_output_state(struct drm_atomic_state *state,
>   * Returns:
>   * Returns 0 on success, negative errno numbers on failure.
>   */
> -int drm_atomic_helper_set_config(struct drm_mode_set *set)
> +int drm_atomic_helper_set_config(struct drm_mode_set *set,
> +				 struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_atomic_state *state;
>  	struct drm_crtc *crtc = set->crtc;
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index bfaa0e769ea6..3fe1ec23c87e 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -462,7 +462,7 @@ static int __drm_mode_set_config_internal(struct drm_mode_set *set,
>  
>  	fb = set->fb;
>  
> -	ret = crtc->funcs->set_config(set);
> +	ret = crtc->funcs->set_config(set, ctx);
>  	if (ret == 0) {
>  		crtc->primary->crtc = crtc;
>  		crtc->primary->fb = fb;
> diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
> index 8aa8c1084121..4afdf7902eda 100644
> --- a/drivers/gpu/drm/drm_crtc_helper.c
> +++ b/drivers/gpu/drm/drm_crtc_helper.c
> @@ -476,6 +476,7 @@ drm_crtc_helper_disable(struct drm_crtc *crtc)
>  /**
>   * drm_crtc_helper_set_config - set a new config from userspace
>   * @set: mode set configuration
> + * @ctx: lock acquire context, not used here
>   *
>   * The drm_crtc_helper_set_config() helper function implements the of
>   * &drm_crtc_funcs.set_config callback for drivers using the legacy CRTC
> @@ -510,7 +511,8 @@ drm_crtc_helper_disable(struct drm_crtc *crtc)
>   * Returns:
>   * Returns 0 on success, negative errno numbers on failure.
>   */
> -int drm_crtc_helper_set_config(struct drm_mode_set *set)
> +int drm_crtc_helper_set_config(struct drm_mode_set *set,
> +			       struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_device *dev;
>  	struct drm_crtc **save_encoder_crtcs, *new_crtc;
> diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
> index 775e94c30368..b84a295230fc 100644
> --- a/drivers/gpu/drm/drm_plane_helper.c
> +++ b/drivers/gpu/drm/drm_plane_helper.c
> @@ -371,7 +371,7 @@ int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
>  	 * drm_mode_setplane() already handles the basic refcounting for the
>  	 * framebuffers involved in this operation.
>  	 */
> -	ret = crtc->funcs->set_config(&set);
> +	ret = crtc->funcs->set_config(&set, ctx);
>  
>  	kfree(connector_list);
>  	return ret;
> diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
> index d1c5642b1c1e..93ff46535c04 100644
> --- a/drivers/gpu/drm/gma500/gma_display.c
> +++ b/drivers/gpu/drm/gma500/gma_display.c
> @@ -514,17 +514,18 @@ void gma_crtc_destroy(struct drm_crtc *crtc)
>  	kfree(gma_crtc);
>  }
>  
> -int gma_crtc_set_config(struct drm_mode_set *set)
> +int gma_crtc_set_config(struct drm_mode_set *set,
> +			struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_device *dev = set->crtc->dev;
>  	struct drm_psb_private *dev_priv = dev->dev_private;
>  	int ret;
>  
>  	if (!dev_priv->rpm_enabled)
> -		return drm_crtc_helper_set_config(set);
> +		return drm_crtc_helper_set_config(set, ctx);
>  
>  	pm_runtime_forbid(&dev->pdev->dev);
> -	ret = drm_crtc_helper_set_config(set);
> +	ret = drm_crtc_helper_set_config(set, ctx);
>  	pm_runtime_allow(&dev->pdev->dev);
>  
>  	return ret;
> diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h
> index e72dd08b701b..166e608923db 100644
> --- a/drivers/gpu/drm/gma500/gma_display.h
> +++ b/drivers/gpu/drm/gma500/gma_display.h
> @@ -79,7 +79,8 @@ extern void gma_crtc_prepare(struct drm_crtc *crtc);
>  extern void gma_crtc_commit(struct drm_crtc *crtc);
>  extern void gma_crtc_disable(struct drm_crtc *crtc);
>  extern void gma_crtc_destroy(struct drm_crtc *crtc);
> -extern int gma_crtc_set_config(struct drm_mode_set *set);
> +extern int gma_crtc_set_config(struct drm_mode_set *set,
> +			       struct drm_modeset_acquire_ctx *ctx);
>  
>  extern void gma_crtc_save(struct drm_crtc *crtc);
>  extern void gma_crtc_restore(struct drm_crtc *crtc);
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> index ab7b69c11d40..43ab560de7f9 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> @@ -1031,8 +1031,9 @@ nv04_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
>  	return 0;
>  }
>  
> -int
> -nouveau_crtc_set_config(struct drm_mode_set *set)
> +static int
> +nouveau_crtc_set_config(struct drm_mode_set *set,
> +			struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_device *dev;
>  	struct nouveau_drm *drm;
> @@ -1049,7 +1050,7 @@ nouveau_crtc_set_config(struct drm_mode_set *set)
>  	if (ret < 0 && ret != -EACCES)
>  		return ret;
>  
> -	ret = drm_crtc_helper_set_config(set);
> +	ret = drm_crtc_helper_set_config(set, ctx);
>  
>  	drm = nouveau_drm(dev);
>  
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h
> index b28426e02adf..201aec2ea5b8 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.h
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.h
> @@ -86,7 +86,6 @@ int  nouveau_display_dumb_map_offset(struct drm_file *, struct drm_device *,
>  
>  void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *);
>  
> -int nouveau_crtc_set_config(struct drm_mode_set *set);
>  #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
>  extern int nouveau_backlight_init(struct drm_device *);
>  extern void nouveau_backlight_exit(struct drm_device *);
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
> index 31020db573d5..146297a702ab 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -624,7 +624,8 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc,
>  }
>  
>  static int
> -radeon_crtc_set_config(struct drm_mode_set *set)
> +radeon_crtc_set_config(struct drm_mode_set *set,
> +		       struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct drm_device *dev;
>  	struct radeon_device *rdev;
> @@ -641,7 +642,7 @@ radeon_crtc_set_config(struct drm_mode_set *set)
>  	if (ret < 0)
>  		return ret;
>  
> -	ret = drm_crtc_helper_set_config(set);
> +	ret = drm_crtc_helper_set_config(set, ctx);
>  
>  	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
>  		if (crtc->enabled)
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
> index 3806148e1bdb..08a66f0db2ec 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
> @@ -208,7 +208,8 @@ static int vmw_ldu_add_active(struct vmw_private *vmw_priv,
>  	return 0;
>  }
>  
> -static int vmw_ldu_crtc_set_config(struct drm_mode_set *set)
> +static int vmw_ldu_crtc_set_config(struct drm_mode_set *set,
> +				   struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct vmw_private *dev_priv;
>  	struct vmw_legacy_display_unit *ldu;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> index 53cf3be7a902..e9d3c4b92df7 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> @@ -248,7 +248,8 @@ static int vmw_sou_backing_alloc(struct vmw_private *dev_priv,
>  	return ret;
>  }
>  
> -static int vmw_sou_crtc_set_config(struct drm_mode_set *set)
> +static int vmw_sou_crtc_set_config(struct drm_mode_set *set,
> +				   struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct vmw_private *dev_priv;
>  	struct vmw_screen_object_unit *sou;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> index 85e12309cb71..b2c9d6ce7ce4 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> @@ -509,7 +509,8 @@ static int vmw_stdu_bind_fb(struct vmw_private *dev_priv,
>   * RETURNS:
>   * 0 on success, error code otherwise
>   */
> -static int vmw_stdu_crtc_set_config(struct drm_mode_set *set)
> +static int vmw_stdu_crtc_set_config(struct drm_mode_set *set,
> +				    struct drm_modeset_acquire_ctx *ctx)
>  {
>  	struct vmw_private *dev_priv;
>  	struct vmw_framebuffer *vfb;
> diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
> index 9675cacb72a3..fd395dc050ee 100644
> --- a/include/drm/drm_atomic_helper.h
> +++ b/include/drm/drm_atomic_helper.h
> @@ -100,7 +100,8 @@ int drm_atomic_helper_disable_plane(struct drm_plane *plane,
>  				    struct drm_modeset_acquire_ctx *ctx);
>  int __drm_atomic_helper_disable_plane(struct drm_plane *plane,
>  		struct drm_plane_state *plane_state);
> -int drm_atomic_helper_set_config(struct drm_mode_set *set);
> +int drm_atomic_helper_set_config(struct drm_mode_set *set,
> +				 struct drm_modeset_acquire_ctx *ctx);
>  int __drm_atomic_helper_set_config(struct drm_mode_set *set,
>  		struct drm_atomic_state *state);
>  
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index bca3330d8085..352558e62cfa 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -347,7 +347,8 @@ struct drm_crtc_funcs {
>  	 *
>  	 * 0 on success or a negative error code on failure.
>  	 */
> -	int (*set_config)(struct drm_mode_set *set);
> +	int (*set_config)(struct drm_mode_set *set,
> +			  struct drm_modeset_acquire_ctx *ctx);
>  
>  	/**
>  	 * @page_flip:
> diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
> index 7506a60df8b1..43505c7b2b3f 100644
> --- a/include/drm/drm_crtc_helper.h
> +++ b/include/drm/drm_crtc_helper.h
> @@ -44,7 +44,8 @@
>  #include <drm/drm_modeset_helper.h>
>  
>  void drm_helper_disable_unused_functions(struct drm_device *dev);
> -int drm_crtc_helper_set_config(struct drm_mode_set *set);
> +int drm_crtc_helper_set_config(struct drm_mode_set *set,
> +			       struct drm_modeset_acquire_ctx *ctx);
>  bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
>  			      struct drm_display_mode *mode,
>  			      int x, int y,
> -- 
> 2.11.0
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 7b4fe91d3aec..ce15721cadda 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -333,7 +333,8 @@  int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
 	return 0;
 }
 
-int amdgpu_crtc_set_config(struct drm_mode_set *set)
+int amdgpu_crtc_set_config(struct drm_mode_set *set,
+			   struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev;
 	struct amdgpu_device *adev;
@@ -350,7 +351,7 @@  int amdgpu_crtc_set_config(struct drm_mode_set *set)
 	if (ret < 0)
 		return ret;
 
-	ret = drm_crtc_helper_set_config(set);
+	ret = drm_crtc_helper_set_config(set, ctx);
 
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
 		if (crtc->enabled)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index d19b803ba509..20d6522fd7b4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -593,7 +593,8 @@  int amdgpu_align_pitch(struct amdgpu_device *adev, int width, int bpp, bool tile
 /* amdgpu_display.c */
 void amdgpu_print_display_setup(struct drm_device *dev);
 int amdgpu_modeset_create_props(struct amdgpu_device *adev);
-int amdgpu_crtc_set_config(struct drm_mode_set *set);
+int amdgpu_crtc_set_config(struct drm_mode_set *set,
+			   struct drm_modeset_acquire_ctx *ctx);
 int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
 				 struct drm_framebuffer *fb,
 				 struct drm_pending_vblank_event *event,
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 08d10abcece0..b502e2809ebd 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -2266,6 +2266,7 @@  static int update_output_state(struct drm_atomic_state *state,
 /**
  * drm_atomic_helper_set_config - set a new config from userspace
  * @set: mode set configuration
+ * @ctx: lock acquisition context
  *
  * Provides a default crtc set_config handler using the atomic driver interface.
  *
@@ -2278,7 +2279,8 @@  static int update_output_state(struct drm_atomic_state *state,
  * Returns:
  * Returns 0 on success, negative errno numbers on failure.
  */
-int drm_atomic_helper_set_config(struct drm_mode_set *set)
+int drm_atomic_helper_set_config(struct drm_mode_set *set,
+				 struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_atomic_state *state;
 	struct drm_crtc *crtc = set->crtc;
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index bfaa0e769ea6..3fe1ec23c87e 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -462,7 +462,7 @@  static int __drm_mode_set_config_internal(struct drm_mode_set *set,
 
 	fb = set->fb;
 
-	ret = crtc->funcs->set_config(set);
+	ret = crtc->funcs->set_config(set, ctx);
 	if (ret == 0) {
 		crtc->primary->crtc = crtc;
 		crtc->primary->fb = fb;
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 8aa8c1084121..4afdf7902eda 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -476,6 +476,7 @@  drm_crtc_helper_disable(struct drm_crtc *crtc)
 /**
  * drm_crtc_helper_set_config - set a new config from userspace
  * @set: mode set configuration
+ * @ctx: lock acquire context, not used here
  *
  * The drm_crtc_helper_set_config() helper function implements the of
  * &drm_crtc_funcs.set_config callback for drivers using the legacy CRTC
@@ -510,7 +511,8 @@  drm_crtc_helper_disable(struct drm_crtc *crtc)
  * Returns:
  * Returns 0 on success, negative errno numbers on failure.
  */
-int drm_crtc_helper_set_config(struct drm_mode_set *set)
+int drm_crtc_helper_set_config(struct drm_mode_set *set,
+			       struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev;
 	struct drm_crtc **save_encoder_crtcs, *new_crtc;
diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
index 775e94c30368..b84a295230fc 100644
--- a/drivers/gpu/drm/drm_plane_helper.c
+++ b/drivers/gpu/drm/drm_plane_helper.c
@@ -371,7 +371,7 @@  int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
 	 * drm_mode_setplane() already handles the basic refcounting for the
 	 * framebuffers involved in this operation.
 	 */
-	ret = crtc->funcs->set_config(&set);
+	ret = crtc->funcs->set_config(&set, ctx);
 
 	kfree(connector_list);
 	return ret;
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index d1c5642b1c1e..93ff46535c04 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -514,17 +514,18 @@  void gma_crtc_destroy(struct drm_crtc *crtc)
 	kfree(gma_crtc);
 }
 
-int gma_crtc_set_config(struct drm_mode_set *set)
+int gma_crtc_set_config(struct drm_mode_set *set,
+			struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev = set->crtc->dev;
 	struct drm_psb_private *dev_priv = dev->dev_private;
 	int ret;
 
 	if (!dev_priv->rpm_enabled)
-		return drm_crtc_helper_set_config(set);
+		return drm_crtc_helper_set_config(set, ctx);
 
 	pm_runtime_forbid(&dev->pdev->dev);
-	ret = drm_crtc_helper_set_config(set);
+	ret = drm_crtc_helper_set_config(set, ctx);
 	pm_runtime_allow(&dev->pdev->dev);
 
 	return ret;
diff --git a/drivers/gpu/drm/gma500/gma_display.h b/drivers/gpu/drm/gma500/gma_display.h
index e72dd08b701b..166e608923db 100644
--- a/drivers/gpu/drm/gma500/gma_display.h
+++ b/drivers/gpu/drm/gma500/gma_display.h
@@ -79,7 +79,8 @@  extern void gma_crtc_prepare(struct drm_crtc *crtc);
 extern void gma_crtc_commit(struct drm_crtc *crtc);
 extern void gma_crtc_disable(struct drm_crtc *crtc);
 extern void gma_crtc_destroy(struct drm_crtc *crtc);
-extern int gma_crtc_set_config(struct drm_mode_set *set);
+extern int gma_crtc_set_config(struct drm_mode_set *set,
+			       struct drm_modeset_acquire_ctx *ctx);
 
 extern void gma_crtc_save(struct drm_crtc *crtc);
 extern void gma_crtc_restore(struct drm_crtc *crtc);
diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
index ab7b69c11d40..43ab560de7f9 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
@@ -1031,8 +1031,9 @@  nv04_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
 	return 0;
 }
 
-int
-nouveau_crtc_set_config(struct drm_mode_set *set)
+static int
+nouveau_crtc_set_config(struct drm_mode_set *set,
+			struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev;
 	struct nouveau_drm *drm;
@@ -1049,7 +1050,7 @@  nouveau_crtc_set_config(struct drm_mode_set *set)
 	if (ret < 0 && ret != -EACCES)
 		return ret;
 
-	ret = drm_crtc_helper_set_config(set);
+	ret = drm_crtc_helper_set_config(set, ctx);
 
 	drm = nouveau_drm(dev);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h
index b28426e02adf..201aec2ea5b8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.h
+++ b/drivers/gpu/drm/nouveau/nouveau_display.h
@@ -86,7 +86,6 @@  int  nouveau_display_dumb_map_offset(struct drm_file *, struct drm_device *,
 
 void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *);
 
-int nouveau_crtc_set_config(struct drm_mode_set *set);
 #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
 extern int nouveau_backlight_init(struct drm_device *);
 extern void nouveau_backlight_exit(struct drm_device *);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index 31020db573d5..146297a702ab 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -624,7 +624,8 @@  static int radeon_crtc_page_flip_target(struct drm_crtc *crtc,
 }
 
 static int
-radeon_crtc_set_config(struct drm_mode_set *set)
+radeon_crtc_set_config(struct drm_mode_set *set,
+		       struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev;
 	struct radeon_device *rdev;
@@ -641,7 +642,7 @@  radeon_crtc_set_config(struct drm_mode_set *set)
 	if (ret < 0)
 		return ret;
 
-	ret = drm_crtc_helper_set_config(set);
+	ret = drm_crtc_helper_set_config(set, ctx);
 
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
 		if (crtc->enabled)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index 3806148e1bdb..08a66f0db2ec 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -208,7 +208,8 @@  static int vmw_ldu_add_active(struct vmw_private *vmw_priv,
 	return 0;
 }
 
-static int vmw_ldu_crtc_set_config(struct drm_mode_set *set)
+static int vmw_ldu_crtc_set_config(struct drm_mode_set *set,
+				   struct drm_modeset_acquire_ctx *ctx)
 {
 	struct vmw_private *dev_priv;
 	struct vmw_legacy_display_unit *ldu;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index 53cf3be7a902..e9d3c4b92df7 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -248,7 +248,8 @@  static int vmw_sou_backing_alloc(struct vmw_private *dev_priv,
 	return ret;
 }
 
-static int vmw_sou_crtc_set_config(struct drm_mode_set *set)
+static int vmw_sou_crtc_set_config(struct drm_mode_set *set,
+				   struct drm_modeset_acquire_ctx *ctx)
 {
 	struct vmw_private *dev_priv;
 	struct vmw_screen_object_unit *sou;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index 85e12309cb71..b2c9d6ce7ce4 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -509,7 +509,8 @@  static int vmw_stdu_bind_fb(struct vmw_private *dev_priv,
  * RETURNS:
  * 0 on success, error code otherwise
  */
-static int vmw_stdu_crtc_set_config(struct drm_mode_set *set)
+static int vmw_stdu_crtc_set_config(struct drm_mode_set *set,
+				    struct drm_modeset_acquire_ctx *ctx)
 {
 	struct vmw_private *dev_priv;
 	struct vmw_framebuffer *vfb;
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
index 9675cacb72a3..fd395dc050ee 100644
--- a/include/drm/drm_atomic_helper.h
+++ b/include/drm/drm_atomic_helper.h
@@ -100,7 +100,8 @@  int drm_atomic_helper_disable_plane(struct drm_plane *plane,
 				    struct drm_modeset_acquire_ctx *ctx);
 int __drm_atomic_helper_disable_plane(struct drm_plane *plane,
 		struct drm_plane_state *plane_state);
-int drm_atomic_helper_set_config(struct drm_mode_set *set);
+int drm_atomic_helper_set_config(struct drm_mode_set *set,
+				 struct drm_modeset_acquire_ctx *ctx);
 int __drm_atomic_helper_set_config(struct drm_mode_set *set,
 		struct drm_atomic_state *state);
 
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index bca3330d8085..352558e62cfa 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -347,7 +347,8 @@  struct drm_crtc_funcs {
 	 *
 	 * 0 on success or a negative error code on failure.
 	 */
-	int (*set_config)(struct drm_mode_set *set);
+	int (*set_config)(struct drm_mode_set *set,
+			  struct drm_modeset_acquire_ctx *ctx);
 
 	/**
 	 * @page_flip:
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
index 7506a60df8b1..43505c7b2b3f 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
@@ -44,7 +44,8 @@ 
 #include <drm/drm_modeset_helper.h>
 
 void drm_helper_disable_unused_functions(struct drm_device *dev);
-int drm_crtc_helper_set_config(struct drm_mode_set *set);
+int drm_crtc_helper_set_config(struct drm_mode_set *set,
+			       struct drm_modeset_acquire_ctx *ctx);
 bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
 			      struct drm_display_mode *mode,
 			      int x, int y,