amdgpu_cs_buckets_get_list(&buckets, &p->validated);
        }
  
 -      p->vm_bos = amdgpu_vm_get_bos(p->adev, &fpriv->vm,
 -                                    &p->validated);
 +      INIT_LIST_HEAD(&duplicates);
 +      amdgpu_vm_get_pd_bo(&fpriv->vm, &p->validated, &p->vm_pd);
  
+       if (p->uf.bo)
+               list_add(&p->uf_entry.tv.head, &p->validated);
+ 
        if (need_mmap_lock)
                down_read(¤t->mm->mmap_sem);
  
 
        return vmw_ldu_commit_list(dev_priv);
  }
  
 -static struct drm_crtc_funcs vmw_legacy_crtc_funcs = {
 -      .save = vmw_du_crtc_save,
 -      .restore = vmw_du_crtc_restore,
 +static const struct drm_crtc_funcs vmw_legacy_crtc_funcs = {
-       .cursor_set = vmw_du_crtc_cursor_set,
+       .cursor_set2 = vmw_du_crtc_cursor_set2,
        .cursor_move = vmw_du_crtc_cursor_move,
        .gamma_set = vmw_du_crtc_gamma_set,
        .destroy = vmw_ldu_crtc_destroy,
 
        return ret;
  }
  
 -static struct drm_crtc_funcs vmw_screen_object_crtc_funcs = {
 -      .save = vmw_du_crtc_save,
 -      .restore = vmw_du_crtc_restore,
 +static const struct drm_crtc_funcs vmw_screen_object_crtc_funcs = {
-       .cursor_set = vmw_du_crtc_cursor_set,
+       .cursor_set2 = vmw_du_crtc_cursor_set2,
        .cursor_move = vmw_du_crtc_cursor_move,
        .gamma_set = vmw_du_crtc_gamma_set,
        .destroy = vmw_sou_crtc_destroy,
 
  /*
   *  Screen Target CRTC dispatch table
   */
 -static struct drm_crtc_funcs vmw_stdu_crtc_funcs = {
 -      .save = vmw_du_crtc_save,
 -      .restore = vmw_du_crtc_restore,
 +static const struct drm_crtc_funcs vmw_stdu_crtc_funcs = {
-       .cursor_set = vmw_du_crtc_cursor_set,
+       .cursor_set2 = vmw_du_crtc_cursor_set2,
        .cursor_move = vmw_du_crtc_cursor_move,
        .gamma_set = vmw_du_crtc_gamma_set,
        .destroy = vmw_stdu_crtc_destroy,