bool vmw_kms_validate_mode_vram(struct vmw_private *dev_priv,
                                uint32_t pitch,
                                uint32_t height);
-u32 vmw_get_vblank_counter(struct drm_crtc *crtc);
-int vmw_enable_vblank(struct drm_crtc *crtc);
-void vmw_disable_vblank(struct drm_crtc *crtc);
 int vmw_kms_present(struct vmw_private *dev_priv,
                    struct drm_file *file_priv,
                    struct vmw_framebuffer *vfb,
 
 #include <drm/drm_fourcc.h>
 #include <drm/drm_rect.h>
 #include <drm/drm_sysfs.h>
-#include <drm/drm_vblank.h>
 
 #include "vmwgfx_kms.h"
 
 void vmw_du_crtc_atomic_flush(struct drm_crtc *crtc,
                              struct drm_atomic_state *state)
 {
-       struct drm_pending_vblank_event *event = crtc->state->event;
-
-       if (event) {
-               crtc->state->event = NULL;
-
-               spin_lock_irq(&crtc->dev->event_lock);
-               drm_crtc_send_vblank_event(crtc, event);
-               spin_unlock_irq(&crtc->dev->event_lock);
-       }
 }
 
 
                 dev_priv->max_primary_mem : dev_priv->vram_size);
 }
 
-
-/*
- * Function called by DRM code called with vbl_lock held.
- */
-u32 vmw_get_vblank_counter(struct drm_crtc *crtc)
-{
-       return 0;
-}
-
-/*
- * Function called by DRM code called with vbl_lock held.
- */
-int vmw_enable_vblank(struct drm_crtc *crtc)
-{
-       return -EINVAL;
-}
-
-/*
- * Function called by DRM code called with vbl_lock held.
- */
-void vmw_disable_vblank(struct drm_crtc *crtc)
-{
-}
-
 /**
  * vmw_du_update_layout - Update the display unit with topology from resolution
  * plugin and generate DRM uevent
 
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_vblank.h>
 
 #include "vmwgfx_kms.h"
 
        .atomic_duplicate_state = vmw_du_crtc_duplicate_state,
        .atomic_destroy_state = vmw_du_crtc_destroy_state,
        .set_config = drm_atomic_helper_set_config,
-       .get_vblank_counter = vmw_get_vblank_counter,
-       .enable_vblank = vmw_enable_vblank,
-       .disable_vblank = vmw_disable_vblank,
 };
 
 
        dev_priv->ldu_priv->last_num_active = 0;
        dev_priv->ldu_priv->fb = NULL;
 
-       ret = drm_vblank_init(dev, num_display_units);
-       if (ret != 0)
-               goto err_free;
-
        vmw_kms_create_implicit_placement_property(dev_priv);
 
        for (i = 0; i < num_display_units; ++i) {
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_vblank.h>
 
 #include "vmwgfx_kms.h"
 
        .atomic_destroy_state = vmw_du_crtc_destroy_state,
        .set_config = drm_atomic_helper_set_config,
        .page_flip = drm_atomic_helper_page_flip,
-       .get_vblank_counter = vmw_get_vblank_counter,
-       .enable_vblank = vmw_enable_vblank,
-       .disable_vblank = vmw_disable_vblank,
 };
 
 /*
        struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, plane);
        struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane);
        struct drm_crtc *crtc = new_state->crtc;
-       struct drm_pending_vblank_event *event = NULL;
        struct vmw_fence_obj *fence = NULL;
        int ret;
 
                return;
        }
 
-       /* For error case vblank event is send from vmw_du_crtc_atomic_flush */
-       event = crtc->state->event;
-       if (event && fence) {
-               struct drm_file *file_priv = event->base.file_priv;
-
-               ret = vmw_event_fence_action_queue(file_priv,
-                                                  fence,
-                                                  &event->base,
-                                                  &event->event.vbl.tv_sec,
-                                                  &event->event.vbl.tv_usec,
-                                                  true);
-
-               if (unlikely(ret != 0))
-                       DRM_ERROR("Failed to queue event on fence.\n");
-               else
-                       crtc->state->event = NULL;
-       }
-
        if (fence)
                vmw_fence_obj_unreference(&fence);
 }
 int vmw_kms_sou_init_display(struct vmw_private *dev_priv)
 {
        struct drm_device *dev = &dev_priv->drm;
-       int i, ret;
+       int i;
 
        if (!(dev_priv->capabilities & SVGA_CAP_SCREEN_OBJECT_2)) {
                return -ENOSYS;
        }
 
-       ret = -ENOMEM;
-
-       ret = drm_vblank_init(dev, VMWGFX_NUM_DISPLAY_UNITS);
-       if (unlikely(ret != 0))
-               return ret;
-
        for (i = 0; i < VMWGFX_NUM_DISPLAY_UNITS; ++i)
                vmw_sou_init(dev_priv, i);
 
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_fourcc.h>
-#include <drm/drm_vblank.h>
 
 #include "vmwgfx_kms.h"
 #include "vmw_surface_cache.h"
        .atomic_destroy_state = vmw_du_crtc_destroy_state,
        .set_config = drm_atomic_helper_set_config,
        .page_flip = drm_atomic_helper_page_flip,
-       .get_vblank_counter = vmw_get_vblank_counter,
-       .enable_vblank = vmw_enable_vblank,
-       .disable_vblank = vmw_disable_vblank,
 };
 
 
        struct vmw_plane_state *vps = vmw_plane_state_to_vps(new_state);
        struct drm_crtc *crtc = new_state->crtc;
        struct vmw_screen_target_display_unit *stdu;
-       struct drm_pending_vblank_event *event;
        struct vmw_fence_obj *fence = NULL;
        struct vmw_private *dev_priv;
        int ret;
                return;
        }
 
-       /* In case of error, vblank event is send in vmw_du_crtc_atomic_flush */
-       event = crtc->state->event;
-       if (event && fence) {
-               struct drm_file *file_priv = event->base.file_priv;
-
-               ret = vmw_event_fence_action_queue(file_priv,
-                                                  fence,
-                                                  &event->base,
-                                                  &event->event.vbl.tv_sec,
-                                                  &event->event.vbl.tv_usec,
-                                                  true);
-               if (ret)
-                       DRM_ERROR("Failed to queue event on fence.\n");
-               else
-                       crtc->state->event = NULL;
-       }
-
        if (fence)
                vmw_fence_obj_unreference(&fence);
 }
        if (!(dev_priv->capabilities & SVGA_CAP_GBOBJECTS))
                return -ENOSYS;
 
-       ret = drm_vblank_init(dev, VMWGFX_NUM_DISPLAY_UNITS);
-       if (unlikely(ret != 0))
-               return ret;
-
        dev_priv->active_display_unit = vmw_du_screen_target;
 
        for (i = 0; i < VMWGFX_NUM_DISPLAY_UNITS; ++i) {