u64 gpu_addr;
        u32 csum;
        int ret;
-       struct ttm_bo_kmap_obj uobj_map;
        u8 *src, *dst;
-       bool src_isiomem, dst_isiomem;
+
        if (!handle) {
                ast_hide_cursor(crtc);
                return 0;
        }
        gbo = drm_gem_vram_of_gem(obj);
 
-       ret = drm_gem_vram_lock(gbo, false);
+       ret = drm_gem_vram_pin(gbo, 0);
        if (ret)
-               goto fail;
-
-       memset(&uobj_map, 0, sizeof(uobj_map));
-       src = drm_gem_vram_kmap_at(gbo, true, &src_isiomem, &uobj_map);
+               goto err_drm_gem_object_put_unlocked;
+       src = drm_gem_vram_kmap(gbo, true, NULL);
        if (IS_ERR(src)) {
                ret = PTR_ERR(src);
-               goto fail_unlock;
+               goto err_drm_gem_vram_unpin;
        }
-       if (src_isiomem == true)
-               DRM_ERROR("src cursor bo should be in main memory\n");
 
        dst = drm_gem_vram_kmap(drm_gem_vram_of_gem(ast->cursor_cache),
-                               false, &dst_isiomem);
+                               false, NULL);
        if (IS_ERR(dst)) {
                ret = PTR_ERR(dst);
-               goto fail_unlock;
+               goto err_drm_gem_vram_kunmap;
        }
-       if (dst_isiomem == false)
-               DRM_ERROR("dst bo should be in VRAM\n");
        dst_gpu = drm_gem_vram_offset(drm_gem_vram_of_gem(ast->cursor_cache));
        if (dst_gpu < 0) {
                ret = (int)dst_gpu;
-               goto fail_unlock;
+               goto err_drm_gem_vram_kunmap;
        }
 
        dst += (AST_HWC_SIZE + AST_HWC_SIGNATURE_SIZE)*ast->next_cursor;
        /* do data transfer to cursor cache */
        csum = copy_cursor_image(src, dst, width, height);
 
-       drm_gem_vram_kunmap_at(gbo, &uobj_map);
-       drm_gem_vram_unlock(gbo);
-
        /* write checksum + signature */
        {
                struct drm_gem_vram_object *dst_gbo =
 
        ast_show_cursor(crtc);
 
+       drm_gem_vram_kunmap(gbo);
+       drm_gem_vram_unpin(gbo);
        drm_gem_object_put_unlocked(obj);
+
        return 0;
 
-fail_unlock:
-       drm_gem_vram_unlock(gbo);
-fail:
+err_drm_gem_vram_kunmap:
+       drm_gem_vram_kunmap(gbo);
+err_drm_gem_vram_unpin:
+       drm_gem_vram_unpin(gbo);
+err_drm_gem_object_put_unlocked:
        drm_gem_object_put_unlocked(obj);
        return ret;
 }