Commit 2a76fc89 authored by Andrzej Hajda's avatar Andrzej Hajda Committed by Matthew Auld
Browse files

drm/i915: call i915_request_await_object from _i915_vma_move_to_active



Since almost all calls to i915_vma_move_to_active are prepended with
i915_request_await_object, let's call the latter from
_i915_vma_move_to_active by default and add flag allowing bypassing it.
Adjust all callers accordingly.
The patch should not introduce functional changes.

Signed-off-by: default avatarAndrzej Hajda <andrzej.hajda@intel.com>
Acked-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221019215906.295296-2-andrzej.hajda@intel.com
parent 5664561c
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -53,13 +53,13 @@ enum {
#define DBG_FORCE_RELOC 0 /* choose one of the above! */
};

/* __EXEC_OBJECT_NO_RESERVE is BIT(31), defined in i915_vma.h */
#define __EXEC_OBJECT_HAS_PIN		BIT(30)
#define __EXEC_OBJECT_HAS_FENCE		BIT(29)
#define __EXEC_OBJECT_USERPTR_INIT	BIT(28)
#define __EXEC_OBJECT_NEEDS_MAP		BIT(27)
#define __EXEC_OBJECT_NEEDS_BIAS	BIT(26)
#define __EXEC_OBJECT_INTERNAL_FLAGS	(~0u << 26) /* all of the above + */
/* __EXEC_OBJECT_ flags > BIT(29) defined in i915_vma.h */
#define __EXEC_OBJECT_HAS_PIN		BIT(29)
#define __EXEC_OBJECT_HAS_FENCE		BIT(28)
#define __EXEC_OBJECT_USERPTR_INIT	BIT(27)
#define __EXEC_OBJECT_NEEDS_MAP		BIT(26)
#define __EXEC_OBJECT_NEEDS_BIAS	BIT(25)
#define __EXEC_OBJECT_INTERNAL_FLAGS	(~0u << 25) /* all of the above + */
#define __EXEC_OBJECT_RESERVED (__EXEC_OBJECT_HAS_PIN | __EXEC_OBJECT_HAS_FENCE)

#define __EXEC_HAS_RELOC	BIT(31)
@@ -2101,7 +2101,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
						       eb->composite_fence ?
						       eb->composite_fence :
						       &eb->requests[j]->fence,
						       flags | __EXEC_OBJECT_NO_RESERVE);
						       flags | __EXEC_OBJECT_NO_RESERVE |
						       __EXEC_OBJECT_NO_REQUEST_AWAIT);
		}
	}

+1 −3
Original line number Diff line number Diff line
@@ -464,8 +464,6 @@ static int move_to_active(struct i915_vma *vma,
	int err;

	i915_vma_lock(vma);
	err = i915_request_await_object(rq, vma->obj, false);
	if (err == 0)
	err = i915_vma_move_to_active(vma, rq, flags);
	i915_vma_unlock(vma);

+1 −3
Original line number Diff line number Diff line
@@ -239,8 +239,6 @@ static int gpu_set(struct context *ctx, unsigned long offset, u32 v)
	}
	intel_ring_advance(rq, cs);

	err = i915_request_await_object(rq, vma->obj, true);
	if (err == 0)
	err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE);

out_rq:
+4 −12
Original line number Diff line number Diff line
@@ -984,14 +984,10 @@ emit_rpcs_query(struct drm_i915_gem_object *obj,
		goto err_batch;
	}

	err = i915_request_await_object(rq, batch->obj, false);
	if (err == 0)
	err = i915_vma_move_to_active(batch, rq, 0);
	if (err)
		goto skip_request;

	err = i915_request_await_object(rq, vma->obj, true);
	if (err == 0)
	err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE);
	if (err)
		goto skip_request;
@@ -1553,8 +1549,6 @@ static int write_to_scratch(struct i915_gem_context *ctx,
	}

	i915_vma_lock(vma);
	err = i915_request_await_object(rq, vma->obj, false);
	if (err == 0)
	err = i915_vma_move_to_active(vma, rq, 0);
	i915_vma_unlock(vma);
	if (err)
@@ -1689,8 +1683,6 @@ static int read_from_scratch(struct i915_gem_context *ctx,
	}

	i915_vma_lock(vma);
	err = i915_request_await_object(rq, vma->obj, true);
	if (err == 0)
	err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE);
	i915_vma_unlock(vma);
	if (err)
+3 −7
Original line number Diff line number Diff line
@@ -565,8 +565,6 @@ static int make_obj_busy(struct drm_i915_gem_object *obj)
			goto err_unpin;
		}

		err = i915_request_await_object(rq, vma->obj, true);
		if (err == 0)
		err = i915_vma_move_to_active(vma, rq,
					      EXEC_OBJECT_WRITE);

@@ -1608,8 +1606,6 @@ static int __igt_mmap_gpu(struct drm_i915_private *i915,
			goto out_unpin;
		}

		err = i915_request_await_object(rq, vma->obj, false);
		if (err == 0)
		err = i915_vma_move_to_active(vma, rq, 0);

		err = engine->emit_bb_start(rq, vma->node.start, 0, 0);
Loading