diff options
Diffstat (limited to 'drivers/gpu/drm/i915/selftests/i915_gem.c')
| -rw-r--r-- | drivers/gpu/drm/i915/selftests/i915_gem.c | 46 | 
1 files changed, 21 insertions, 25 deletions
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c b/drivers/gpu/drm/i915/selftests/i915_gem.c index 37593831b539..d83f6bf6d9d4 100644 --- a/drivers/gpu/drm/i915/selftests/i915_gem.c +++ b/drivers/gpu/drm/i915/selftests/i915_gem.c @@ -15,23 +15,26 @@  #include "igt_flush_test.h"  #include "mock_drm.h" -static int switch_to_context(struct drm_i915_private *i915, -			     struct i915_gem_context *ctx) +static int switch_to_context(struct i915_gem_context *ctx)  { -	struct intel_engine_cs *engine; -	enum intel_engine_id id; +	struct i915_gem_engines_iter it; +	struct intel_context *ce; +	int err = 0; -	for_each_engine(engine, i915, id) { +	for_each_gem_engine(ce, i915_gem_context_lock_engines(ctx), it) {  		struct i915_request *rq; -		rq = igt_request_alloc(ctx, engine); -		if (IS_ERR(rq)) -			return PTR_ERR(rq); +		rq = intel_context_create_request(ce); +		if (IS_ERR(rq)) { +			err = PTR_ERR(rq); +			break; +		}  		i915_request_add(rq);  	} +	i915_gem_context_unlock_engines(ctx); -	return 0; +	return err;  }  static void trash_stolen(struct drm_i915_private *i915) @@ -42,6 +45,10 @@ static void trash_stolen(struct drm_i915_private *i915)  	unsigned long page;  	u32 prng = 0x12345678; +	/* XXX: fsck. needs some more thought... */ +	if (!i915_ggtt_has_aperture(ggtt)) +		return; +  	for (page = 0; page < size; page += PAGE_SIZE) {  		const dma_addr_t dma = i915->dsm.start + page;  		u32 __iomem *s; @@ -117,12 +124,9 @@ static void pm_resume(struct drm_i915_private *i915)  	 */  	with_intel_runtime_pm(&i915->runtime_pm, wakeref) {  		intel_gt_sanitize(&i915->gt, false); -		i915_gem_sanitize(i915); -		mutex_lock(&i915->drm.struct_mutex);  		i915_gem_restore_gtt_mappings(i915); -		i915_gem_restore_fences(i915); -		mutex_unlock(&i915->drm.struct_mutex); +		i915_gem_restore_fences(&i915->ggtt);  		i915_gem_resume(i915);  	} @@ -140,11 +144,9 @@ static int igt_gem_suspend(void *arg)  		return PTR_ERR(file);  	err = -ENOMEM; -	mutex_lock(&i915->drm.struct_mutex);  	ctx = live_context(i915, file);  	if (!IS_ERR(ctx)) -		err = switch_to_context(i915, ctx); -	mutex_unlock(&i915->drm.struct_mutex); +		err = switch_to_context(ctx);  	if (err)  		goto out; @@ -159,9 +161,7 @@ static int igt_gem_suspend(void *arg)  	pm_resume(i915); -	mutex_lock(&i915->drm.struct_mutex); -	err = switch_to_context(i915, ctx); -	mutex_unlock(&i915->drm.struct_mutex); +	err = switch_to_context(ctx);  out:  	mock_file_free(i915, file);  	return err; @@ -179,11 +179,9 @@ static int igt_gem_hibernate(void *arg)  		return PTR_ERR(file);  	err = -ENOMEM; -	mutex_lock(&i915->drm.struct_mutex);  	ctx = live_context(i915, file);  	if (!IS_ERR(ctx)) -		err = switch_to_context(i915, ctx); -	mutex_unlock(&i915->drm.struct_mutex); +		err = switch_to_context(ctx);  	if (err)  		goto out; @@ -198,9 +196,7 @@ static int igt_gem_hibernate(void *arg)  	pm_resume(i915); -	mutex_lock(&i915->drm.struct_mutex); -	err = switch_to_context(i915, ctx); -	mutex_unlock(&i915->drm.struct_mutex); +	err = switch_to_context(ctx);  out:  	mock_file_free(i915, file);  	return err;  |