[PATCH 46/58] gfp-req

Chris Wilson chris at chris-wilson.co.uk
Mon Jul 2 09:26:52 UTC 2018


---
 drivers/gpu/drm/i915/gvt/scheduler.c              |  2 +-
 drivers/gpu/drm/i915/i915_gem.c                   |  2 +-
 drivers/gpu/drm/i915/i915_gem_context.c           |  4 +++-
 drivers/gpu/drm/i915/i915_gem_execbuffer.c        |  4 ++--
 drivers/gpu/drm/i915/i915_perf.c                  |  2 +-
 drivers/gpu/drm/i915/i915_request.c               |  8 +++++---
 drivers/gpu/drm/i915/i915_request.h               |  3 ++-
 drivers/gpu/drm/i915/i915_reset.c                 |  4 +++-
 drivers/gpu/drm/i915/intel_overlay.c              |  6 +++---
 drivers/gpu/drm/i915/selftests/huge_pages.c       |  2 +-
 .../gpu/drm/i915/selftests/i915_gem_coherency.c   |  4 +++-
 drivers/gpu/drm/i915/selftests/i915_gem_context.c |  4 ++--
 drivers/gpu/drm/i915/selftests/i915_gem_evict.c   |  2 +-
 drivers/gpu/drm/i915/selftests/i915_gem_object.c  |  4 +++-
 drivers/gpu/drm/i915/selftests/i915_request.c     | 15 +++++++++++----
 drivers/gpu/drm/i915/selftests/intel_hangcheck.c  |  4 ++--
 drivers/gpu/drm/i915/selftests/intel_lrc.c        |  6 ++++--
 .../gpu/drm/i915/selftests/intel_workarounds.c    |  4 ++--
 drivers/gpu/drm/i915/selftests/mock_request.c     |  2 +-
 19 files changed, 51 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index b0e566956b8d..2da2e5baafaa 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -387,7 +387,7 @@ int intel_gvt_scan_and_shadow_workload(struct intel_vgpu_workload *workload)
 			goto err_shadow;
 	}
 
