Re: [PATCH 37/38] drm/i915/selftests: Check preemption support on each engine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 01/03/2019 14:04, Chris Wilson wrote:
Check that we have setup on preemption for the engine before testing,
instead warn if it is not enabled on supported HW.

Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
  drivers/gpu/drm/i915/selftests/intel_lrc.c | 18 ++++++++++++++++++
  1 file changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
index b6329280a59f..a7de7a8fc24a 100644
--- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
@@ -90,6 +90,9 @@ static int live_preempt(void *arg)
  	if (!HAS_LOGICAL_RING_PREEMPTION(i915))
  		return 0;
+ if (!(i915->caps.scheduler & I915_SCHEDULER_CAP_PREEMPTION))
+		pr_err("Logical preemption supported, but not exposed\n");
+
  	mutex_lock(&i915->drm.struct_mutex);
  	wakeref = intel_runtime_pm_get(i915);
@@ -114,6 +117,9 @@ static int live_preempt(void *arg)
  	for_each_engine(engine, i915, id) {
  		struct i915_request *rq;
+ if (!intel_engine_has_preemption(engine))
+			continue;
+
  		rq = igt_spinner_create_request(&spin_lo, ctx_lo, engine,
  						MI_ARB_CHECK);
  		if (IS_ERR(rq)) {
@@ -205,6 +211,9 @@ static int live_late_preempt(void *arg)
  	for_each_engine(engine, i915, id) {
  		struct i915_request *rq;
+ if (!intel_engine_has_preemption(engine))
+			continue;
+
  		rq = igt_spinner_create_request(&spin_lo, ctx_lo, engine,
  						MI_ARB_CHECK);
  		if (IS_ERR(rq)) {
@@ -337,6 +346,9 @@ static int live_suppress_self_preempt(void *arg)
  		struct i915_request *rq_a, *rq_b;
  		int depth;
+ if (!intel_engine_has_preemption(engine))
+			continue;
+
  		engine->execlists.preempt_hang.count = 0;
rq_a = igt_spinner_create_request(&a.spin,
@@ -483,6 +495,9 @@ static int live_suppress_wait_preempt(void *arg)
  	for_each_engine(engine, i915, id) {
  		int depth;
+ if (!intel_engine_has_preemption(engine))
+			continue;
+
  		if (!engine->emit_init_breadcrumb)
  			continue;
@@ -604,6 +619,9 @@ static int live_chain_preempt(void *arg)
  		};
  		int count, i;
+ if (!intel_engine_has_preemption(engine))
+			continue;
+
  		for_each_prime_number_from(count, 1, 32) { /* must fit ring! */
  			struct i915_request *rq;

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux