// SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright © 2011-2018 VMware, Inc., Palo Alto, CA., USA
+ * Copyright © 2011-2023 VMware, Inc., Palo Alto, CA., USA
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  *
  **************************************************************************/
 
-#include <drm/ttm/ttm_placement.h>
-
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
-#include "ttm_object.h"
 
 
-/**
- * vmw_buffer_object - Convert a struct ttm_buffer_object to a struct
- * vmw_buffer_object.
- *
- * @bo: Pointer to the TTM buffer object.
- * Return: Pointer to the struct vmw_buffer_object embedding the
- * TTM buffer object.
- */
-static struct vmw_buffer_object *
-vmw_buffer_object(struct ttm_buffer_object *bo)
-{
-       return container_of(bo, struct vmw_buffer_object, base);
-}
+#include <drm/ttm/ttm_placement.h>
 
 /**
- * vmw_bo_bo_free - vmw buffer object destructor
+ * vmw_bo_free - vmw_bo destructor
  *
  * @bo: Pointer to the embedded struct ttm_buffer_object
  */
-static void vmw_bo_bo_free(struct ttm_buffer_object *bo)
+static void vmw_bo_free(struct ttm_buffer_object *bo)
 {
-       struct vmw_buffer_object *vmw_bo = vmw_buffer_object(bo);
+       struct vmw_bo *vbo = to_vmw_bo(&bo->base);
 
-       WARN_ON(vmw_bo->dirty);
-       WARN_ON(!RB_EMPTY_ROOT(&vmw_bo->res_tree));
-       vmw_bo_unmap(vmw_bo);
+       WARN_ON(vbo->dirty);
+       WARN_ON(!RB_EMPTY_ROOT(&vbo->res_tree));
+       vmw_bo_unmap(vbo);
        drm_gem_object_release(&bo->base);
-       kfree(vmw_bo);
+       kfree(vbo);
 }
 
 /**
- * bo_is_vmw - check if the buffer object is a &vmw_buffer_object
+ * bo_is_vmw - check if the buffer object is a &vmw_bo
  * @bo: ttm buffer object to be checked
  *
  * Uses destroy function associated with the object to determine if this is
- * a &vmw_buffer_object.
+ * a &vmw_bo.
  *
  * Returns:
- * true if the object is of &vmw_buffer_object type, false if not.
+ * true if the object is of &vmw_bo type, false if not.
  */
 static bool bo_is_vmw(struct ttm_buffer_object *bo)
 {
-       return bo->destroy == &vmw_bo_bo_free;
+       return bo->destroy == &vmw_bo_free;
 }
 
 /**
  * -ERESTARTSYS if interrupted by a signal
  */
 int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
-                           struct vmw_buffer_object *buf,
+                           struct vmw_bo *buf,
                            struct ttm_placement *placement,
                            bool interruptible)
 {
  * -ERESTARTSYS if interrupted by a signal
  */
 int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
-                             struct vmw_buffer_object *buf,
+                             struct vmw_bo *buf,
                              bool interruptible)
 {
        struct ttm_operation_ctx ctx = {interruptible, false };
  * -ERESTARTSYS if interrupted by a signal
  */
 int vmw_bo_pin_in_vram(struct vmw_private *dev_priv,
-                      struct vmw_buffer_object *buf,
+                      struct vmw_bo *buf,
                       bool interruptible)
 {
        return vmw_bo_pin_in_placement(dev_priv, buf, &vmw_vram_placement,
  * -ERESTARTSYS if interrupted by a signal
  */
 int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
-                               struct vmw_buffer_object *buf,
+                               struct vmw_bo *buf,
                                bool interruptible)
 {
        struct ttm_operation_ctx ctx = {interruptible, false };
  * -ERESTARTSYS if interrupted by a signal
  */
 int vmw_bo_unpin(struct vmw_private *dev_priv,
-                struct vmw_buffer_object *buf,
+                struct vmw_bo *buf,
                 bool interruptible)
 {
        struct ttm_buffer_object *bo = &buf->base;
  * @pin: Whether to pin or unpin.
  *
  */
-void vmw_bo_pin_reserved(struct vmw_buffer_object *vbo, bool pin)
+void vmw_bo_pin_reserved(struct vmw_bo *vbo, bool pin)
 {
        struct ttm_operation_ctx ctx = { false, true };
        struct ttm_place pl;
  * 3) Buffer object destruction
  *
  */
-void *vmw_bo_map_and_cache(struct vmw_buffer_object *vbo)
+void *vmw_bo_map_and_cache(struct vmw_bo *vbo)
 {
        struct ttm_buffer_object *bo = &vbo->base;
        bool not_used;
  * @vbo: The buffer object whose map we are tearing down.
  *
  * This function tears down a cached map set up using
- * vmw_buffer_object_map_and_cache().
+ * vmw_bo_map_and_cache().
  */
-void vmw_bo_unmap(struct vmw_buffer_object *vbo)
+void vmw_bo_unmap(struct vmw_bo *vbo)
 {
        if (vbo->map.bo == NULL)
                return;
 int vmw_bo_create(struct vmw_private *vmw,
                  size_t size, struct ttm_placement *placement,
                  bool interruptible, bool pin,
-                 struct vmw_buffer_object **p_bo)
+                 struct vmw_bo **p_bo)
 {
        int ret;
 
  * vmw_bo_init - Initialize a vmw buffer object
  *
  * @dev_priv: Pointer to the device private struct
- * @vmw_bo: Pointer to the struct vmw_buffer_object to initialize.
+ * @vmw_bo: Pointer to the struct vmw_bo to initialize.
  * @size: Buffer object size in bytes.
  * @placement: Initial placement.
  * @interruptible: Whether waits should be performed interruptible.
  * Note that on error, the code will free the buffer object.
  */
 int vmw_bo_init(struct vmw_private *dev_priv,
-               struct vmw_buffer_object *vmw_bo,
+               struct vmw_bo *vmw_bo,
                size_t size, struct ttm_placement *placement,
                bool interruptible, bool pin)
 {
        drm_gem_private_object_init(vdev, &vmw_bo->base.base, size);
 
        ret = ttm_bo_init_reserved(bdev, &vmw_bo->base, ttm_bo_type_device,
-                                  placement, 0, &ctx, NULL, NULL, vmw_bo_bo_free);
+                                  placement, 0, &ctx, NULL, NULL, vmw_bo_free);
        if (unlikely(ret)) {
                return ret;
        }
 }
 
 /**
- * vmw_user_bo_synccpu_grab - Grab a struct vmw_buffer_object for cpu
+ * vmw_user_bo_synccpu_grab - Grab a struct vmw_bo for cpu
  * access, idling previous GPU operations on the buffer and optionally
  * blocking it for further command submissions.
  *
  *
  * A blocking grab will be automatically released when @tfile is closed.
  */
-static int vmw_user_bo_synccpu_grab(struct vmw_buffer_object *vmw_bo,
+static int vmw_user_bo_synccpu_grab(struct vmw_bo *vmw_bo,
                                    uint32_t flags)
 {
        bool nonblock = !!(flags & drm_vmw_synccpu_dontblock);
                                       uint32_t handle,
                                       uint32_t flags)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        int ret = vmw_user_bo_lookup(filp, handle, &vmw_bo);
 
        if (!ret) {
 {
        struct drm_vmw_synccpu_arg *arg =
                (struct drm_vmw_synccpu_arg *) data;
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        int ret;
 
        if ((arg->flags & (drm_vmw_synccpu_read | drm_vmw_synccpu_write)) == 0
  * @filp: The file the handle is registered with.
  * @handle: The user buffer object handle
  * @out: Pointer to a where a pointer to the embedded
- * struct vmw_buffer_object should be placed.
+ * struct vmw_bo should be placed.
  * Return: Zero on success, Negative error code on error.
  *
  * The vmw buffer object pointer will be refcounted.
  */
 int vmw_user_bo_lookup(struct drm_file *filp,
                       uint32_t handle,
-                      struct vmw_buffer_object **out)
+                      struct vmw_bo **out)
 {
        struct drm_gem_object *gobj;
 
                return -ESRCH;
        }
 
-       *out = gem_to_vmw_bo(gobj);
+       *out = to_vmw_bo(gobj);
        ttm_bo_get(&(*out)->base);
        drm_gem_object_put(gobj);
 
                    struct drm_mode_create_dumb *args)
 {
        struct vmw_private *dev_priv = vmw_priv(dev);
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        int cpp = DIV_ROUND_UP(args->bpp, 8);
        int ret;
 
  */
 void vmw_bo_swap_notify(struct ttm_buffer_object *bo)
 {
-       /* Is @bo embedded in a struct vmw_buffer_object? */
+       /* Is @bo embedded in a struct vmw_bo? */
        if (!bo_is_vmw(bo))
                return;
 
        /* Kill any cached kernel maps before swapout */
-       vmw_bo_unmap(vmw_buffer_object(bo));
+       vmw_bo_unmap(to_vmw_bo(&bo->base));
 }
 
 
 void vmw_bo_move_notify(struct ttm_buffer_object *bo,
                        struct ttm_resource *mem)
 {
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
 
-       /* Make sure @bo is embedded in a struct vmw_buffer_object? */
+       /* Make sure @bo is embedded in a struct vmw_bo? */
        if (!bo_is_vmw(bo))
                return;
 
-       vbo = container_of(bo, struct vmw_buffer_object, base);
+       vbo = container_of(bo, struct vmw_bo, base);
 
        /*
         * Kill any cached kernel maps before move to or from VRAM.
 
--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0 OR MIT */
+/**************************************************************************
+ *
+ * Copyright 2023 VMware, Inc., Palo Alto, CA., USA
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#ifndef VMWGFX_BO_H
+#define VMWGFX_BO_H
+
+#include "device_include/svga_reg.h"
+
+#include <drm/ttm/ttm_bo.h>
+
+#include <linux/rbtree_types.h>
+#include <linux/types.h>
+
+struct vmw_bo_dirty;
+struct vmw_fence_obj;
+struct vmw_private;
+struct vmw_resource;
+
+/**
+ * struct vmw_bo - TTM buffer object with vmwgfx additions
+ * @base: The TTM buffer object
+ * @res_tree: RB tree of resources using this buffer object as a backing MOB
+ * @base_mapped_count: ttm BO mapping count; used by KMS atomic helpers.
+ * @cpu_writers: Number of synccpu write grabs. Protected by reservation when
+ * increased. May be decreased without reservation.
+ * @dx_query_ctx: DX context if this buffer object is used as a DX query MOB
+ * @map: Kmap object for semi-persistent mappings
+ * @res_prios: Eviction priority counts for attached resources
+ * @dirty: structure for user-space dirty-tracking
+ */
+struct vmw_bo {
+       struct ttm_buffer_object base;
+       struct rb_root res_tree;
+       /* For KMS atomic helpers: ttm bo mapping count */
+       atomic_t base_mapped_count;
+
+       atomic_t cpu_writers;
+       /* Not ref-counted.  Protected by binding_mutex */
+       struct vmw_resource *dx_query_ctx;
+       /* Protected by reservation */
+       struct ttm_bo_kmap_obj map;
+       u32 res_prios[TTM_MAX_BO_PRIORITY];
+       struct vmw_bo_dirty *dirty;
+};
+
+int vmw_bo_create_kernel(struct vmw_private *dev_priv,
+                        unsigned long size,
+                        struct ttm_placement *placement,
+                        struct ttm_buffer_object **p_bo);
+int vmw_bo_create(struct vmw_private *dev_priv,
+                 size_t size, struct ttm_placement *placement,
+                 bool interruptible, bool pin,
+                 struct vmw_bo **p_bo);
+int vmw_bo_init(struct vmw_private *dev_priv,
+               struct vmw_bo *vmw_bo,
+               size_t size, struct ttm_placement *placement,
+               bool interruptible, bool pin);
+int vmw_bo_unref_ioctl(struct drm_device *dev, void *data,
+                      struct drm_file *file_priv);
+
+int vmw_bo_pin_in_placement(struct vmw_private *vmw_priv,
+                           struct vmw_bo *bo,
+                           struct ttm_placement *placement,
+                           bool interruptible);
+int vmw_bo_pin_in_vram(struct vmw_private *dev_priv,
+                      struct vmw_bo *buf,
+                      bool interruptible);
+int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
+                             struct vmw_bo *buf,
+                             bool interruptible);
+int vmw_bo_pin_in_start_of_vram(struct vmw_private *vmw_priv,
+                               struct vmw_bo *bo,
+                               bool interruptible);
+void vmw_bo_pin_reserved(struct vmw_bo *bo, bool pin);
+int vmw_bo_unpin(struct vmw_private *vmw_priv,
+                struct vmw_bo *bo,
+                bool interruptible);
+
+void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf,
+                         SVGAGuestPtr *ptr);
+int vmw_user_bo_synccpu_ioctl(struct drm_device *dev, void *data,
+                             struct drm_file *file_priv);
+int vmw_user_bo_lookup(struct drm_file *filp,
+                      uint32_t handle,
+                      struct vmw_bo **out);
+void vmw_bo_fence_single(struct ttm_buffer_object *bo,
+                        struct vmw_fence_obj *fence);
+
+void *vmw_bo_map_and_cache(struct vmw_bo *vbo);
+void vmw_bo_unmap(struct vmw_bo *vbo);
+
+void vmw_bo_move_notify(struct ttm_buffer_object *bo,
+                       struct ttm_resource *mem);
+void vmw_bo_swap_notify(struct ttm_buffer_object *bo);
+
+/**
+ * vmw_bo_adjust_prio - Adjust the buffer object eviction priority
+ * according to attached resources
+ * @vbo: The struct vmw_bo
+ */
+static inline void vmw_bo_prio_adjust(struct vmw_bo *vbo)
+{
+       int i = ARRAY_SIZE(vbo->res_prios);
+
+       while (i--) {
+               if (vbo->res_prios[i]) {
+                       vbo->base.priority = i;
+                       return;
+               }
+       }
+
+       vbo->base.priority = 3;
+}
+
+/**
+ * vmw_bo_prio_add - Notify a buffer object of a newly attached resource
+ * eviction priority
+ * @vbo: The struct vmw_bo
+ * @prio: The resource priority
+ *
+ * After being notified, the code assigns the highest resource eviction priority
+ * to the backing buffer object (mob).
+ */
+static inline void vmw_bo_prio_add(struct vmw_bo *vbo, int prio)
+{
+       if (vbo->res_prios[prio]++ == 0)
+               vmw_bo_prio_adjust(vbo);
+}
+
+/**
+ * vmw_bo_prio_del - Notify a buffer object of a resource with a certain
+ * priority being removed
+ * @vbo: The struct vmw_bo
+ * @prio: The resource priority
+ *
+ * After being notified, the code assigns the highest resource eviction priority
+ * to the backing buffer object (mob).
+ */
+static inline void vmw_bo_prio_del(struct vmw_bo *vbo, int prio)
+{
+       if (--vbo->res_prios[prio] == 0)
+               vmw_bo_prio_adjust(vbo);
+}
+
+static inline void vmw_bo_unreference(struct vmw_bo **buf)
+{
+       struct vmw_bo *tmp_buf = *buf;
+
+       *buf = NULL;
+       if (tmp_buf)
+               ttm_bo_put(&tmp_buf->base);
+}
+
+static inline struct vmw_bo *vmw_bo_reference(struct vmw_bo *buf)
+{
+       ttm_bo_get(&buf->base);
+       return buf;
+}
+
+static inline struct vmw_bo *to_vmw_bo(struct drm_gem_object *gobj)
+{
+       return container_of((gobj), struct vmw_bo, base.base);
+}
+
+#endif // VMWGFX_BO_H
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2020 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
-
-#include <linux/sched/signal.h>
+#include "vmwgfx_bo.h"
+#include "vmwgfx_drv.h"
+#include "vmwgfx_devcaps.h"
 
 #include <drm/ttm/ttm_placement.h>
 
-#include "vmwgfx_drv.h"
-#include "vmwgfx_devcaps.h"
+#include <linux/sched/signal.h>
 
 bool vmw_supports_3d(struct vmw_private *dev_priv)
 {
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2015-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  **************************************************************************/
 
-#include <linux/dmapool.h>
-#include <linux/pci.h>
+#include "vmwgfx_bo.h"
+#include "vmwgfx_drv.h"
 
 #include <drm/ttm/ttm_bo.h>
 
-#include "vmwgfx_drv.h"
+#include <linux/dmapool.h>
+#include <linux/pci.h>
 
 /*
  * Size of inline command buffers. Try to make sure that a page size is a
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
 
 #include <drm/ttm/ttm_placement.h>
 
+#include "vmwgfx_binding.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include "vmwgfx_resource_priv.h"
-#include "vmwgfx_binding.h"
 
 struct vmw_user_context {
        struct ttm_base_object base;
        struct vmw_cmdbuf_res_manager *man;
        struct vmw_resource *cotables[SVGA_COTABLE_MAX];
        spinlock_t cotable_lock;
-       struct vmw_buffer_object *dx_query_mob;
+       struct vmw_bo *dx_query_mob;
 };
 
 static void vmw_user_context_free(struct vmw_resource *res);
  * specified in the parameter.  0 otherwise.
  */
 int vmw_context_bind_dx_query(struct vmw_resource *ctx_res,
-                             struct vmw_buffer_object *mob)
+                             struct vmw_bo *mob)
 {
        struct vmw_user_context *uctx =
                container_of(ctx_res, struct vmw_user_context, res);
  *
  * @ctx_res: The context resource
  */
-struct vmw_buffer_object *
+struct vmw_bo *
 vmw_context_get_dx_query_mob(struct vmw_resource *ctx_res)
 {
        struct vmw_user_context *uctx =
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2014-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2014-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * whenever the backing MOB is evicted.
  */
 
-#include <drm/ttm/ttm_placement.h>
-
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include "vmwgfx_mksstat.h"
 #include "vmwgfx_resource_priv.h"
 #include "vmwgfx_so.h"
 
+#include <drm/ttm/ttm_placement.h>
+
 /**
  * struct vmw_cotable - Context Object Table resource
  *
        struct ttm_operation_ctx ctx = { false, false };
        struct vmw_private *dev_priv = res->dev_priv;
        struct vmw_cotable *vcotbl = vmw_cotable(res);
-       struct vmw_buffer_object *buf, *old_buf = res->backup;
+       struct vmw_bo *buf, *old_buf = res->backup;
        struct ttm_buffer_object *bo, *old_bo = &res->backup->base;
        size_t old_size = res->backup_size;
        size_t old_size_read_back = vcotbl->size_read_back;
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
 
 #include "vmwgfx_drv.h"
 
+#include "vmwgfx_bo.h"
+#include "vmwgfx_binding.h"
 #include "vmwgfx_devcaps.h"
 #include "vmwgfx_mksstat.h"
-#include "vmwgfx_binding.h"
 #include "ttm_object.h"
 
 #include <drm/drm_aperture.h>
 static int vmw_dummy_query_bo_create(struct vmw_private *dev_priv)
 {
        int ret;
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        struct ttm_bo_kmap_obj map;
        volatile SVGA3dQueryResult *result;
        bool dummy;
 
 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
 /**************************************************************************
  *
- * Copyright 2009-2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
        unsigned long key;
 };
 
-/**
- * struct vmw_buffer_object - TTM buffer object with vmwgfx additions
- * @base: The TTM buffer object
- * @res_tree: RB tree of resources using this buffer object as a backing MOB
- * @base_mapped_count: ttm BO mapping count; used by KMS atomic helpers.
- * @cpu_writers: Number of synccpu write grabs. Protected by reservation when
- * increased. May be decreased without reservation.
- * @dx_query_ctx: DX context if this buffer object is used as a DX query MOB
- * @map: Kmap object for semi-persistent mappings
- * @res_prios: Eviction priority counts for attached resources
- * @dirty: structure for user-space dirty-tracking
- */
-struct vmw_buffer_object {
-       struct ttm_buffer_object base;
-       struct rb_root res_tree;
-       /* For KMS atomic helpers: ttm bo mapping count */
-       atomic_t base_mapped_count;
-
-       atomic_t cpu_writers;
-       /* Not ref-counted.  Protected by binding_mutex */
-       struct vmw_resource *dx_query_ctx;
-       /* Protected by reservation */
-       struct ttm_bo_kmap_obj map;
-       u32 res_prios[TTM_MAX_BO_PRIORITY];
-       struct vmw_bo_dirty *dirty;
-};
 
 /**
  * struct vmw_validate_buffer - Carries validation info about buffers.
  * @hw_destroy: Callback to destroy the resource on the device, as part of
  * resource destruction.
  */
+struct vmw_bo;
 struct vmw_resource_dirty;
 struct vmw_resource {
        struct kref kref;
        u32 res_dirty : 1;
        u32 backup_dirty : 1;
        u32 coherent : 1;
-       struct vmw_buffer_object *backup;
+       struct vmw_bo *backup;
        unsigned long backup_offset;
        unsigned long pin_count;
        const struct vmw_res_func *func;
        struct drm_file *filp;
        uint32_t *cmd_bounce;
        uint32_t cmd_bounce_size;
-       struct vmw_buffer_object *cur_query_bo;
+       struct vmw_bo *cur_query_bo;
        struct list_head bo_relocations;
        struct list_head res_relocations;
        uint32_t *buf_start;
        struct list_head staged_cmd_res;
        struct list_head ctx_list;
        struct vmw_ctx_validation_info *dx_ctx_node;
-       struct vmw_buffer_object *dx_query_mob;
+       struct vmw_bo *dx_query_mob;
        struct vmw_resource *dx_query_ctx;
        struct vmw_cmdbuf_res_manager *man;
        struct vmw_validation_context *ctx;
         * are protected by the cmdbuf mutex.
         */
 
-       struct vmw_buffer_object *dummy_query_bo;
-       struct vmw_buffer_object *pinned_bo;
+       struct vmw_bo *dummy_query_bo;
+       struct vmw_bo *pinned_bo;
        uint32_t query_cid;
        uint32_t query_cid_valid;
        bool dummy_query_bo_pinned;
 #endif
 };
 
-static inline struct vmw_buffer_object *gem_to_vmw_bo(struct drm_gem_object *gobj)
-{
-       return container_of((gobj), struct vmw_buffer_object, base.base);
-}
-
 static inline struct vmw_surface *vmw_res_to_srf(struct vmw_resource *res)
 {
        return container_of(res, struct vmw_surface, res);
                                  struct drm_file *filp,
                                  uint32_t handle,
                                  struct vmw_surface **out_surf,
-                                 struct vmw_buffer_object **out_buf);
+                                 struct vmw_bo **out_buf);
 extern int vmw_user_resource_lookup_handle(
        struct vmw_private *dev_priv,
        struct ttm_object_file *tfile,
                                   bool dirty_set,
                                   bool dirty,
                                   bool switch_backup,
-                                  struct vmw_buffer_object *new_backup,
+                                  struct vmw_bo *new_backup,
                                   unsigned long new_backup_offset);
 extern void vmw_query_move_notify(struct ttm_buffer_object *bo,
                                  struct ttm_resource *old_mem,
                                  struct ttm_resource *new_mem);
-extern int vmw_query_readback_all(struct vmw_buffer_object *dx_query_mob);
-extern void vmw_resource_evict_all(struct vmw_private *dev_priv);
-extern void vmw_resource_unbind_list(struct vmw_buffer_object *vbo);
+int vmw_query_readback_all(struct vmw_bo *dx_query_mob);
+void vmw_resource_evict_all(struct vmw_private *dev_priv);
+void vmw_resource_unbind_list(struct vmw_bo *vbo);
 void vmw_resource_mob_attach(struct vmw_resource *res);
 void vmw_resource_mob_detach(struct vmw_resource *res);
 void vmw_resource_dirty_update(struct vmw_resource *res, pgoff_t start,
                               pgoff_t end);
-int vmw_resources_clean(struct vmw_buffer_object *vbo, pgoff_t start,
+int vmw_resources_clean(struct vmw_bo *vbo, pgoff_t start,
                        pgoff_t end, pgoff_t *num_prefault);
 
 /**
        return !RB_EMPTY_NODE(&res->mob_node);
 }
 
-/**
- * Buffer object helper functions - vmwgfx_bo.c
- */
-extern int vmw_bo_pin_in_placement(struct vmw_private *vmw_priv,
-                                  struct vmw_buffer_object *bo,
-                                  struct ttm_placement *placement,
-                                  bool interruptible);
-extern int vmw_bo_pin_in_vram(struct vmw_private *dev_priv,
-                             struct vmw_buffer_object *buf,
-                             bool interruptible);
-extern int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
-                                    struct vmw_buffer_object *buf,
-                                    bool interruptible);
-extern int vmw_bo_pin_in_start_of_vram(struct vmw_private *vmw_priv,
-                                      struct vmw_buffer_object *bo,
-                                      bool interruptible);
-extern int vmw_bo_unpin(struct vmw_private *vmw_priv,
-                       struct vmw_buffer_object *bo,
-                       bool interruptible);
-extern void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf,
-                                SVGAGuestPtr *ptr);
-extern void vmw_bo_pin_reserved(struct vmw_buffer_object *bo, bool pin);
-extern int vmw_bo_create_kernel(struct vmw_private *dev_priv,
-                               unsigned long size,
-                               struct ttm_placement *placement,
-                               struct ttm_buffer_object **p_bo);
-extern int vmw_bo_create(struct vmw_private *dev_priv,
-                        size_t size, struct ttm_placement *placement,
-                        bool interruptible, bool pin,
-                        struct vmw_buffer_object **p_bo);
-extern int vmw_bo_init(struct vmw_private *dev_priv,
-                      struct vmw_buffer_object *vmw_bo,
-                      size_t size, struct ttm_placement *placement,
-                      bool interruptible, bool pin);
-extern int vmw_bo_unref_ioctl(struct drm_device *dev, void *data,
-                             struct drm_file *file_priv);
-extern int vmw_user_bo_synccpu_ioctl(struct drm_device *dev, void *data,
-                                    struct drm_file *file_priv);
-extern int vmw_user_bo_lookup(struct drm_file *filp,
-                             uint32_t handle,
-                             struct vmw_buffer_object **out);
-extern void vmw_bo_fence_single(struct ttm_buffer_object *bo,
-                               struct vmw_fence_obj *fence);
-extern void *vmw_bo_map_and_cache(struct vmw_buffer_object *vbo);
-extern void vmw_bo_unmap(struct vmw_buffer_object *vbo);
-extern void vmw_bo_move_notify(struct ttm_buffer_object *bo,
-                              struct ttm_resource *mem);
-extern void vmw_bo_swap_notify(struct ttm_buffer_object *bo);
-
-/**
- * vmw_bo_adjust_prio - Adjust the buffer object eviction priority
- * according to attached resources
- * @vbo: The struct vmw_buffer_object
- */
-static inline void vmw_bo_prio_adjust(struct vmw_buffer_object *vbo)
-{
-       int i = ARRAY_SIZE(vbo->res_prios);
-
-       while (i--) {
-               if (vbo->res_prios[i]) {
-                       vbo->base.priority = i;
-                       return;
-               }
-       }
-
-       vbo->base.priority = 3;
-}
-
-/**
- * vmw_bo_prio_add - Notify a buffer object of a newly attached resource
- * eviction priority
- * @vbo: The struct vmw_buffer_object
- * @prio: The resource priority
- *
- * After being notified, the code assigns the highest resource eviction priority
- * to the backing buffer object (mob).
- */
-static inline void vmw_bo_prio_add(struct vmw_buffer_object *vbo, int prio)
-{
-       if (vbo->res_prios[prio]++ == 0)
-               vmw_bo_prio_adjust(vbo);
-}
-
-/**
- * vmw_bo_prio_del - Notify a buffer object of a resource with a certain
- * priority being removed
- * @vbo: The struct vmw_buffer_object
- * @prio: The resource priority
- *
- * After being notified, the code assigns the highest resource eviction priority
- * to the backing buffer object (mob).
- */
-static inline void vmw_bo_prio_del(struct vmw_buffer_object *vbo, int prio)
-{
-       if (--vbo->res_prios[prio] == 0)
-               vmw_bo_prio_adjust(vbo);
-}
-
 /**
  * GEM related functionality - vmwgfx_gem.c
  */
                                             struct drm_file *filp,
                                             uint32_t size,
                                             uint32_t *handle,
-                                            struct vmw_buffer_object **p_vbo);
+                                            struct vmw_bo **p_vbo);
 extern int vmw_gem_object_create_ioctl(struct drm_device *dev, void *data,
                                       struct drm_file *filp);
 extern void vmw_debugfs_gem_init(struct vmw_private *vdev);
 extern void vmw_dx_context_scrub_cotables(struct vmw_resource *ctx,
                                          bool readback);
 extern int vmw_context_bind_dx_query(struct vmw_resource *ctx_res,
-                                    struct vmw_buffer_object *mob);
-extern struct vmw_buffer_object *
+                                    struct vmw_bo *mob);
+extern struct vmw_bo *
 vmw_context_get_dx_query_mob(struct vmw_resource *ctx_res);
 
 
        DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)
 
 /* Resource dirtying - vmwgfx_page_dirty.c */
-void vmw_bo_dirty_scan(struct vmw_buffer_object *vbo);
-int vmw_bo_dirty_add(struct vmw_buffer_object *vbo);
+void vmw_bo_dirty_scan(struct vmw_bo *vbo);
+int vmw_bo_dirty_add(struct vmw_bo *vbo);
 void vmw_bo_dirty_transfer_to_res(struct vmw_resource *res);
 void vmw_bo_dirty_clear_res(struct vmw_resource *res);
-void vmw_bo_dirty_release(struct vmw_buffer_object *vbo);
-void vmw_bo_dirty_unmap(struct vmw_buffer_object *vbo,
+void vmw_bo_dirty_release(struct vmw_bo *vbo);
+void vmw_bo_dirty_unmap(struct vmw_bo *vbo,
                        pgoff_t start, pgoff_t end);
 vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf);
 vm_fault_t vmw_bo_vm_mkwrite(struct vm_fault *vmf);
        return srf;
 }
 
-static inline void vmw_bo_unreference(struct vmw_buffer_object **buf)
-{
-       struct vmw_buffer_object *tmp_buf = *buf;
-
-       *buf = NULL;
-       if (tmp_buf != NULL)
-               ttm_bo_put(&tmp_buf->base);
-}
-
-static inline struct vmw_buffer_object *
-vmw_bo_reference(struct vmw_buffer_object *buf)
-{
-       ttm_bo_get(&buf->base);
-       return buf;
-}
-
 static inline void vmw_fifo_resource_inc(struct vmw_private *dev_priv)
 {
        atomic_inc(&dev_priv->num_fifo_resources);
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009 - 2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009 - 2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
-#include <linux/sync_file.h>
-#include <linux/hashtable.h>
-
+#include "vmwgfx_binding.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
-#include "vmwgfx_reg.h"
+#include "vmwgfx_mksstat.h"
+#include "vmwgfx_so.h"
+
 #include <drm/ttm/ttm_bo.h>
 #include <drm/ttm/ttm_placement.h>
-#include "vmwgfx_so.h"
-#include "vmwgfx_binding.h"
-#include "vmwgfx_mksstat.h"
 
+#include <linux/sync_file.h>
+#include <linux/hashtable.h>
 
 /*
  * Helper macro to get dx_ctx_node if available otherwise print an error
  */
 struct vmw_relocation {
        struct list_head head;
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        union {
                SVGAMobId *mob_loc;
                SVGAGuestPtr *location;
 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv,
                                 struct vmw_sw_context *sw_context,
                                 SVGAMobId *id,
-                                struct vmw_buffer_object **vmw_bo_p);
+                                struct vmw_bo **vmw_bo_p);
 /**
  * vmw_ptr_diff - Compute the offset from a to b in bytes
  *
 
        if (has_sm4_context(dev_priv) &&
            vmw_res_type(ctx) == vmw_res_dx_context) {
-               struct vmw_buffer_object *dx_query_mob;
+               struct vmw_bo *dx_query_mob;
 
                dx_query_mob = vmw_context_get_dx_query_mob(ctx);
                if (dx_query_mob)
                return ret;
 
        if (sw_context->dx_query_mob) {
-               struct vmw_buffer_object *expected_dx_query_mob;
+               struct vmw_bo *expected_dx_query_mob;
 
                expected_dx_query_mob =
                        vmw_context_get_dx_query_mob(sw_context->dx_query_ctx);
 static int vmw_rebind_all_dx_query(struct vmw_resource *ctx_res)
 {
        struct vmw_private *dev_priv = ctx_res->dev_priv;
-       struct vmw_buffer_object *dx_query_mob;
+       struct vmw_bo *dx_query_mob;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdDXBindAllQuery);
 
        dx_query_mob = vmw_context_get_dx_query_mob(ctx_res);
  * after successful submission of the current command batch.
  */
 static int vmw_query_bo_switch_prepare(struct vmw_private *dev_priv,
-                                      struct vmw_buffer_object *new_query_bo,
+                                      struct vmw_bo *new_query_bo,
                                       struct vmw_sw_context *sw_context)
 {
        struct vmw_res_cache_entry *ctx_entry =
 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv,
                                 struct vmw_sw_context *sw_context,
                                 SVGAMobId *id,
-                                struct vmw_buffer_object **vmw_bo_p)
+                                struct vmw_bo **vmw_bo_p)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        uint32_t handle = *id;
        struct vmw_relocation *reloc;
        int ret;
 static int vmw_translate_guest_ptr(struct vmw_private *dev_priv,
                                   struct vmw_sw_context *sw_context,
                                   SVGAGuestPtr *ptr,
-                                  struct vmw_buffer_object **vmw_bo_p)
+                                  struct vmw_bo **vmw_bo_p)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        uint32_t handle = ptr->gmrId;
        struct vmw_relocation *reloc;
        int ret;
                                 SVGA3dCmdHeader *header)
 {
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdDXBindQuery);
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        int ret;
 
        cmd = container_of(header, typeof(*cmd), header);
                                struct vmw_sw_context *sw_context,
                                SVGA3dCmdHeader *header)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdEndGBQuery);
        int ret;
 
                             struct vmw_sw_context *sw_context,
                             SVGA3dCmdHeader *header)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdEndQuery);
        int ret;
 
                                 struct vmw_sw_context *sw_context,
                                 SVGA3dCmdHeader *header)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdWaitForGBQuery);
        int ret;
 
                              struct vmw_sw_context *sw_context,
                              SVGA3dCmdHeader *header)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdWaitForQuery);
        int ret;
 
                       struct vmw_sw_context *sw_context,
                       SVGA3dCmdHeader *header)
 {
-       struct vmw_buffer_object *vmw_bo = NULL;
+       struct vmw_bo *vmw_bo = NULL;
        struct vmw_surface *srf = NULL;
        VMW_DECLARE_CMD_VAR(*cmd, SVGA3dCmdSurfaceDMA);
        int ret;
                                      struct vmw_sw_context *sw_context,
                                      void *buf)
 {
-       struct vmw_buffer_object *vmw_bo;
+       struct vmw_bo *vmw_bo;
 
        struct {
                uint32_t header;
                                     struct vmw_resource *res, uint32_t *buf_id,
                                     unsigned long backup_offset)
 {
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        void *info;
        int ret;
 
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2011-2014 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2011-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
 
 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
 /*
- * Copyright 2021 VMware, Inc.
+ * Copyright 2021-2023 VMware, Inc.
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
  *
  */
 
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 
 #include "drm/drm_prime.h"
 #include "drm/drm_gem_ttm_helper.h"
 
-/**
- * vmw_buffer_object - Convert a struct ttm_buffer_object to a struct
- * vmw_buffer_object.
- *
- * @bo: Pointer to the TTM buffer object.
- * Return: Pointer to the struct vmw_buffer_object embedding the
- * TTM buffer object.
- */
-static struct vmw_buffer_object *
-vmw_buffer_object(struct ttm_buffer_object *bo)
-{
-       return container_of(bo, struct vmw_buffer_object, base);
-}
-
 static void vmw_gem_object_free(struct drm_gem_object *gobj)
 {
        struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(gobj);
 static int vmw_gem_pin_private(struct drm_gem_object *obj, bool do_pin)
 {
        struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(obj);
-       struct vmw_buffer_object *vbo = vmw_buffer_object(bo);
+       struct vmw_bo *vbo = to_vmw_bo(obj);
        int ret;
 
        ret = ttm_bo_reserve(bo, false, false, NULL);
                                      struct drm_file *filp,
                                      uint32_t size,
                                      uint32_t *handle,
-                                     struct vmw_buffer_object **p_vbo)
+                                     struct vmw_bo **p_vbo)
 {
        int ret;
 
            (union drm_vmw_alloc_dmabuf_arg *)data;
        struct drm_vmw_alloc_dmabuf_req *req = &arg->req;
        struct drm_vmw_dmabuf_rep *rep = &arg->rep;
-       struct vmw_buffer_object *vbo;
+       struct vmw_bo *vbo;
        uint32_t handle;
        int ret;
 
 
 #if defined(CONFIG_DEBUG_FS)
 
-static void vmw_bo_print_info(int id, struct vmw_buffer_object *bo, struct seq_file *m)
+static void vmw_bo_print_info(int id, struct vmw_bo *bo, struct seq_file *m)
 {
        const char *placement;
        const char *type;
 
                spin_lock(&file->table_lock);
                idr_for_each_entry(&file->object_idr, gobj, id) {
-                       struct vmw_buffer_object *bo = gem_to_vmw_bo(gobj);
+                       struct vmw_bo *bo = to_vmw_bo(gobj);
 
                        vmw_bo_print_info(id, bo, m);
                }
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
-
 #include "vmwgfx_kms.h"
+
+#include "vmwgfx_bo.h"
 #include "vmw_surface_cache.h"
 
 #include <drm/drm_atomic.h>
 static int vmw_framebuffer_pin(struct vmw_framebuffer *vfb)
 {
        struct vmw_private *dev_priv = vmw_priv(vfb->base.dev);
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
        struct ttm_placement *placement;
        int ret;
 
 static int vmw_framebuffer_unpin(struct vmw_framebuffer *vfb)
 {
        struct vmw_private *dev_priv = vmw_priv(vfb->base.dev);
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
 
        buf = vfb->bo ?  vmw_framebuffer_to_vfbd(&vfb->base)->buffer :
                vmw_framebuffer_to_vfbs(&vfb->base)->surface->res.backup;
  */
 static int vmw_create_bo_proxy(struct drm_device *dev,
                               const struct drm_mode_fb_cmd2 *mode_cmd,
-                              struct vmw_buffer_object *bo_mob,
+                              struct vmw_bo *bo_mob,
                               struct vmw_surface **srf_out)
 {
        struct vmw_surface_metadata metadata = {0};
 
 
 static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv,
-                                     struct vmw_buffer_object *bo,
+                                     struct vmw_bo *bo,
                                      struct vmw_framebuffer **out,
                                      const struct drm_mode_fb_cmd2
                                      *mode_cmd)
  */
 struct vmw_framebuffer *
 vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
-                       struct vmw_buffer_object *bo,
+                       struct vmw_bo *bo,
                        struct vmw_surface *surface,
                        bool only_2d,
                        const struct drm_mode_fb_cmd2 *mode_cmd)
        struct vmw_private *dev_priv = vmw_priv(dev);
        struct vmw_framebuffer *vfb = NULL;
        struct vmw_surface *surface = NULL;
-       struct vmw_buffer_object *bo = NULL;
+       struct vmw_bo *bo = NULL;
        int ret;
 
        /* returns either a bo or surface */
 
 struct vmw_framebuffer_surface {
        struct vmw_framebuffer base;
        struct vmw_surface *surface;
-       struct vmw_buffer_object *buffer;
+       struct vmw_bo *buffer;
        struct list_head head;
        bool is_bo_proxy;  /* true if this is proxy surface for DMA buf */
 };
 
 struct vmw_framebuffer_bo {
        struct vmw_framebuffer base;
-       struct vmw_buffer_object *buffer;
+       struct vmw_bo *buffer;
 };
 
 
 struct vmw_plane_state {
        struct drm_plane_state base;
        struct vmw_surface *surf;
-       struct vmw_buffer_object *bo;
+       struct vmw_bo *bo;
 
        int content_fb_type;
        unsigned long bo_size;
        struct vmw_cursor_plane cursor;
 
        struct vmw_surface *cursor_surface;
-       struct vmw_buffer_object *cursor_bo;
+       struct vmw_bo *cursor_bo;
        size_t cursor_age;
 
        int cursor_x;
 
 struct vmw_validation_ctx {
        struct vmw_resource *res;
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
 };
 
 #define vmw_crtc_to_du(x) \
                     uint32_t num_clips);
 struct vmw_framebuffer *
 vmw_kms_new_framebuffer(struct vmw_private *dev_priv,
-                       struct vmw_buffer_object *bo,
+                       struct vmw_bo *bo,
                        struct vmw_surface *surface,
                        bool only_2d,
                        const struct drm_mode_fb_cmd2 *mode_cmd);
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2012-2021 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2012-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  **************************************************************************/
 
-#include <linux/highmem.h>
-
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 
+#include <linux/highmem.h>
+
 #ifdef CONFIG_64BIT
 #define VMW_PPN_SIZE 8
 #define VMW_MOBFMT_PTDEPTH_0 SVGA3D_MOBFMT_PT64_0
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2014 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
-
-#include <drm/ttm/ttm_placement.h>
+#include "vmwgfx_bo.h"
+#include "vmwgfx_drv.h"
 
 #include "device_include/svga_overlay.h"
 #include "device_include/svga_escape.h"
 
-#include "vmwgfx_drv.h"
+#include <drm/ttm/ttm_placement.h>
 
 #define VMW_MAX_NUM_STREAMS 1
 #define VMW_OVERLAY_CAP_MASK (SVGA_FIFO_CAP_VIDEO | SVGA_FIFO_CAP_ESCAPE)
 
 struct vmw_stream {
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
        bool claimed;
        bool paused;
        struct drm_vmw_control_stream_arg saved;
  * -ERESTARTSYS if interrupted by a signal.
  */
 static int vmw_overlay_send_put(struct vmw_private *dev_priv,
-                               struct vmw_buffer_object *buf,
+                               struct vmw_bo *buf,
                                struct drm_vmw_control_stream_arg *arg,
                                bool interruptible)
 {
  * used with GMRs instead of being locked to vram.
  */
 static int vmw_overlay_move_buffer(struct vmw_private *dev_priv,
-                                  struct vmw_buffer_object *buf,
+                                  struct vmw_bo *buf,
                                   bool pin, bool inter)
 {
        if (!pin)
  * -ERESTARTSYS if interrupted.
  */
 static int vmw_overlay_update_stream(struct vmw_private *dev_priv,
-                                    struct vmw_buffer_object *buf,
+                                    struct vmw_bo *buf,
                                     struct drm_vmw_control_stream_arg *arg,
                                     bool interruptible)
 {
        struct vmw_overlay *overlay = dev_priv->overlay_priv;
        struct drm_vmw_control_stream_arg *arg =
            (struct drm_vmw_control_stream_arg *)data;
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
        struct vmw_resource *res;
        int ret;
 
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2019 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2019-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 
 /*
  * dirty structure with the results. This function may change the
  * dirty-tracking method.
  */
-static void vmw_bo_dirty_scan_pagetable(struct vmw_buffer_object *vbo)
+static void vmw_bo_dirty_scan_pagetable(struct vmw_bo *vbo)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
        pgoff_t offset = drm_vma_node_start(&vbo->base.base.vma_node);
  *
  * This function may change the dirty-tracking method.
  */
-static void vmw_bo_dirty_scan_mkwrite(struct vmw_buffer_object *vbo)
+static void vmw_bo_dirty_scan_mkwrite(struct vmw_bo *vbo)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
        unsigned long offset = drm_vma_node_start(&vbo->base.base.vma_node);
  *
  * This function may change the dirty tracking method.
  */
-void vmw_bo_dirty_scan(struct vmw_buffer_object *vbo)
+void vmw_bo_dirty_scan(struct vmw_bo *vbo)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
 
  * when calling unmap_mapping_range(). This function makes sure we pick
  * up all dirty pages.
  */
-static void vmw_bo_dirty_pre_unmap(struct vmw_buffer_object *vbo,
+static void vmw_bo_dirty_pre_unmap(struct vmw_bo *vbo,
                                   pgoff_t start, pgoff_t end)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
  *
  * This is similar to ttm_bo_unmap_virtual() except it takes a subrange.
  */
-void vmw_bo_dirty_unmap(struct vmw_buffer_object *vbo,
+void vmw_bo_dirty_unmap(struct vmw_bo *vbo,
                        pgoff_t start, pgoff_t end)
 {
        unsigned long offset = drm_vma_node_start(&vbo->base.base.vma_node);
  *
  * Return: Zero on success, -ENOMEM on memory allocation failure.
  */
-int vmw_bo_dirty_add(struct vmw_buffer_object *vbo)
+int vmw_bo_dirty_add(struct vmw_bo *vbo)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
        pgoff_t num_pages = PFN_UP(vbo->base.resource->size);
  *
  * Return: Zero on success, -ENOMEM on memory allocation failure.
  */
-void vmw_bo_dirty_release(struct vmw_buffer_object *vbo)
+void vmw_bo_dirty_release(struct vmw_bo *vbo)
 {
        struct vmw_bo_dirty *dirty = vbo->dirty;
 
  */
 void vmw_bo_dirty_transfer_to_res(struct vmw_resource *res)
 {
-       struct vmw_buffer_object *vbo = res->backup;
+       struct vmw_bo *vbo = res->backup;
        struct vmw_bo_dirty *dirty = vbo->dirty;
        pgoff_t start, cur, end;
        unsigned long res_start = res->backup_offset;
 {
        unsigned long res_start = res->backup_offset;
        unsigned long res_end = res->backup_offset + res->backup_size;
-       struct vmw_buffer_object *vbo = res->backup;
+       struct vmw_bo *vbo = res->backup;
        struct vmw_bo_dirty *dirty = vbo->dirty;
 
        res_start >>= PAGE_SHIFT;
        vm_fault_t ret;
        unsigned long page_offset;
        unsigned int save_flags;
-       struct vmw_buffer_object *vbo =
+       struct vmw_bo *vbo =
                container_of(bo, typeof(*vbo), base);
 
        /*
        struct vm_area_struct *vma = vmf->vma;
        struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
            vma->vm_private_data;
-       struct vmw_buffer_object *vbo =
-               container_of(bo, struct vmw_buffer_object, base);
+       struct vmw_bo *vbo =
+               container_of(bo, struct vmw_bo, base);
        pgoff_t num_prefault;
        pgprot_t prot;
        vm_fault_t ret;
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
 
 #include <drm/ttm/ttm_placement.h>
 
-#include "vmwgfx_resource_priv.h"
 #include "vmwgfx_binding.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
+#include "vmwgfx_resource_priv.h"
 
 #define VMW_RES_EVICT_ERR_COUNT 10
 
  */
 void vmw_resource_mob_attach(struct vmw_resource *res)
 {
-       struct vmw_buffer_object *backup = res->backup;
+       struct vmw_bo *backup = res->backup;
        struct rb_node **new = &backup->res_tree.rb_node, *parent = NULL;
 
        dma_resv_assert_held(res->backup->base.base.resv);
  */
 void vmw_resource_mob_detach(struct vmw_resource *res)
 {
-       struct vmw_buffer_object *backup = res->backup;
+       struct vmw_bo *backup = res->backup;
 
        dma_resv_assert_held(backup->base.base.resv);
        if (vmw_resource_mob_attached(res)) {
                           struct drm_file *filp,
                           uint32_t handle,
                           struct vmw_surface **out_surf,
-                          struct vmw_buffer_object **out_buf)
+                          struct vmw_bo **out_buf)
 {
        struct ttm_object_file *tfile = vmw_fpriv(filp)->tfile;
        struct vmw_resource *res;
                                  bool interruptible)
 {
        unsigned long size = PFN_ALIGN(res->backup_size);
-       struct vmw_buffer_object *backup;
+       struct vmw_bo *backup;
        int ret;
 
        if (likely(res->backup)) {
                            bool dirty_set,
                            bool dirty,
                            bool switch_backup,
-                           struct vmw_buffer_object *new_backup,
+                           struct vmw_bo *new_backup,
                            unsigned long new_backup_offset)
 {
        struct vmw_private *dev_priv = res->dev_priv;
  * validation code, since resource validation and eviction
  * both require the backup buffer to be reserved.
  */
-void vmw_resource_unbind_list(struct vmw_buffer_object *vbo)
+void vmw_resource_unbind_list(struct vmw_bo *vbo)
 {
        struct ttm_validate_buffer val_buf = {
                .bo = &vbo->base,
  * Read back cached states from the device if they exist.  This function
  * assumes binding_mutex is held.
  */
-int vmw_query_readback_all(struct vmw_buffer_object *dx_query_mob)
+int vmw_query_readback_all(struct vmw_bo *dx_query_mob)
 {
        struct vmw_resource *dx_query_ctx;
        struct vmw_private *dev_priv;
                           struct ttm_resource *old_mem,
                           struct ttm_resource *new_mem)
 {
-       struct vmw_buffer_object *dx_query_mob;
+       struct vmw_bo *dx_query_mob;
        struct ttm_device *bdev = bo->bdev;
        struct vmw_private *dev_priv;
 
            old_mem->mem_type == VMW_PL_MOB) {
                struct vmw_fence_obj *fence;
 
-               dx_query_mob = container_of(bo, struct vmw_buffer_object, base);
+               dx_query_mob = container_of(bo, struct vmw_bo, base);
                if (!dx_query_mob || !dx_query_mob->dx_query_ctx) {
                        mutex_unlock(&dev_priv->binding_mutex);
                        return;
                goto out_no_reserve;
 
        if (res->pin_count == 0) {
-               struct vmw_buffer_object *vbo = NULL;
+               struct vmw_bo *vbo = NULL;
 
                if (res->backup) {
                        vbo = res->backup;
 
        WARN_ON(res->pin_count == 0);
        if (--res->pin_count == 0 && res->backup) {
-               struct vmw_buffer_object *vbo = res->backup;
+               struct vmw_bo *vbo = res->backup;
 
                (void) ttm_bo_reserve(&vbo->base, false, false, NULL);
                vmw_bo_pin_reserved(vbo, false);
  * @num_prefault: Returns how many pages including the first have been
  * cleaned and are ok to prefault
  */
-int vmw_resources_clean(struct vmw_buffer_object *vbo, pgoff_t start,
+int vmw_resources_clean(struct vmw_bo *vbo, pgoff_t start,
                        pgoff_t end, pgoff_t *num_prefault)
 {
        struct rb_node *cur = vbo->res_tree.rb_node;
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2011-2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2011-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  **************************************************************************/
 
+#include "vmwgfx_bo.h"
+#include "vmwgfx_kms.h"
+
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_fourcc.h>
 
-#include "vmwgfx_kms.h"
-
 #define vmw_crtc_to_sou(x) \
        container_of(x, struct vmw_screen_object_unit, base.crtc)
 #define vmw_encoder_to_sou(x) \
        struct vmw_display_unit base;
 
        unsigned long buffer_size; /**< Size of allocated buffer */
-       struct vmw_buffer_object *buffer; /**< Backing store buffer */
+       struct vmw_bo *buffer; /**< Backing store buffer */
 
        bool defined;
 };
 static int do_bo_define_gmrfb(struct vmw_private *dev_priv,
                                  struct vmw_framebuffer *framebuffer)
 {
-       struct vmw_buffer_object *buf =
+       struct vmw_bo *buf =
                container_of(framebuffer, struct vmw_framebuffer_bo,
                             base)->buffer;
        int depth = framebuffer->base.format->depth;
                                struct vmw_fence_obj **out_fence,
                                struct drm_crtc *crtc)
 {
-       struct vmw_buffer_object *buf =
+       struct vmw_bo *buf =
                container_of(framebuffer, struct vmw_framebuffer_bo,
                             base)->buffer;
        struct vmw_kms_dirty dirty;
                         uint32_t num_clips,
                         struct drm_crtc *crtc)
 {
-       struct vmw_buffer_object *buf =
+       struct vmw_bo *buf =
                container_of(vfb, struct vmw_framebuffer_bo, base)->buffer;
        struct vmw_kms_dirty dirty;
        DECLARE_VAL_CONTEXT(val_ctx, NULL, 0);
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
 
 #include <drm/ttm/ttm_placement.h>
 
+#include "vmwgfx_binding.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include "vmwgfx_resource_priv.h"
-#include "vmwgfx_binding.h"
 
 struct vmw_shader {
        struct vmw_resource res;
                              SVGA3dShaderType type,
                              uint8_t num_input_sig,
                              uint8_t num_output_sig,
-                             struct vmw_buffer_object *byte_code,
+                             struct vmw_bo *byte_code,
                              void (*res_free) (struct vmw_resource *res))
 {
        struct vmw_shader *shader = vmw_res_to_shader(res);
 }
 
 static int vmw_user_shader_alloc(struct vmw_private *dev_priv,
-                                struct vmw_buffer_object *buffer,
+                                struct vmw_bo *buffer,
                                 size_t shader_size,
                                 size_t offset,
                                 SVGA3dShaderType shader_type,
 
 
 static struct vmw_resource *vmw_shader_alloc(struct vmw_private *dev_priv,
-                                            struct vmw_buffer_object *buffer,
+                                            struct vmw_bo *buffer,
                                             size_t shader_size,
                                             size_t offset,
                                             SVGA3dShaderType shader_type)
 {
        struct vmw_private *dev_priv = vmw_priv(dev);
        struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
-       struct vmw_buffer_object *buffer = NULL;
+       struct vmw_bo *buffer = NULL;
        SVGA3dShaderType shader_type;
        int ret;
 
                          struct list_head *list)
 {
        struct ttm_operation_ctx ctx = { false, true };
-       struct vmw_buffer_object *buf;
+       struct vmw_bo *buf;
        struct ttm_bo_kmap_obj map;
        bool is_iomem;
        int ret;
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /******************************************************************************
  *
- * COPYRIGHT (C) 2014-2022 VMware, Inc., Palo Alto, CA., USA
+ * COPYRIGHT (C) 2014-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  ******************************************************************************/
 
+#include "vmwgfx_bo.h"
+#include "vmwgfx_kms.h"
+#include "vmw_surface_cache.h"
+
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_fourcc.h>
 
-#include "vmwgfx_kms.h"
-#include "vmw_surface_cache.h"
-
 #define vmw_crtc_to_stdu(x) \
        container_of(x, struct vmw_screen_target_display_unit, base.crtc)
 #define vmw_encoder_to_stdu(x) \
        s32 fb_left, fb_top;
        u32 pitch;
        union {
-               struct vmw_buffer_object *buf;
+               struct vmw_bo *buf;
                u32 sid;
        };
 };
                     bool interruptible,
                     struct drm_crtc *crtc)
 {
-       struct vmw_buffer_object *buf =
+       struct vmw_bo *buf =
                container_of(vfb, struct vmw_framebuffer_bo, base)->buffer;
        struct vmw_stdu_dirty ddirty;
        int ret;
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright © 2018-2019 VMware, Inc., Palo Alto, CA., USA
+ * Copyright © 2018-2023 VMware, Inc., Palo Alto, CA., USA
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  *
  **************************************************************************/
 
-#include <drm/ttm/ttm_placement.h>
-
+#include "vmwgfx_binding.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include "vmwgfx_resource_priv.h"
-#include "vmwgfx_binding.h"
+
+#include <drm/ttm/ttm_placement.h>
 
 /**
  * struct vmw_dx_streamoutput - Streamoutput resource metadata.
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  **************************************************************************/
 
-#include <drm/ttm/ttm_placement.h>
-
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include "vmwgfx_resource_priv.h"
 #include "vmwgfx_so.h"
 #include "vmw_surface_cache.h"
 #include "device_include/svga3d_surfacedefs.h"
 
+#include <drm/ttm/ttm_placement.h>
+
 #define SVGA3D_FLAGS_64(upper32, lower32) (((uint64_t)upper32 << 32) | lower32)
 #define SVGA3D_FLAGS_UPPER_32(svga3d_flags) (svga3d_flags >> 32)
 #define SVGA3D_FLAGS_LOWER_32(svga3d_flags) \
        }
 
        if (req->base.drm_surface_flags & drm_vmw_surface_flag_coherent) {
-               struct vmw_buffer_object *backup = res->backup;
+               struct vmw_bo *backup = res->backup;
 
                ttm_bo_reserve(&backup->base, false, false, NULL);
                if (!res->func->dirty_alloc)
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright 2009-2015 VMware, Inc., Palo Alto, CA., USA
+ * Copyright 2009-2023 VMware, Inc., Palo Alto, CA., USA
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
  *
  **************************************************************************/
 
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
 #include <drm/ttm/ttm_placement.h>
 
 
 // SPDX-License-Identifier: GPL-2.0 OR MIT
 /**************************************************************************
  *
- * Copyright © 2018 - 2022 VMware, Inc., Palo Alto, CA., USA
+ * Copyright © 2018 - 2023 VMware, Inc., Palo Alto, CA., USA
  * All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  **************************************************************************/
-#include <linux/slab.h>
-#include "vmwgfx_validation.h"
+#include "vmwgfx_bo.h"
 #include "vmwgfx_drv.h"
+#include "vmwgfx_validation.h"
+
+#include <linux/slab.h>
 
 
 #define VMWGFX_VALIDATION_MEM_GRAN (16*PAGE_SIZE)
        struct list_head head;
        struct vmwgfx_hash_item hash;
        struct vmw_resource *res;
-       struct vmw_buffer_object *new_backup;
+       struct vmw_bo *new_backup;
        unsigned long new_backup_offset;
        u32 no_buffer_needed : 1;
        u32 switching_backup : 1;
  */
 static struct vmw_validation_bo_node *
 vmw_validation_find_bo_dup(struct vmw_validation_context *ctx,
-                          struct vmw_buffer_object *vbo)
+                          struct vmw_bo *vbo)
 {
        struct  vmw_validation_bo_node *bo_node = NULL;
 
  * Return: Zero on success, negative error code otherwise.
  */
 int vmw_validation_add_bo(struct vmw_validation_context *ctx,
-                         struct vmw_buffer_object *vbo,
+                         struct vmw_bo *vbo,
                          bool as_mob,
                          bool cpu_blit)
 {
  */
 void vmw_validation_res_switch_backup(struct vmw_validation_context *ctx,
                                      void *val_private,
-                                     struct vmw_buffer_object *vbo,
+                                     struct vmw_bo *vbo,
                                      unsigned long backup_offset)
 {
        struct vmw_validation_res_node *val;
 
                val->reserved = 1;
                if (res->backup) {
-                       struct vmw_buffer_object *vbo = res->backup;
+                       struct vmw_bo *vbo = res->backup;
 
                        ret = vmw_validation_add_bo
                                (ctx, vbo, vmw_resource_needs_backup(res),
                                      bool interruptible,
                                      bool validate_as_mob)
 {
-       struct vmw_buffer_object *vbo =
-               container_of(bo, struct vmw_buffer_object, base);
+       struct vmw_bo *vbo =
+               container_of(bo, struct vmw_bo, base);
        struct ttm_operation_ctx ctx = {
                .interruptible = interruptible,
                .no_wait_gpu = false
        int ret;
 
        list_for_each_entry(entry, &ctx->bo_list, base.head) {
-               struct vmw_buffer_object *vbo =
+               struct vmw_bo *vbo =
                        container_of(entry->base.bo, typeof(*vbo), base);
 
                if (entry->cpu_blit) {
 
        list_for_each_entry(val, &ctx->resource_list, head) {
                struct vmw_resource *res = val->res;
-               struct vmw_buffer_object *backup = res->backup;
+               struct vmw_bo *backup = res->backup;
 
                ret = vmw_resource_validate(res, intr, val->dirty_set &&
                                            val->dirty);
 
                /* Check if the resource switched backup buffer */
                if (backup && res->backup && (backup != res->backup)) {
-                       struct vmw_buffer_object *vbo = res->backup;
+                       struct vmw_bo *vbo = res->backup;
 
                        ret = vmw_validation_add_bo
                                (ctx, vbo, vmw_resource_needs_backup(res),
        list_for_each_entry(entry, &ctx->bo_list, base.head) {
                if (entry->coherent_count) {
                        unsigned int coherent_count = entry->coherent_count;
-                       struct vmw_buffer_object *vbo =
+                       struct vmw_bo *vbo =
                                container_of(entry->base.bo, typeof(*vbo),
                                             base);
 
 
        size_t total_mem;
 };
 
-struct vmw_buffer_object;
+struct vmw_bo;
 struct vmw_resource;
 struct vmw_fence_obj;
 
 }
 
 int vmw_validation_add_bo(struct vmw_validation_context *ctx,
-                         struct vmw_buffer_object *vbo,
+                         struct vmw_bo *vbo,
                          bool as_mob, bool cpu_blit);
 int vmw_validation_bo_validate_single(struct ttm_buffer_object *bo,
                                      bool interruptible,
                                  bool backoff);
 void vmw_validation_res_switch_backup(struct vmw_validation_context *ctx,
                                      void *val_private,
-                                     struct vmw_buffer_object *vbo,
+                                     struct vmw_bo *vbo,
                                      unsigned long backup_offset);
 int vmw_validation_res_validate(struct vmw_validation_context *ctx, bool intr);