On Wed, Jun 21, 2017 at 10:28:48AM +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
> drm_vblank_cleanup code since it's not really doing anything, it looks
> all cargo-culted.
> 
> v2: Appease gcc better.
> 
> Cc: Sinclair Yeh <s...@vmware.com>
> Cc: Thomas Hellstrom <thellst...@vmware.com>
> Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
> ---
>  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 3d94ea67a825..a93c0bb73452 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> @@ -1658,7 +1658,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
> @@ -1666,11 +1666,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)

I think this is equivalent to:

if (dev_priv->active_display_unit == vmw_du_legacy)

>               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 5f8d678ae675..ff9c8389ff21 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> @@ -390,7 +390,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,
> @@ -418,7 +417,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 50be1f034f9e..6aecba6cd5e2 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> @@ -1651,36 +1651,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
> 
> _______________________________________________
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to