[PATCH v2 3/8] drm/vmwgfx: Rename vmw_buffer_object to vmw_bo
Maaz Mombasawala (VMware
maazm at fastmail.com
Wed Feb 1 00:31:59 UTC 2023
On 1/30/23 19:35, Zack Rusin wrote:
> From: Zack Rusin <zackr at vmware.com>
>
> The rest of the drivers which are using ttm have mostly standardized on
> driver_prefix_bo as the name for subclasses of the TTM buffer object.
> Make vmwgfx match the rest of the drivers and follow the same naming
> semantics.
>
> This is especially clear given that the name of the file in which the
> object was defined is vmw_bo.c.
>
> Signed-off-by: Zack Rusin <zackr at vmware.com>
> Reviewed-by: Martin Krastev <krastevm at vmware.com>
> ---
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 94 ++++-----
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.h | 189 +++++++++++++++++++
> drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c | 10 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c | 9 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_context.c | 11 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c | 9 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 7 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 184 ++----------------
> drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 53 +++---
> drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_gem.c | 27 +--
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 17 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 12 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 7 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c | 18 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 27 +--
> drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 29 +--
> drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 15 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | 15 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 13 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_streamoutput.c | 9 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 9 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 3 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 30 +--
> drivers/gpu/drm/vmwgfx/vmwgfx_validation.h | 6 +-
> 25 files changed, 419 insertions(+), 386 deletions(-)
> create mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_bo.h
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> index 8aaeeecd2016..b6dc0baef350 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -26,55 +26,41 @@
> *
> **************************************************************************/
>
> -#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;
> }
>
> /**
> @@ -88,7 +74,7 @@ static bool bo_is_vmw(struct ttm_buffer_object *bo)
> * -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)
> {
> @@ -130,7 +116,7 @@ int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
> * -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 };
> @@ -178,7 +164,7 @@ int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
> * -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,
> @@ -199,7 +185,7 @@ int vmw_bo_pin_in_vram(struct vmw_private *dev_priv,
> * -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 };
> @@ -263,7 +249,7 @@ int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
> * -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;
> @@ -308,7 +294,7 @@ void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *bo,
> * @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;
> @@ -356,7 +342,7 @@ void vmw_bo_pin_reserved(struct vmw_buffer_object *vbo, bool pin)
> * 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;
> @@ -381,9 +367,9 @@ void *vmw_bo_map_and_cache(struct vmw_buffer_object *vbo)
> * @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;
> @@ -447,7 +433,7 @@ int vmw_bo_create_kernel(struct vmw_private *dev_priv, unsigned long size,
> 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;
>
> @@ -473,7 +459,7 @@ int vmw_bo_create(struct vmw_private *vmw,
> * 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.
> @@ -483,7 +469,7 @@ int vmw_bo_create(struct vmw_private *vmw,
> * 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)
> {
> @@ -504,7 +490,7 @@ int vmw_bo_init(struct vmw_private *dev_priv,
> 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;
> }
> @@ -517,7 +503,7 @@ int vmw_bo_init(struct vmw_private *dev_priv,
> }
>
> /**
> - * 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.
> *
> @@ -530,7 +516,7 @@ int vmw_bo_init(struct vmw_private *dev_priv,
> *
> * 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);
> @@ -577,7 +563,7 @@ static int vmw_user_bo_synccpu_release(struct drm_file *filp,
> 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) {
> @@ -608,7 +594,7 @@ int vmw_user_bo_synccpu_ioctl(struct drm_device *dev, void *data,
> {
> 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
> @@ -681,14 +667,14 @@ int vmw_bo_unref_ioctl(struct drm_device *dev, void *data,
> * @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;
>
> @@ -699,7 +685,7 @@ int vmw_user_bo_lookup(struct drm_file *filp,
> return -ESRCH;
> }
>
> - *out = gem_to_vmw_bo(gobj);
> + *out = to_vmw_bo(gobj);
> ttm_bo_get(&(*out)->base);
> drm_gem_object_put(gobj);
>
> @@ -759,7 +745,7 @@ int vmw_dumb_create(struct drm_file *file_priv,
> 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;
>
> @@ -793,12 +779,12 @@ int vmw_dumb_create(struct drm_file *file_priv,
> */
> 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));
> }
>
>
> @@ -815,13 +801,13 @@ void vmw_bo_swap_notify(struct ttm_buffer_object *bo)
> 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.
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.h b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.h
> new file mode 100644
> index 000000000000..03ef4059c0d2
> --- /dev/null
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.h
> @@ -0,0 +1,189 @@
> +/* 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_api.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
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c
> index 162dfeb1cc5a..b1e7810032d3 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -24,13 +24,13 @@
> * 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)
> {
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
> index 3c06df2a5474..6bcd3acdbeab 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,12 +25,13 @@
> *
> **************************************************************************/
>
> -#include <linux/dmapool.h>
> -#include <linux/pci.h>
> +#include "vmwgfx_bo.h"
> +#include "vmwgfx_drv.h"
>
> #include <drm/ttm/ttm_bo_api.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
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
> index e0f48cd9529b..cc02be6a9884 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -27,9 +27,10 @@
>
> #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;
> @@ -38,7 +39,7 @@ struct vmw_user_context {
> 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);
> @@ -853,7 +854,7 @@ vmw_context_binding_state(struct vmw_resource *ctx)
> * 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);
> @@ -885,7 +886,7 @@ int vmw_context_bind_dx_query(struct vmw_resource *ctx_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 =
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
> index 87455446a6f9..9193faae8dab 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -30,13 +30,14 @@
> * 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
> *
> @@ -399,7 +400,7 @@ static int vmw_cotable_resize(struct vmw_resource *res, size_t new_size)
> 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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index 7272aff7855d..60d08185a71f 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -28,9 +28,10 @@
>
> #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>
> @@ -387,7 +388,7 @@ static void vmw_print_sm_type(struct vmw_private *dev_priv)
> 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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> index 3e8ab2ce5b94..e9a16a1e043d 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> @@ -1,7 +1,7 @@
> /* 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
> @@ -115,32 +115,6 @@ struct vmwgfx_hash_item {
> 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.
> @@ -188,6 +162,7 @@ struct vmw_res_func;
> * @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;
> @@ -198,7 +173,7 @@ struct vmw_resource {
> 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;
> @@ -444,7 +419,7 @@ struct vmw_sw_context{
> 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;
> @@ -456,7 +431,7 @@ struct vmw_sw_context{
> 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;
> @@ -630,8 +605,8 @@ struct vmw_private {
> * 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;
> @@ -675,11 +650,6 @@ struct vmw_private {
> #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);
> @@ -823,7 +793,7 @@ extern int vmw_user_lookup_handle(struct vmw_private *dev_priv,
> 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,
> @@ -843,19 +813,19 @@ extern void vmw_resource_unreserve(struct vmw_resource *res,
> 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);
>
> /**
> @@ -869,104 +839,6 @@ static inline bool vmw_resource_mob_attached(const struct vmw_resource *res)
> 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
> */
> @@ -974,7 +846,7 @@ extern int vmw_gem_object_create_with_handle(struct vmw_private *dev_priv,
> 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);
> @@ -1285,8 +1157,8 @@ vmw_context_binding_state(struct vmw_resource *ctx);
> 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);
>
>
> @@ -1511,12 +1383,12 @@ int vmw_mksstat_remove_all(struct vmw_private *dev_priv);
> 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);
> @@ -1549,22 +1421,6 @@ static inline struct vmw_surface *vmw_surface_reference(struct vmw_surface *srf)
> 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);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> index a44d53e33cdb..687c6926bc00 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -24,17 +24,16 @@
> * USE OR OTHER DEALINGS IN THE SOFTWARE.
> *
> **************************************************************************/
> -#include <linux/sync_file.h>
> -#include <linux/hashtable.h>
> -
> -#include "vmwgfx_drv.h"
> -#include "vmwgfx_reg.h"
> -#include <drm/ttm/ttm_bo_api.h>
> -#include <drm/ttm/ttm_placement.h>
> -#include "vmwgfx_so.h"
> #include "vmwgfx_binding.h"
> +#include "vmwgfx_bo.h"
> +#include "vmwgfx_drv.h"
> #include "vmwgfx_mksstat.h"
> +#include "vmwgfx_so.h"
> +
> +#include <drm/ttm/ttm_bo_api.h>
>
> +#include <linux/sync_file.h>
> +#include <linux/hashtable.h>
>
> /*
> * Helper macro to get dx_ctx_node if available otherwise print an error
> @@ -65,7 +64,7 @@
> */
> struct vmw_relocation {
> struct list_head head;
> - struct vmw_buffer_object *vbo;
> + struct vmw_bo *vbo;
> union {
> SVGAMobId *mob_loc;
> SVGAGuestPtr *location;
> @@ -149,7 +148,7 @@ static int vmw_resource_context_res_add(struct vmw_private *dev_priv,
> 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
> *
> @@ -475,7 +474,7 @@ static int vmw_resource_context_res_add(struct vmw_private *dev_priv,
>
> 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)
> @@ -596,7 +595,7 @@ static int vmw_resources_reserve(struct vmw_sw_context *sw_context)
> 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);
> @@ -703,7 +702,7 @@ vmw_cmd_res_check(struct vmw_private *dev_priv,
> 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);
> @@ -1017,7 +1016,7 @@ static int vmw_cmd_present_check(struct vmw_private *dev_priv,
> * 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 =
> @@ -1145,9 +1144,9 @@ static void vmw_query_bo_switch_commit(struct vmw_private *dev_priv,
> 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;
> @@ -1199,9 +1198,9 @@ static int vmw_translate_mob_ptr(struct vmw_private *dev_priv,
> 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;
> @@ -1278,7 +1277,7 @@ static int vmw_cmd_dx_bind_query(struct vmw_private *dev_priv,
> 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);
> @@ -1361,7 +1360,7 @@ static int vmw_cmd_end_gb_query(struct vmw_private *dev_priv,
> 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;
>
> @@ -1391,7 +1390,7 @@ static int vmw_cmd_end_query(struct vmw_private *dev_priv,
> 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;
>
> @@ -1437,7 +1436,7 @@ static int vmw_cmd_wait_gb_query(struct vmw_private *dev_priv,
> 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;
>
> @@ -1465,7 +1464,7 @@ static int vmw_cmd_wait_query(struct vmw_private *dev_priv,
> 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;
>
> @@ -1502,7 +1501,7 @@ static int vmw_cmd_dma(struct vmw_private *dev_priv,
> 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;
> @@ -1668,7 +1667,7 @@ static int vmw_cmd_check_define_gmrfb(struct vmw_private *dev_priv,
> struct vmw_sw_context *sw_context,
> void *buf)
> {
> - struct vmw_buffer_object *vmw_bo;
> + struct vmw_bo *vmw_bo;
>
> struct {
> uint32_t header;
> @@ -1699,7 +1698,7 @@ static int vmw_cmd_res_switch_backup(struct vmw_private *dev_priv,
> 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;
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
> index 66cc35dc223e..2a0cda324703 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
> @@ -1,7 +1,7 @@
> // 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
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
> index ae39029fec4a..c7ebcd4f3afa 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
> @@ -1,6 +1,6 @@
> /* 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
> @@ -24,25 +24,12 @@
> *
> */
>
> +#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);
> @@ -65,7 +52,7 @@ static void vmw_gem_object_close(struct drm_gem_object *obj,
> 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);
> @@ -129,7 +116,7 @@ int vmw_gem_object_create_with_handle(struct vmw_private *dev_priv,
> struct drm_file *filp,
> uint32_t size,
> uint32_t *handle,
> - struct vmw_buffer_object **p_vbo)
> + struct vmw_bo **p_vbo)
> {
> int ret;
>
> @@ -159,7 +146,7 @@ int vmw_gem_object_create_ioctl(struct drm_device *dev, void *data,
> (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;
>
> @@ -178,7 +165,7 @@ int vmw_gem_object_create_ioctl(struct drm_device *dev, void *data,
>
> #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;
> @@ -259,7 +246,7 @@ static int vmw_debugfs_gem_info_show(struct seq_file *m, void *unused)
>
> 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);
> }
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> index 257f090071f1..ad41396c0a5d 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -24,8 +24,9 @@
> * 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>
> @@ -1493,7 +1494,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_bo_funcs = {
> 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;
>
> @@ -1538,7 +1539,7 @@ static int vmw_framebuffer_pin(struct vmw_framebuffer *vfb)
> 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;
> @@ -1566,7 +1567,7 @@ static int vmw_framebuffer_unpin(struct vmw_framebuffer *vfb)
> */
> 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};
> @@ -1630,7 +1631,7 @@ static int vmw_create_bo_proxy(struct drm_device *dev,
>
>
> 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)
> @@ -1718,7 +1719,7 @@ vmw_kms_srf_ok(struct vmw_private *dev_priv, uint32_t width, uint32_t height)
> */
> 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)
> @@ -1782,7 +1783,7 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
> 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 */
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> index 4d6e7b555db7..2d097ba20ad8 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> @@ -233,7 +233,7 @@ struct vmw_clip_rect {
> 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 */
> };
> @@ -241,7 +241,7 @@ struct vmw_framebuffer_surface {
>
> struct vmw_framebuffer_bo {
> struct vmw_framebuffer base;
> - struct vmw_buffer_object *buffer;
> + struct vmw_bo *buffer;
> };
>
>
> @@ -293,7 +293,7 @@ struct vmw_cursor_plane_state {
> 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;
> @@ -364,7 +364,7 @@ struct vmw_display_unit {
> 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;
> @@ -397,7 +397,7 @@ struct vmw_display_unit {
>
> struct vmw_validation_ctx {
> struct vmw_resource *res;
> - struct vmw_buffer_object *buf;
> + struct vmw_bo *buf;
> };
>
> #define vmw_crtc_to_du(x) \
> @@ -458,7 +458,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv,
> 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);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
> index 0a8cc28d6606..6b3f53b533dc 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,10 +25,11 @@
> *
> **************************************************************************/
>
> -#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
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
> index e9f5c89b4ca6..b415e86b26db 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -24,19 +24,19 @@
> * 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;
> @@ -92,7 +92,7 @@ static inline void fill_flush(struct vmw_escape_video_flush *cmd,
> * -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)
> {
> @@ -223,7 +223,7 @@ static int vmw_overlay_send_stop(struct vmw_private *dev_priv,
> * 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)
> @@ -295,7 +295,7 @@ static int vmw_overlay_stop(struct vmw_private *dev_priv,
> * -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)
> {
> @@ -433,7 +433,7 @@ int vmw_overlay_ioctl(struct drm_device *dev, void *data,
> 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;
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c b/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
> index f41f041559f4..c92ca6dabe3c 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -24,6 +24,7 @@
> * USE OR OTHER DEALINGS IN THE SOFTWARE.
> *
> **************************************************************************/
> +#include "vmwgfx_bo.h"
> #include "vmwgfx_drv.h"
>
> /*
> @@ -78,7 +79,7 @@ struct vmw_bo_dirty {
> * 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);
> @@ -116,7 +117,7 @@ static void vmw_bo_dirty_scan_pagetable(struct vmw_buffer_object *vbo)
> *
> * 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);
> @@ -160,7 +161,7 @@ static void vmw_bo_dirty_scan_mkwrite(struct vmw_buffer_object *vbo)
> *
> * 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;
>
> @@ -181,7 +182,7 @@ void vmw_bo_dirty_scan(struct vmw_buffer_object *vbo)
> * 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;
> @@ -206,7 +207,7 @@ static void vmw_bo_dirty_pre_unmap(struct vmw_buffer_object *vbo,
> *
> * 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);
> @@ -227,7 +228,7 @@ void vmw_bo_dirty_unmap(struct vmw_buffer_object *vbo,
> *
> * 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);
> @@ -284,7 +285,7 @@ int vmw_bo_dirty_add(struct vmw_buffer_object *vbo)
> *
> * 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;
>
> @@ -306,7 +307,7 @@ void vmw_bo_dirty_release(struct vmw_buffer_object *vbo)
> */
> 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;
> @@ -353,7 +354,7 @@ void vmw_bo_dirty_clear_res(struct vmw_resource *res)
> {
> 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;
> @@ -380,7 +381,7 @@ vm_fault_t vmw_bo_vm_mkwrite(struct vm_fault *vmf)
> 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);
>
> /*
> @@ -419,8 +420,8 @@ vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf)
> 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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
> index 5879e8b9950a..54e412f8c2d1 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -27,9 +27,10 @@
>
> #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
>
> @@ -39,7 +40,7 @@
> */
> 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);
> @@ -67,7 +68,7 @@ void vmw_resource_mob_attach(struct vmw_resource *res)
> */
> 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)) {
> @@ -290,7 +291,7 @@ int vmw_user_lookup_handle(struct vmw_private *dev_priv,
> 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;
> @@ -322,7 +323,7 @@ static int vmw_resource_buf_alloc(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)) {
> @@ -438,7 +439,7 @@ void vmw_resource_unreserve(struct vmw_resource *res,
> 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;
> @@ -739,7 +740,7 @@ int vmw_resource_validate(struct vmw_resource *res, bool intr,
> * 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,
> @@ -772,7 +773,7 @@ void vmw_resource_unbind_list(struct vmw_buffer_object *vbo)
> * 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;
> @@ -821,7 +822,7 @@ void vmw_query_move_notify(struct ttm_buffer_object *bo,
> 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;
>
> @@ -834,7 +835,7 @@ void vmw_query_move_notify(struct ttm_buffer_object *bo,
> 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;
> @@ -958,7 +959,7 @@ int vmw_resource_pin(struct vmw_resource *res, bool interruptible)
> 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;
> @@ -1016,7 +1017,7 @@ void vmw_resource_unpin(struct vmw_resource *res)
>
> 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);
> @@ -1061,7 +1062,7 @@ void vmw_resource_dirty_update(struct vmw_resource *res, pgoff_t start,
> * @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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> index e51a63c05943..a04897f04c13 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,13 +25,14 @@
> *
> **************************************************************************/
>
> +#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) \
> @@ -89,7 +90,7 @@ struct vmw_screen_object_unit {
> 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;
> };
> @@ -947,7 +948,7 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv)
> 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;
> @@ -1216,7 +1217,7 @@ int vmw_kms_sou_do_bo_dirty(struct vmw_private *dev_priv,
> 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;
> @@ -1323,7 +1324,7 @@ int vmw_kms_sou_readback(struct vmw_private *dev_priv,
> 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);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> index 93b1400aed4a..b186d0993d83 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -27,9 +27,10 @@
>
> #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;
> @@ -158,7 +159,7 @@ static int vmw_gb_shader_init(struct vmw_private *dev_priv,
> 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);
> @@ -680,7 +681,7 @@ int vmw_shader_destroy_ioctl(struct drm_device *dev, void *data,
> }
>
> 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,
> @@ -734,7 +735,7 @@ static int vmw_user_shader_alloc(struct vmw_private *dev_priv,
>
>
> 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)
> @@ -771,7 +772,7 @@ static int vmw_shader_define(struct drm_device *dev, struct drm_file *file_priv,
> {
> 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;
>
> @@ -883,7 +884,7 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
> 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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> index 0090abe89254..4745537fed25 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,14 +25,15 @@
> *
> ******************************************************************************/
>
> +#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) \
> @@ -70,7 +71,7 @@ struct vmw_stdu_dirty {
> s32 fb_left, fb_top;
> u32 pitch;
> union {
> - struct vmw_buffer_object *buf;
> + struct vmw_bo *buf;
> u32 sid;
> };
> };
> @@ -688,7 +689,7 @@ int vmw_kms_stdu_dma(struct vmw_private *dev_priv,
> 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;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_streamoutput.c b/drivers/gpu/drm/vmwgfx/vmwgfx_streamoutput.c
> index 2de97419d5c9..71ce89150ba7 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_streamoutput.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_streamoutput.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -26,11 +26,12 @@
> *
> **************************************************************************/
>
> -#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.
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
> index 3bc63ae768f3..296d903c5acb 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,8 +25,7 @@
> *
> **************************************************************************/
>
> -#include <drm/ttm/ttm_placement.h>
> -
> +#include "vmwgfx_bo.h"
> #include "vmwgfx_drv.h"
> #include "vmwgfx_resource_priv.h"
> #include "vmwgfx_so.h"
> @@ -34,6 +33,8 @@
> #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) \
> @@ -1529,7 +1530,7 @@ vmw_gb_surface_define_internal(struct drm_device *dev,
> }
>
> 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)
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> index 4e3938e62c08..41480af87255 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,6 +25,7 @@
> *
> **************************************************************************/
>
> +#include "vmwgfx_bo.h"
> #include "vmwgfx_drv.h"
> #include <drm/ttm/ttm_bo_driver.h>
> #include <drm/ttm/ttm_placement.h>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
> index f5c4a40fb16d..770b1b53bde7 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
> @@ -1,7 +1,7 @@
> // 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
> @@ -25,9 +25,11 @@
> * 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)
> @@ -77,7 +79,7 @@ struct vmw_validation_res_node {
> 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;
> @@ -173,7 +175,7 @@ static void vmw_validation_mem_free(struct vmw_validation_context *ctx)
> */
> 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;
>
> @@ -264,7 +266,7 @@ vmw_validation_find_res_dup(struct vmw_validation_context *ctx,
> * 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)
> {
> @@ -410,7 +412,7 @@ void vmw_validation_res_set_dirty(struct vmw_validation_context *ctx,
> */
> 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;
> @@ -451,7 +453,7 @@ int vmw_validation_res_reserve(struct vmw_validation_context *ctx,
>
> 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),
> @@ -526,8 +528,8 @@ int vmw_validation_bo_validate_single(struct ttm_buffer_object *bo,
> 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
> @@ -578,7 +580,7 @@ int vmw_validation_bo_validate(struct vmw_validation_context *ctx, bool intr)
> 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) {
> @@ -639,7 +641,7 @@ int vmw_validation_res_validate(struct vmw_validation_context *ctx, bool intr)
>
> 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);
> @@ -651,7 +653,7 @@ int vmw_validation_res_validate(struct vmw_validation_context *ctx, bool intr)
>
> /* 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),
> @@ -889,7 +891,7 @@ void vmw_validation_bo_backoff(struct vmw_validation_context *ctx)
> 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);
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
> index ab9ec226f433..4aa4f700c65e 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
> @@ -73,7 +73,7 @@ struct vmw_validation_context {
> size_t total_mem;
> };
>
> -struct vmw_buffer_object;
> +struct vmw_bo;
> struct vmw_resource;
> struct vmw_fence_obj;
>
> @@ -159,7 +159,7 @@ static inline unsigned int vmw_validation_align(unsigned int val)
> }
>
> 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,
> @@ -179,7 +179,7 @@ void vmw_validation_res_unreserve(struct vmw_validation_context *ctx,
> 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);
>
LGTM!
Reviewed-by: Maaz Mombasawala <mombasawalam at vmware.com>
--
Maaz Mombasawala (VMware) <maazm at fastmail.com>
More information about the dri-devel
mailing list