I missed this one, and looks like it's already in. So a belated: Reviewed-by: Sinclair Yeh <syeh@xxxxxxxxxx> 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@xxxxxxxxxx> > Cc: Thomas Hellstrom <thellstrom@xxxxxxxxxx> > Cc: Ben Skeggs <bskeggs@xxxxxxxxxx> > Cc: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: Christian König <christian.koenig@xxxxxxx> > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > 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 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel