Commit 46472b3e authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Move i915_request_alloc into selftests/



Having transitioned GEM over to using intel_context as its primary means
of tracking the GEM context and engine combined and using
i915_request_create(), we can move the older i915_request_alloc()
helper function into selftests/ where the remaining users are confined.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190426163336.15906-9-chris@chris-wilson.co.uk
parent 02684446
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ i915-$(CONFIG_DRM_I915_SELFTEST) += \
	selftests/i915_random.o \
	selftests/i915_selftest.o \
	selftests/igt_flush_test.o \
	selftests/igt_gem_utils.o \
	selftests/igt_live_test.o \
	selftests/igt_reset.o \
	selftests/igt_spinner.o
+5 −4
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include "i915_selftest.h"
#include "selftests/i915_random.h"
#include "selftests/igt_flush_test.h"
#include "selftests/igt_gem_utils.h"
#include "selftests/igt_reset.h"
#include "selftests/igt_wedge_me.h"

@@ -175,7 +176,7 @@ hang_create_request(struct hang *h, struct intel_engine_cs *engine)
	if (err)
		goto unpin_vma;

	rq = i915_request_alloc(engine, h->ctx);
	rq = igt_request_alloc(h->ctx, engine);
	if (IS_ERR(rq)) {
		err = PTR_ERR(rq);
		goto unpin_hws;
@@ -455,7 +456,7 @@ static int igt_reset_nop(void *arg)
			for (i = 0; i < 16; i++) {
				struct i915_request *rq;

				rq = i915_request_alloc(engine, ctx);
				rq = igt_request_alloc(ctx, engine);
				if (IS_ERR(rq)) {
					err = PTR_ERR(rq);
					break;
@@ -554,7 +555,7 @@ static int igt_reset_nop_engine(void *arg)
			for (i = 0; i < 16; i++) {
				struct i915_request *rq;

				rq = i915_request_alloc(engine, ctx);
				rq = igt_request_alloc(ctx, engine);
				if (IS_ERR(rq)) {
					err = PTR_ERR(rq);
					break;
@@ -800,7 +801,7 @@ static int active_engine(void *data)
		struct i915_request *new;

		mutex_lock(&engine->i915->drm.struct_mutex);
		new = i915_request_alloc(engine, ctx[idx]);
		new = igt_request_alloc(ctx[idx], engine);
		if (IS_ERR(new)) {
			mutex_unlock(&engine->i915->drm.struct_mutex);
			err = PTR_ERR(new);
+7 −6
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
#include "i915_selftest.h"
#include "selftests/i915_random.h"
#include "selftests/igt_flush_test.h"
#include "selftests/igt_gem_utils.h"
#include "selftests/igt_live_test.h"
#include "selftests/igt_spinner.h"
#include "selftests/mock_context.h"
@@ -148,7 +149,7 @@ static int live_busywait_preempt(void *arg)
		 * fails, we hang instead.
		 */

		lo = i915_request_alloc(engine, ctx_lo);
		lo = igt_request_alloc(ctx_lo, engine);
		if (IS_ERR(lo)) {
			err = PTR_ERR(lo);
			goto err_vma;
@@ -192,7 +193,7 @@ static int live_busywait_preempt(void *arg)
			goto err_vma;
		}

		hi = i915_request_alloc(engine, ctx_hi);
		hi = igt_request_alloc(ctx_hi, engine);
		if (IS_ERR(hi)) {
			err = PTR_ERR(hi);
			goto err_vma;
@@ -857,13 +858,13 @@ static int live_chain_preempt(void *arg)
			i915_request_add(rq);

			for (i = 0; i < count; i++) {
				rq = i915_request_alloc(engine, lo.ctx);
				rq = igt_request_alloc(lo.ctx, engine);
				if (IS_ERR(rq))
					goto err_wedged;
				i915_request_add(rq);
			}

			rq = i915_request_alloc(engine, hi.ctx);
			rq = igt_request_alloc(hi.ctx, engine);
			if (IS_ERR(rq))
				goto err_wedged;
			i915_request_add(rq);
@@ -882,7 +883,7 @@ static int live_chain_preempt(void *arg)
			}
			igt_spinner_end(&lo.spin);

			rq = i915_request_alloc(engine, lo.ctx);
			rq = igt_request_alloc(lo.ctx, engine);
			if (IS_ERR(rq))
				goto err_wedged;
			i915_request_add(rq);
@@ -1087,7 +1088,7 @@ static int smoke_submit(struct preempt_smoke *smoke,

	ctx->sched.priority = prio;

	rq = i915_request_alloc(smoke->engine, ctx);
	rq = igt_request_alloc(ctx, smoke->engine);
	if (IS_ERR(rq)) {
		err = PTR_ERR(rq);
		goto unpin;
+5 −10
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include "intel_reset.h"

#include "selftests/igt_flush_test.h"
#include "selftests/igt_gem_utils.h"
#include "selftests/igt_reset.h"
#include "selftests/igt_spinner.h"
#include "selftests/igt_wedge_me.h"
@@ -102,7 +103,7 @@ read_nonprivs(struct i915_gem_context *ctx, struct intel_engine_cs *engine)
	if (err)
		goto err_obj;

	rq = i915_request_alloc(engine, ctx);
	rq = igt_request_alloc(ctx, engine);
	if (IS_ERR(rq)) {
		err = PTR_ERR(rq);
		goto err_pin;
@@ -511,7 +512,7 @@ static int check_dirty_whitelist(struct i915_gem_context *ctx,
		i915_gem_object_unpin_map(batch->obj);
		i915_gem_chipset_flush(ctx->i915);

		rq = i915_request_alloc(engine, ctx);
		rq = igt_request_alloc(ctx, engine);
		if (IS_ERR(rq)) {
			err = PTR_ERR(rq);
			goto out_batch;
@@ -701,14 +702,11 @@ static int read_whitelisted_registers(struct i915_gem_context *ctx,
				      struct intel_engine_cs *engine,
				      struct i915_vma *results)
{
	intel_wakeref_t wakeref;
	struct i915_request *rq;
	int i, err = 0;
	u32 srm, *cs;

	rq = ERR_PTR(-ENODEV);
	with_intel_runtime_pm(engine->i915, wakeref)
		rq = i915_request_alloc(engine, ctx);
	rq = igt_request_alloc(ctx, engine);
	if (IS_ERR(rq))
		return PTR_ERR(rq);

@@ -744,7 +742,6 @@ err_req:
static int scrub_whitelisted_registers(struct i915_gem_context *ctx,
				       struct intel_engine_cs *engine)
{
	intel_wakeref_t wakeref;
	struct i915_request *rq;
	struct i915_vma *batch;
	int i, err = 0;
@@ -770,9 +767,7 @@ static int scrub_whitelisted_registers(struct i915_gem_context *ctx,
	i915_gem_object_flush_map(batch->obj);
	i915_gem_chipset_flush(ctx->i915);

	rq = ERR_PTR(-ENODEV);
	with_intel_runtime_pm(engine->i915, wakeref)
		rq = i915_request_alloc(engine, ctx);
	rq = igt_request_alloc(ctx, engine);
	if (IS_ERR(rq)) {
		err = PTR_ERR(rq);
		goto err_unpin;
+0 −38
Original line number Diff line number Diff line
@@ -770,44 +770,6 @@ err_unlock:
	return rq;
}

/**
 * i915_request_alloc - allocate a request structure
 *
 * @engine: engine that we wish to issue the request on.
 * @ctx: context that the request will be associated with.
 *
 * Returns a pointer to the allocated request if successful,
 * or an error code if not.
 */
struct i915_request *
i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx)
{
	struct drm_i915_private *i915 = engine->i915;
	struct intel_context *ce;
	struct i915_request *rq;

	/*
	 * Preempt contexts are reserved for exclusive use to inject a
	 * preemption context switch. They are never to be used for any trivial
	 * request!
	 */
	GEM_BUG_ON(ctx == i915->preempt_context);

	/*
	 * Pinning the contexts may generate requests in order to acquire
	 * GGTT space, so do this first before we reserve a seqno for
	 * ourselves.
	 */
	ce = i915_gem_context_get_engine(ctx, engine->id);
	if (IS_ERR(ce))
		return ERR_CAST(ce);

	rq = intel_context_create_request(ce);
	intel_context_put(ce);

	return rq;
}

static int
emit_semaphore_wait(struct i915_request *to,
		    struct i915_request *from,
Loading