-	rq = i915_request_alloc(engine, shadow_ctx);
+	rq = i915_request_alloc(engine, shadow_ctx, GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		gvt_vgpu_err("fail to allocate gem request\n");
 		ret = PTR_ERR(rq);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 103de4759b3c..bcdb145ece55 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4934,7 +4934,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
 	for_each_engine(engine, i915, id) {
 		struct i915_request *rq;
 
-		rq = i915_request_alloc(engine, ctx);
+		rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 		if (IS_ERR(rq)) {
 			err = PTR_ERR(rq);
 			goto out_ctx;
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 0f43083a80e2..c8a30bfa7c1e 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -761,7 +761,9 @@ int i915_gem_switch_to_kernel_context(struct drm_i915_private *i915)
 
 		GEM_TRACE("emit barrier on %s\n", engine->name);
 
-		rq = i915_request_alloc(engine, i915->kernel_context);
+		rq = i915_request_alloc(engine,
+				       	i915->kernel_context,
+				       	GFP_KERNEL);
 		if (IS_ERR(rq))
 			return PTR_ERR(rq);
 
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 62721ddd5bee..2021de82ba50 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -1150,7 +1150,7 @@ static int __reloc_gpu_alloc(struct i915_execbuffer *eb,
 	if (err)
 		goto err_unmap;
 
-	rq = i915_request_alloc(eb->engine, eb->ctx);
+	rq = i915_request_alloc(eb->engine, eb->ctx, GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		err = PTR_ERR(rq);
 		goto err_unpin;
@@ -2377,7 +2377,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
 	GEM_BUG_ON(eb.reloc_cache.rq);
 
 	/* Allocate a request for this batch buffer nice and early. */
-	eb.request = i915_request_alloc(eb.engine, eb.ctx);
+	eb.request = i915_request_alloc(eb.engine, eb.ctx, GFP_KERNEL);
 	if (IS_ERR(eb.request)) {
 		err = PTR_ERR(eb.request);
 		goto err_batch_unpin;
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 447407fee3b8..c5ffb7ad020c 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1759,7 +1759,7 @@ static int gen8_switch_to_updated_kernel_context(struct drm_i915_private *dev_pr
 
 	i915_retire_requests(dev_priv);
 
-	rq = i915_request_alloc(engine, dev_priv->kernel_context);
+	rq = i915_request_alloc(engine, dev_priv->kernel_context, GFP_KERNEL);
 	if (IS_ERR(rq))
 		return PTR_ERR(rq);
 
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index f00d59df3034..efa4a2682d9e 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -608,7 +608,9 @@ submit_notify(struct i915_sw_fence *fence, enum i915_sw_fence_notify state)
  * or an error code if not.
  */
 struct i915_request *
-i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx)
+i915_request_alloc(struct intel_engine_cs *engine,
+		   struct i915_gem_context *ctx,
+		   gfp_t gfp)
 {
 	struct drm_i915_private *i915 = engine->i915;
 	struct i915_request *rq;
@@ -678,7 +680,7 @@ i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx)
 	 * Do not use kmem_cache_zalloc() here!
 	 */
 	rq = kmem_cache_alloc(i915->requests,
-			      GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+			      gfp | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
 	if (unlikely(!rq)) {
 		/* Ratelimit ourselves to prevent oom from malicious clients */
 		ret = i915_gem_wait_for_idle(i915,
@@ -698,7 +700,7 @@ i915_request_alloc(struct intel_engine_cs *engine, struct i915_gem_context *ctx)
 		kmem_cache_shrink(i915->requests);
 		rcu_barrier(); /* Recover the TYPESAFE_BY_RCU pages */
 
-		rq = kmem_cache_alloc(i915->requests, GFP_KERNEL);
+		rq = kmem_cache_alloc(i915->requests, gfp);
 		if (!rq) {
 			ret = -ENOMEM;
 			goto err_unreserve;
diff --git a/drivers/gpu/drm/i915/i915_request.h b/drivers/gpu/drm/i915/i915_request.h
index 74b8d416b9e9..b02e31d6e5bd 100644
--- a/drivers/gpu/drm/i915/i915_request.h
+++ b/drivers/gpu/drm/i915/i915_request.h
@@ -196,7 +196,8 @@ static inline bool dma_fence_is_i915(const struct dma_fence *fence)
 
 struct i915_request * __must_check
 i915_request_alloc(struct intel_engine_cs *engine,
-		   struct i915_gem_context *ctx);
+		   struct i915_gem_context *ctx,
+		   gfp_t gfp);
 void i915_request_retire_upto(struct i915_request *rq);
 
 static inline struct i915_request *
diff --git a/drivers/gpu/drm/i915/i915_reset.c b/drivers/gpu/drm/i915/i915_reset.c
index cdbc72c1e4e7..fde8b2013093 100644
--- a/drivers/gpu/drm/i915/i915_reset.c
+++ b/drivers/gpu/drm/i915/i915_reset.c
@@ -573,7 +573,9 @@ static void restart_work(struct work_struct *work)
 		if (!intel_engine_is_idle(engine))
 			continue;
 
-		rq = i915_request_alloc(engine, i915->kernel_context);
+		rq = i915_request_alloc(engine,
+					i915->kernel_context,
+					GFP_KERNEL);
 		if (!IS_ERR(rq))
 			i915_request_add(rq);
 	}
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
index 371eb3dbedc0..fecb0eb684ca 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -256,10 +256,10 @@ static int intel_overlay_do_wait_request(struct intel_overlay *overlay,
 
 static struct i915_request *alloc_request(struct intel_overlay *overlay)
 {
-	struct drm_i915_private *dev_priv = overlay->i915;
-	struct intel_engine_cs *engine = dev_priv->engine[RCS];
+	struct drm_i915_private *i915 = overlay->i915;
+	struct intel_engine_cs *engine = i915->engine[RCS];
 
-	return i915_request_alloc(engine, dev_priv->kernel_context);
+	return i915_request_alloc(engine, i915->kernel_context, GFP_KERNEL);
 }
 
 /* overlay needs to be disable in OCMD reg */
diff --git a/drivers/gpu/drm/i915/selftests/huge_pages.c b/drivers/gpu/drm/i915/selftests/huge_pages.c
index 862295b2c4a8..78ff95b52630 100644
--- a/drivers/gpu/drm/i915/selftests/huge_pages.c
+++ b/drivers/gpu/drm/i915/selftests/huge_pages.c
@@ -975,7 +975,7 @@ static int gpu_write(struct i915_vma *vma,
 	if (err)
 		return err;
 
-	rq = i915_request_alloc(engine, ctx);
+	rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 	if (IS_ERR(rq))
 		return PTR_ERR(rq);
 
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
index 328585459c67..0aadf811d34c 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c
@@ -191,7 +191,9 @@ static int gpu_set(struct drm_i915_gem_object *obj,
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
 
-	rq = i915_request_alloc(i915->engine[RCS], i915->kernel_context);
+	rq = i915_request_alloc(i915->engine[RCS],
+			       	i915->kernel_context,
+				GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		i915_vma_unpin(vma);
 		return PTR_ERR(rq);
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
index f88af80902fa..a4991a88134a 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
@@ -151,7 +151,7 @@ static int gpu_fill(struct drm_i915_gem_object *obj,
 		goto err_vma;
 	}
 
-	rq = i915_request_alloc(engine, ctx);
+	rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		err = PTR_ERR(rq);
 		goto err_batch;
@@ -683,7 +683,7 @@ static int __igt_switch_to_kernel_context(struct drm_i915_private *i915,
 	for_each_engine_masked(engine, i915, engines, tmp) {
 		struct i915_request *rq;
 
-		rq = i915_request_alloc(engine, ctx);
+		rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 		if (IS_ERR(rq))
 			return PTR_ERR(rq);
 
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
index 51b5818e7fac..1e150d5cafc1 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
@@ -419,7 +419,7 @@ static int igt_evict_contexts(void *arg)
 
 			/* We will need some GGTT space for the rq's context */
 			igt_evict_ctl.fail_if_busy = true;
-			rq = i915_request_alloc(engine, ctx);
+			rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 			igt_evict_ctl.fail_if_busy = false;
 
 			if (IS_ERR(rq)) {
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_object.c b/drivers/gpu/drm/i915/selftests/i915_gem_object.c
index 7d0ddef1519b..cea26309cfc4 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_object.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_object.c
@@ -448,7 +448,9 @@ static int make_obj_busy(struct drm_i915_gem_object *obj)
 	if (err)
 		return err;
 
-	rq = i915_request_alloc(i915->engine[RCS], i915->kernel_context);
+	rq = i915_request_alloc(i915->engine[RCS],
+			       	i915->kernel_context,
+				GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		i915_vma_unpin(vma);
 		return PTR_ERR(rq);
diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c b/drivers/gpu/drm/i915/selftests/i915_request.c
index c27f77a24ce0..3ecfdb1bc9ea 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -356,7 +356,8 @@ static int live_nop_request(void *arg)
 
 			for (n = 0; n < prime; n++) {
 				request = i915_request_alloc(engine,
-							     i915->kernel_context);
+							     i915->kernel_context,
+							     GFP_KERNEL);
 				if (IS_ERR(request)) {
 					err = PTR_ERR(request);
 					goto out_unlock;
@@ -454,7 +455,9 @@ empty_request(struct intel_engine_cs *engine,
 	struct i915_request *request;
 	int err;
 
-	request = i915_request_alloc(engine, engine->i915->kernel_context);
+	request = i915_request_alloc(engine,
+				     engine->i915->kernel_context,
+				     GFP_KERNEL);
 	if (IS_ERR(request))
 		return request;
 
@@ -658,7 +661,9 @@ static int live_all_engines(void *arg)
 	}
 
 	for_each_engine(engine, i915, id) {
-		request[id] = i915_request_alloc(engine, i915->kernel_context);
+		request[id] = i915_request_alloc(engine,
+						 i915->kernel_context,
+						 GFP_KERNEL);
 		if (IS_ERR(request[id])) {
 			err = PTR_ERR(request[id]);
 			pr_err("%s: Request allocation failed with err=%d\n",
@@ -764,7 +769,9 @@ static int live_sequential_engines(void *arg)
 			goto out_unlock;
 		}
 
-		request[id] = i915_request_alloc(engine, i915->kernel_context);
+		request[id] = i915_request_alloc(engine,
+						 i915->kernel_context,
+						 GFP_KERNEL);
 		if (IS_ERR(request[id])) {
 			err = PTR_ERR(request[id]);
 			pr_err("%s: Request allocation failed for %s with err=%d\n",
diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
index e522a02343d5..408458583b4b 100644
--- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
+++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
@@ -246,7 +246,7 @@ hang_create_request(struct hang *h, struct intel_engine_cs *engine)
 		h->batch = vaddr;
 	}
 
-	rq = i915_request_alloc(engine, h->ctx);
+	rq = i915_request_alloc(engine, h->ctx, GFP_KERNEL);
 	if (IS_ERR(rq))
 		return rq;
 
@@ -625,7 +625,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 = i915_request_alloc(engine, ctx[idx], GFP_KERNEL);
 		if (IS_ERR(new)) {
 			mutex_unlock(&engine->i915->drm.struct_mutex);
 			err = PTR_ERR(new);
diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
index 97f37ee0ae8f..a602bb697177 100644
--- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
@@ -158,7 +158,7 @@ spinner_create_request(struct spinner *spin,
 	struct i915_request *rq;
 	int err;
 
-	rq = i915_request_alloc(engine, ctx);
+	rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 	if (IS_ERR(rq))
 		return rq;
 
@@ -542,7 +542,9 @@ static int nop_virtual_engine(struct drm_i915_private *i915,
 		for (nc = 0; nc < nctx; nc++) {
 			for (n = 0; n < prime; n++) {
 				request[nc] =
-					i915_request_alloc(ve[nc], ctx[nc]);
+					i915_request_alloc(ve[nc],
+							   ctx[nc],
+							   GFP_KERNEL);
 				if (IS_ERR(request[nc])) {
 					err = PTR_ERR(request[nc]);
 					goto out;
diff --git a/drivers/gpu/drm/i915/selftests/intel_workarounds.c b/drivers/gpu/drm/i915/selftests/intel_workarounds.c
index 40fb481bbbf4..0fa0cdb6356b 100644
--- a/drivers/gpu/drm/i915/selftests/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/selftests/intel_workarounds.c
@@ -44,7 +44,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 = i915_request_alloc(engine, ctx, GFP_KERNEL);
 	if (IS_ERR(rq)) {
 		err = PTR_ERR(rq);
 		goto err_pin;
@@ -174,7 +174,7 @@ static int switch_to_scratch_context(struct intel_engine_cs *engine)
 	if (IS_ERR(ctx))
 		return PTR_ERR(ctx);
 
-	rq = i915_request_alloc(engine, ctx);
+	rq = i915_request_alloc(engine, ctx, GFP_KERNEL);
 	kernel_context_close(ctx);
 	if (IS_ERR(rq))
 		return PTR_ERR(rq);
diff --git a/drivers/gpu/drm/i915/selftests/mock_request.c b/drivers/gpu/drm/i915/selftests/mock_request.c
index 0dc29e242597..93927f3da210 100644
--- a/drivers/gpu/drm/i915/selftests/mock_request.c
+++ b/drivers/gpu/drm/i915/selftests/mock_request.c
@@ -34,7 +34,7 @@ mock_request(struct intel_engine_cs *engine,
 	struct mock_request *mock;
 
 	/* NB the i915->requests slab cache is enlarged to fit mock_request */
-	request = i915_request_alloc(engine, context);
+	request = i915_request_alloc(engine, context, GFP_KERNEL);
 	if (IS_ERR(request))
 		return NULL;
 
-- 
2.18.0



More information about the Intel-gfx-trybot mailing list