drm/ttm: add operation ctx to ttm_bo_validate v2
Give moving a BO into place an operation context to work with. v2: rebased Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de> Tested-by: Michel Dänzer <michel.daenzer@amd.com> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
750a25037c
commit
19be557010
@@ -56,6 +56,7 @@ static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
|
||||
static int virtio_gpu_object_list_validate(struct ww_acquire_ctx *ticket,
|
||||
struct list_head *head)
|
||||
{
|
||||
struct ttm_operation_ctx ctx = { false, false };
|
||||
struct ttm_validate_buffer *buf;
|
||||
struct ttm_buffer_object *bo;
|
||||
struct virtio_gpu_object *qobj;
|
||||
@@ -68,7 +69,7 @@ static int virtio_gpu_object_list_validate(struct ww_acquire_ctx *ticket,
|
||||
list_for_each_entry(buf, head, head) {
|
||||
bo = buf->bo;
|
||||
qobj = container_of(bo, struct virtio_gpu_object, tbo);
|
||||
ret = ttm_bo_validate(bo, &qobj->placement, false, false);
|
||||
ret = ttm_bo_validate(bo, &qobj->placement, &ctx);
|
||||
if (ret) {
|
||||
ttm_eu_backoff_reservation(ticket, head);
|
||||
return ret;
|
||||
@@ -352,6 +353,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
|
||||
struct virtio_gpu_device *vgdev = dev->dev_private;
|
||||
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
|
||||
struct drm_virtgpu_3d_transfer_from_host *args = data;
|
||||
struct ttm_operation_ctx ctx = { true, false };
|
||||
struct drm_gem_object *gobj = NULL;
|
||||
struct virtio_gpu_object *qobj = NULL;
|
||||
struct virtio_gpu_fence *fence;
|
||||
@@ -372,8 +374,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = ttm_bo_validate(&qobj->tbo, &qobj->placement,
|
||||
true, false);
|
||||
ret = ttm_bo_validate(&qobj->tbo, &qobj->placement, &ctx);
|
||||
if (unlikely(ret))
|
||||
goto out_unres;
|
||||
|
||||
@@ -399,6 +400,7 @@ static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev, void *data,
|
||||
struct virtio_gpu_device *vgdev = dev->dev_private;
|
||||
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
|
||||
struct drm_virtgpu_3d_transfer_to_host *args = data;
|
||||
struct ttm_operation_ctx ctx = { true, false };
|
||||
struct drm_gem_object *gobj = NULL;
|
||||
struct virtio_gpu_object *qobj = NULL;
|
||||
struct virtio_gpu_fence *fence;
|
||||
@@ -416,8 +418,7 @@ static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev, void *data,
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = ttm_bo_validate(&qobj->tbo, &qobj->placement,
|
||||
true, false);
|
||||
ret = ttm_bo_validate(&qobj->tbo, &qobj->placement, &ctx);
|
||||
if (unlikely(ret))
|
||||
goto out_unres;
|
||||
|
||||
|
Reference in New Issue
Block a user