Looks ok. I won't get around to testing this until maybe mid next week though. On Wed, May 24, 2017 at 04:52:10PM +0200, Daniel Vetter wrote: > Again stopping the vblank before uninstalling the irq handler is kinda > the wrong way round, but the fb_off stuff should take care of > disabling the dsiplay at least in most cases. So drop the typo ^ > drm_vblank_cleanup code since it's not really doing anything, it looks > all cargo-culted. > > v2: Appease gcc better. > > Cc: Sinclair Yeh <syeh@xxxxxxxxxx> > Cc: Thomas Hellstrom <thellstrom@xxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > --- > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 9 +++------ > drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 2 -- > drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 4 ---- > drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 9 --------- > drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 27 +-------------------------- > 5 files changed, 4 insertions(+), 47 deletions(-) > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > index a8876b070168..d1f742478b03 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > @@ -1771,7 +1771,7 @@ int vmw_kms_init(struct vmw_private *dev_priv) > > int vmw_kms_close(struct vmw_private *dev_priv) > { > - int ret; > + int ret = 0; > > /* > * Docs says we should take the lock before calling this function > @@ -1779,11 +1779,8 @@ int vmw_kms_close(struct vmw_private *dev_priv) > * drm_encoder_cleanup which takes the lock we deadlock. > */ > drm_mode_config_cleanup(dev_priv->dev); > - if (dev_priv->active_display_unit == vmw_du_screen_object) > - ret = vmw_kms_sou_close_display(dev_priv); > - else if (dev_priv->active_display_unit == vmw_du_screen_target) > - ret = vmw_kms_stdu_close_display(dev_priv); > - else > + if (dev_priv->active_display_unit != vmw_du_screen_object && > + dev_priv->active_display_unit != vmw_du_screen_target) > ret = vmw_kms_ldu_close_display(dev_priv); > > return ret; > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h > index 13f2f1d2818a..f94b4ca38ab2 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h > @@ -405,7 +405,6 @@ int vmw_kms_update_proxy(struct vmw_resource *res, > * Screen Objects display functions - vmwgfx_scrn.c > */ > int vmw_kms_sou_init_display(struct vmw_private *dev_priv); > -int vmw_kms_sou_close_display(struct vmw_private *dev_priv); > int vmw_kms_sou_do_surface_dirty(struct vmw_private *dev_priv, > struct vmw_framebuffer *framebuffer, > struct drm_clip_rect *clips, > @@ -433,7 +432,6 @@ int vmw_kms_sou_readback(struct vmw_private *dev_priv, > * Screen Target Display Unit functions - vmwgfx_stdu.c > */ > int vmw_kms_stdu_init_display(struct vmw_private *dev_priv); > -int vmw_kms_stdu_close_display(struct vmw_private *dev_priv); > int vmw_kms_stdu_surface_dirty(struct vmw_private *dev_priv, > struct vmw_framebuffer *framebuffer, > struct drm_clip_rect *clips, > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c > index d3987bcf53f8..449ed4fba0f2 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c > @@ -582,13 +582,9 @@ int vmw_kms_ldu_init_display(struct vmw_private *dev_priv) > > int vmw_kms_ldu_close_display(struct vmw_private *dev_priv) > { > - struct drm_device *dev = dev_priv->dev; > - > if (!dev_priv->ldu_priv) > return -ENOSYS; > > - drm_vblank_cleanup(dev); > - > BUG_ON(!list_empty(&dev_priv->ldu_priv->active)); > > kfree(dev_priv->ldu_priv); > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c > index 8d7dc9def7c2..3b917c9b0c21 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c > @@ -746,15 +746,6 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv) > return 0; > } > > -int vmw_kms_sou_close_display(struct vmw_private *dev_priv) > -{ > - struct drm_device *dev = dev_priv->dev; > - > - drm_vblank_cleanup(dev); > - > - return 0; > -} > - > static int do_dmabuf_define_gmrfb(struct vmw_private *dev_priv, > struct vmw_framebuffer *framebuffer) > { > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > index bad31bdf09b6..b4d4074c0ae0 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > @@ -1634,36 +1634,11 @@ int vmw_kms_stdu_init_display(struct vmw_private *dev_priv) > > if (unlikely(ret != 0)) { > DRM_ERROR("Failed to initialize STDU %d", i); > - goto err_vblank_cleanup; > + return ret; > } > } > > DRM_INFO("Screen Target Display device initialized\n"); > > return 0; > - > -err_vblank_cleanup: > - drm_vblank_cleanup(dev); > - return ret; > -} > - > - > - > -/** > - * vmw_kms_stdu_close_display - Cleans up after vmw_kms_stdu_init_display > - * > - * @dev_priv: VMW DRM device > - * > - * Frees up any resources allocated by vmw_kms_stdu_init_display > - * > - * RETURNS: > - * 0 on success > - */ > -int vmw_kms_stdu_close_display(struct vmw_private *dev_priv) > -{ > - struct drm_device *dev = dev_priv->dev; > - > - drm_vblank_cleanup(dev); > - > - return 0; > } > -- > 2.11.0 > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx