diff options
Diffstat (limited to 'drivers/gpu/drm/i915/selftests/i915_request.c')
| -rw-r--r-- | drivers/gpu/drm/i915/selftests/i915_request.c | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c index 57dd6f5122ee..64bbb8288249 100644 --- a/drivers/gpu/drm/i915/selftests/i915_request.c +++ b/drivers/gpu/drm/i915/selftests/i915_request.c @@ -331,7 +331,7 @@ static int __igt_breadcrumbs_smoketest(void *arg)  		if (!wait) {  			i915_sw_fence_commit(submit);  			heap_fence_put(submit); -			err = ENOMEM; +			err = -ENOMEM;  			break;  		} @@ -527,7 +527,7 @@ int i915_request_mock_selftests(void)  	with_intel_runtime_pm(&i915->runtime_pm, wakeref)  		err = i915_subtests(tests, i915); -	drm_dev_put(&i915->drm); +	mock_destroy_device(i915);  	return err;  } @@ -862,6 +862,8 @@ static int live_all_engines(void *arg)  		goto out_free;  	} +	i915_vma_lock(batch); +  	idx = 0;  	for_each_uabi_engine(engine, i915) {  		request[idx] = intel_engine_create_kernel_request(engine); @@ -872,11 +874,9 @@ static int live_all_engines(void *arg)  			goto out_request;  		} -		i915_vma_lock(batch);  		err = i915_request_await_object(request[idx], batch->obj, 0);  		if (err == 0)  			err = i915_vma_move_to_active(batch, request[idx], 0); -		i915_vma_unlock(batch);  		GEM_BUG_ON(err);  		err = engine->emit_bb_start(request[idx], @@ -891,6 +891,8 @@ static int live_all_engines(void *arg)  		idx++;  	} +	i915_vma_unlock(batch); +  	idx = 0;  	for_each_uabi_engine(engine, i915) {  		if (i915_request_completed(request[idx])) { @@ -981,12 +983,13 @@ static int live_sequential_engines(void *arg)  			goto out_free;  		} +		i915_vma_lock(batch);  		request[idx] = intel_engine_create_kernel_request(engine);  		if (IS_ERR(request[idx])) {  			err = PTR_ERR(request[idx]);  			pr_err("%s: Request allocation failed for %s with err=%d\n",  			       __func__, engine->name, err); -			goto out_request; +			goto out_unlock;  		}  		if (prev) { @@ -996,16 +999,14 @@ static int live_sequential_engines(void *arg)  				i915_request_add(request[idx]);  				pr_err("%s: Request await failed for %s with err=%d\n",  				       __func__, engine->name, err); -				goto out_request; +				goto out_unlock;  			}  		} -		i915_vma_lock(batch);  		err = i915_request_await_object(request[idx],  						batch->obj, false);  		if (err == 0)  			err = i915_vma_move_to_active(batch, request[idx], 0); -		i915_vma_unlock(batch);  		GEM_BUG_ON(err);  		err = engine->emit_bb_start(request[idx], @@ -1020,6 +1021,11 @@ static int live_sequential_engines(void *arg)  		prev = request[idx];  		idx++; + +out_unlock: +		i915_vma_unlock(batch); +		if (err) +			goto out_request;  	}  	idx = 0; | 
