All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] Fewer for_each_engine(.., i915, ..)
@ 2019-10-22  9:47 Tvrtko Ursulin
  2019-10-22  9:47 ` [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio Tvrtko Ursulin
                   ` (12 more replies)
  0 siblings, 13 replies; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Since we want to eliminate the engine list copy in i915 this series converts
some of the remaining call sites to take gt as is the future direction.

Where appropriate it also converts the containing functions to take gt as well.
Most notably this applies to engine setup and initialization.

Tvrtko Ursulin (12):
  drm/i915: Pass intel_gt to intel_engines_init_mmio
  drm/i915: Pass intel_gt to intel_setup_engine_capabilities
  drm/i915: Pass intel_gt to intel_engines_cleanup
  drm/i915: Pass intel_gt to intel_engines_setup
  drm/i915: Pass intel_gt to intel_engines_init
  drm/i915: Pass intel_gt to intel_engines_verify_workarounds
  drm/i915: Split drop caches into GT and i915 parts
  drm/i915/selftests: Convert eviction selftests to gt/ggtt
  drm/i915/selftests: Use GT engines in mock_gem_device
  drm/i915/selftests: Use GT engines in igt_live_test
  drm/i915/selftests: Use GT engines in i915_gem_mman selftest
  drm/i915/selftests: Use for_each_uabi_engine in contex selftests

 .../drm/i915/gem/selftests/i915_gem_context.c |  12 +--
 .../drm/i915/gem/selftests/i915_gem_mman.c    |   5 +-
 drivers/gpu/drm/i915/gt/intel_engine.h        |  10 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |  46 ++++----
 drivers/gpu/drm/i915/i915_debugfs.c           |  24 +++--
 drivers/gpu/drm/i915/i915_drv.c               |   4 +-
 drivers/gpu/drm/i915/i915_gem.c               |  14 +--
 .../gpu/drm/i915/selftests/i915_gem_evict.c   | 100 +++++++++---------
 .../gpu/drm/i915/selftests/igt_live_test.c    |   7 +-
 .../gpu/drm/i915/selftests/mock_gem_device.c  |   8 +-
 10 files changed, 122 insertions(+), 108 deletions(-)

-- 
2.20.1

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:00   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities Tvrtko Ursulin
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine.h    | 4 +++-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 9 +++++----
 drivers/gpu/drm/i915/i915_drv.c           | 2 +-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 93ea367fe624..638b19544acd 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -20,6 +20,8 @@
 
 struct drm_printer;
 
+struct intel_gt;
+
 /* Early gen2 devices have a cacheline of just 32 bytes, using 64 is overkill,
  * but keeps the logic simple. Indeed, the whole purpose of this macro is just
  * to give some inclination as to some of the magic values used in the various
@@ -322,7 +324,7 @@ __intel_ring_space(unsigned int head, unsigned int tail, unsigned int size)
 	return (head - tail - CACHELINE_BYTES) & (size - 1);
 }
 
-int intel_engines_init_mmio(struct drm_i915_private *i915);
+int intel_engines_init_mmio(struct intel_gt *gt);
 int intel_engines_setup(struct drm_i915_private *i915);
 int intel_engines_init(struct drm_i915_private *i915);
 void intel_engines_cleanup(struct drm_i915_private *i915);
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 051734c9b733..735037f11cc5 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -396,12 +396,13 @@ void intel_engines_cleanup(struct drm_i915_private *i915)
 
 /**
  * intel_engines_init_mmio() - allocate and prepare the Engine Command Streamers
- * @i915: the i915 device
+ * @gt: pointer to struct intel_gt
  *
  * Return: non-zero if the initialization failed.
  */
-int intel_engines_init_mmio(struct drm_i915_private *i915)
+int intel_engines_init_mmio(struct intel_gt *gt)
 {
+	struct drm_i915_private *i915 = gt->i915;
 	struct intel_device_info *device_info = mkwrite_device_info(i915);
 	const unsigned int engine_mask = INTEL_INFO(i915)->engine_mask;
 	unsigned int mask = 0;
@@ -419,7 +420,7 @@ int intel_engines_init_mmio(struct drm_i915_private *i915)
 		if (!HAS_ENGINE(i915, i))
 			continue;
 
-		err = intel_engine_setup(&i915->gt, i);
+		err = intel_engine_setup(gt, i);
 		if (err)
 			goto cleanup;
 
@@ -436,7 +437,7 @@ int intel_engines_init_mmio(struct drm_i915_private *i915)
 
 	RUNTIME_INFO(i915)->num_engines = hweight32(mask);
 
-	intel_gt_check_and_clear_faults(&i915->gt);
+	intel_gt_check_and_clear_faults(gt);
 
 	intel_setup_engine_capabilities(i915);
 
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 21b36a6143b9..334931224a21 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -598,7 +598,7 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
 
 	intel_uc_init_mmio(&dev_priv->gt.uc);
 
-	ret = intel_engines_init_mmio(dev_priv);
+	ret = intel_engines_init_mmio(&dev_priv->gt);
 	if (ret)
 		goto err_uncore;
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
  2019-10-22  9:47 ` [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:00   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup Tvrtko Ursulin
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 735037f11cc5..a46ba24ba2e1 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -370,12 +370,12 @@ static void __setup_engine_capabilities(struct intel_engine_cs *engine)
 	}
 }
 
-static void intel_setup_engine_capabilities(struct drm_i915_private *i915)
+static void intel_setup_engine_capabilities(struct intel_gt *gt)
 {
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 
-	for_each_engine(engine, i915, id)
+	for_each_engine(engine, gt, id)
 		__setup_engine_capabilities(engine);
 }
 
@@ -439,7 +439,7 @@ int intel_engines_init_mmio(struct intel_gt *gt)
 
 	intel_gt_check_and_clear_faults(gt);
 
-	intel_setup_engine_capabilities(i915);
+	intel_setup_engine_capabilities(gt);
 
 	return 0;
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
  2019-10-22  9:47 ` [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio Tvrtko Ursulin
  2019-10-22  9:47 ` [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:01   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup Tvrtko Ursulin
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine.h    |  2 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 15 ++++++++-------
 drivers/gpu/drm/i915/i915_drv.c           |  2 +-
 drivers/gpu/drm/i915/i915_gem.c           |  4 ++--
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 638b19544acd..8675d8ea8c5a 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -327,7 +327,7 @@ __intel_ring_space(unsigned int head, unsigned int tail, unsigned int size)
 int intel_engines_init_mmio(struct intel_gt *gt);
 int intel_engines_setup(struct drm_i915_private *i915);
 int intel_engines_init(struct drm_i915_private *i915);
-void intel_engines_cleanup(struct drm_i915_private *i915);
+void intel_engines_cleanup(struct intel_gt *gt);
 
 int intel_engine_init_common(struct intel_engine_cs *engine);
 void intel_engine_cleanup_common(struct intel_engine_cs *engine);
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index a46ba24ba2e1..ce7cab474e8c 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -381,16 +381,17 @@ static void intel_setup_engine_capabilities(struct intel_gt *gt)
 
 /**
  * intel_engines_cleanup() - free the resources allocated for Command Streamers
- * @i915: the i915 devic
+ * @gt: pointer to struct intel_gt
  */
-void intel_engines_cleanup(struct drm_i915_private *i915)
+void intel_engines_cleanup(struct intel_gt *gt)
 {
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		engine->destroy(engine);
-		i915->engine[id] = NULL;
+		gt->engine[id] = NULL;
+		gt->i915->engine[id] = NULL;
 	}
 }
 
@@ -444,7 +445,7 @@ int intel_engines_init_mmio(struct intel_gt *gt)
 	return 0;
 
 cleanup:
-	intel_engines_cleanup(i915);
+	intel_engines_cleanup(gt);
 	return err;
 }
 
@@ -475,7 +476,7 @@ int intel_engines_init(struct drm_i915_private *i915)
 	return 0;
 
 cleanup:
-	intel_engines_cleanup(i915);
+	intel_engines_cleanup(&i915->gt);
 	return err;
 }
 
@@ -659,7 +660,7 @@ int intel_engines_setup(struct drm_i915_private *i915)
 	return 0;
 
 cleanup:
-	intel_engines_cleanup(i915);
+	intel_engines_cleanup(&i915->gt);
 	return err;
 }
 
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 334931224a21..d9cedad0dfc9 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -621,7 +621,7 @@ static int i915_driver_mmio_probe(struct drm_i915_private *dev_priv)
  */
 static void i915_driver_mmio_release(struct drm_i915_private *dev_priv)
 {
-	intel_engines_cleanup(dev_priv);
+	intel_engines_cleanup(&dev_priv->gt);
 	intel_teardown_mchbar(dev_priv);
 	intel_uncore_fini_mmio(&dev_priv->uncore);
 	pci_dev_put(dev_priv->bridge_dev);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 39cb0e246a88..e52c022ef6a7 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1331,7 +1331,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 err_uc_init:
 	if (ret != -EIO) {
 		intel_uc_fini(&dev_priv->gt.uc);
-		intel_engines_cleanup(dev_priv);
+		intel_engines_cleanup(&dev_priv->gt);
 	}
 err_context:
 	if (ret != -EIO)
@@ -1400,7 +1400,7 @@ void i915_gem_driver_remove(struct drm_i915_private *dev_priv)
 
 void i915_gem_driver_release(struct drm_i915_private *dev_priv)
 {
-	intel_engines_cleanup(dev_priv);
+	intel_engines_cleanup(&dev_priv->gt);
 	i915_gem_driver_release__contexts(dev_priv);
 	intel_gt_driver_release(&dev_priv->gt);
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (2 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:01   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init Tvrtko Ursulin
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine.h    |  2 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 10 +++++-----
 drivers/gpu/drm/i915/i915_gem.c           |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 8675d8ea8c5a..a947bbb60a22 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -325,7 +325,7 @@ __intel_ring_space(unsigned int head, unsigned int tail, unsigned int size)
 }
 
 int intel_engines_init_mmio(struct intel_gt *gt);
-int intel_engines_setup(struct drm_i915_private *i915);
+int intel_engines_setup(struct intel_gt *gt);
 int intel_engines_init(struct drm_i915_private *i915);
 void intel_engines_cleanup(struct intel_gt *gt);
 
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index ce7cab474e8c..af64f9079b0f 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -623,26 +623,26 @@ static int intel_engine_setup_common(struct intel_engine_cs *engine)
 
 /**
  * intel_engines_setup- setup engine state not requiring hw access
- * @i915: Device to setup.
+ * @gt: pointer to struct intel_gt
  *
  * Initializes engine structure members shared between legacy and execlists
  * submission modes which do not require hardware access.
  *
  * Typically done early in the submission mode specific engine setup stage.
  */
-int intel_engines_setup(struct drm_i915_private *i915)
+int intel_engines_setup(struct intel_gt *gt)
 {
 	int (*setup)(struct intel_engine_cs *engine);
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 	int err;
 
-	if (HAS_EXECLISTS(i915))
+	if (HAS_EXECLISTS(gt->i915))
 		setup = intel_execlists_submission_setup;
 	else
 		setup = intel_ring_submission_setup;
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		err = intel_engine_setup_common(engine);
 		if (err)
 			goto cleanup;
@@ -660,7 +660,7 @@ int intel_engines_setup(struct drm_i915_private *i915)
 	return 0;
 
 cleanup:
-	intel_engines_cleanup(&i915->gt);
+	intel_engines_cleanup(gt);
 	return err;
 }
 
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index e52c022ef6a7..2dff716561e7 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1252,7 +1252,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 
 	intel_gt_init(&dev_priv->gt);
 
-	ret = intel_engines_setup(dev_priv);
+	ret = intel_engines_setup(&dev_priv->gt);
 	if (ret) {
 		GEM_BUG_ON(ret == -EIO);
 		goto err_unlock;
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (3 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:02   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds Tvrtko Ursulin
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine.h    |  2 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 10 +++++-----
 drivers/gpu/drm/i915/i915_gem.c           |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index a947bbb60a22..c2d9d67c63d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -326,7 +326,7 @@ __intel_ring_space(unsigned int head, unsigned int tail, unsigned int size)
 
 int intel_engines_init_mmio(struct intel_gt *gt);
 int intel_engines_setup(struct intel_gt *gt);
-int intel_engines_init(struct drm_i915_private *i915);
+int intel_engines_init(struct intel_gt *gt);
 void intel_engines_cleanup(struct intel_gt *gt);
 
 int intel_engine_init_common(struct intel_engine_cs *engine);
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index af64f9079b0f..0e20713603ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -451,23 +451,23 @@ int intel_engines_init_mmio(struct intel_gt *gt)
 
 /**
  * intel_engines_init() - init the Engine Command Streamers
- * @i915: i915 device private
+ * @gt: pointer to struct intel_gt
  *
  * Return: non-zero if the initialization failed.
  */
-int intel_engines_init(struct drm_i915_private *i915)
+int intel_engines_init(struct intel_gt *gt)
 {
 	int (*init)(struct intel_engine_cs *engine);
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 	int err;
 
-	if (HAS_EXECLISTS(i915))
+	if (HAS_EXECLISTS(gt->i915))
 		init = intel_execlists_submission_init;
 	else
 		init = intel_ring_submission_init;
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		err = init(engine);
 		if (err)
 			goto cleanup;
@@ -476,7 +476,7 @@ int intel_engines_init(struct drm_i915_private *i915)
 	return 0;
 
 cleanup:
-	intel_engines_cleanup(&i915->gt);
+	intel_engines_cleanup(gt);
 	return err;
 }
 
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 2dff716561e7..c028eb7e56b3 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1264,7 +1264,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 		goto err_scratch;
 	}
 
-	ret = intel_engines_init(dev_priv);
+	ret = intel_engines_init(&dev_priv->gt);
 	if (ret) {
 		GEM_BUG_ON(ret == -EIO);
 		goto err_context;
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (4 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:02   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts Tvrtko Ursulin
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Engines belong to the GT so make it indicative in the API.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index c028eb7e56b3..ca64a0c9b762 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1201,7 +1201,7 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
 	return err;
 }
 
-static int intel_engines_verify_workarounds(struct drm_i915_private *i915)
+static int intel_engines_verify_workarounds(struct intel_gt *gt)
 {
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
@@ -1210,7 +1210,7 @@ static int intel_engines_verify_workarounds(struct drm_i915_private *i915)
 	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))
 		return 0;
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		if (intel_engine_verify_workarounds(engine, "load"))
 			err = -EIO;
 	}
@@ -1294,7 +1294,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 	 */
 	intel_init_clock_gating(dev_priv);
 
-	ret = intel_engines_verify_workarounds(dev_priv);
+	ret = intel_engines_verify_workarounds(&dev_priv->gt);
 	if (ret)
 		goto err_gt;
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (5 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:04   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt Tvrtko Ursulin
                   ` (5 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Just compartmentalizes code a bit more.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index ada57eee914a..16211430eb78 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -3648,17 +3648,11 @@ i915_drop_caches_get(void *data, u64 *val)
 
 	return 0;
 }
-
 static int
-i915_drop_caches_set(void *data, u64 val)
+gt_drop_caches(struct intel_gt *gt, u64 val)
 {
-	struct drm_i915_private *i915 = data;
-	struct intel_gt *gt = &i915->gt;
 	int ret;
 
-	DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
-		  val, val & DROP_ALL);
-
 	if (val & DROP_RESET_ACTIVE &&
 	    wait_for(intel_engines_are_idle(gt), I915_IDLE_ENGINES_TIMEOUT))
 		intel_gt_set_wedged(gt);
@@ -3681,6 +3675,22 @@ i915_drop_caches_set(void *data, u64 val)
 	if (val & DROP_RESET_ACTIVE && intel_gt_terminally_wedged(gt))
 		intel_gt_handle_error(gt, ALL_ENGINES, 0, NULL);
 
+	return 0;
+}
+
+static int
+i915_drop_caches_set(void *data, u64 val)
+{
+	struct drm_i915_private *i915 = data;
+	int ret;
+
+	DRM_DEBUG("Dropping caches: 0x%08llx [0x%08llx]\n",
+		  val, val & DROP_ALL);
+
+	ret = gt_drop_caches(&i915->gt, val);
+	if (ret)
+		return ret;
+
 	fs_reclaim_acquire(GFP_KERNEL);
 	if (val & DROP_BOUND)
 		i915_gem_shrink(i915, LONG_MAX, NULL, I915_SHRINK_BOUND);
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (6 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:06   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device Tvrtko Ursulin
                   ` (4 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Convert the test code to work directly on what it needs rather than
going through the top-level i915.

This enables another natural usage for for_each_engine(.., gt, ..).

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 .../gpu/drm/i915/selftests/i915_gem_evict.c   | 100 +++++++++---------
 1 file changed, 51 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
index 0af9a58d011d..42e948144f1b 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
@@ -43,8 +43,7 @@ static void quirk_add(struct drm_i915_gem_object *obj,
 	list_add(&obj->st_link, objects);
 }
 
-static int populate_ggtt(struct drm_i915_private *i915,
-			 struct list_head *objects)
+static int populate_ggtt(struct i915_ggtt *ggtt, struct list_head *objects)
 {
 	unsigned long unbound, bound, count;
 	struct drm_i915_gem_object *obj;
@@ -53,7 +52,8 @@ static int populate_ggtt(struct drm_i915_private *i915,
 	do {
 		struct i915_vma *vma;
 
-		obj = i915_gem_object_create_internal(i915, I915_GTT_PAGE_SIZE);
+		obj = i915_gem_object_create_internal(ggtt->vm.i915,
+						      I915_GTT_PAGE_SIZE);
 		if (IS_ERR(obj))
 			return PTR_ERR(obj);
 
@@ -70,7 +70,7 @@ static int populate_ggtt(struct drm_i915_private *i915,
 		count++;
 	} while (1);
 	pr_debug("Filled GGTT with %lu pages [%llu total]\n",
-		 count, i915->ggtt.vm.total / PAGE_SIZE);
+		 count, ggtt->vm.total / PAGE_SIZE);
 
 	bound = 0;
 	unbound = 0;
@@ -96,7 +96,7 @@ static int populate_ggtt(struct drm_i915_private *i915,
 		return -EINVAL;
 	}
 
-	if (list_empty(&i915->ggtt.vm.bound_list)) {
+	if (list_empty(&ggtt->vm.bound_list)) {
 		pr_err("No objects on the GGTT inactive list!\n");
 		return -EINVAL;
 	}
@@ -104,17 +104,16 @@ static int populate_ggtt(struct drm_i915_private *i915,
 	return 0;
 }
 
-static void unpin_ggtt(struct drm_i915_private *i915)
+static void unpin_ggtt(struct i915_ggtt *ggtt)
 {
 	struct i915_vma *vma;
 
-	list_for_each_entry(vma, &i915->ggtt.vm.bound_list, vm_link)
+	list_for_each_entry(vma, &ggtt->vm.bound_list, vm_link)
 		if (vma->obj->mm.quirked)
 			i915_vma_unpin(vma);
 }
 
-static void cleanup_objects(struct drm_i915_private *i915,
-			    struct list_head *list)
+static void cleanup_objects(struct i915_ggtt *ggtt, struct list_head *list)
 {
 	struct drm_i915_gem_object *obj, *on;
 
@@ -124,19 +123,19 @@ static void cleanup_objects(struct drm_i915_private *i915,
 		i915_gem_object_put(obj);
 	}
 
-	i915_gem_drain_freed_objects(i915);
+	i915_gem_drain_freed_objects(ggtt->vm.i915);
 }
 
 static int igt_evict_something(void *arg)
 {
-	struct drm_i915_private *i915 = arg;
-	struct i915_ggtt *ggtt = &i915->ggtt;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
 	LIST_HEAD(objects);
 	int err;
 
 	/* Fill the GGTT with pinned objects and try to evict one. */
 
-	err = populate_ggtt(i915, &objects);
+	err = populate_ggtt(ggtt, &objects);
 	if (err)
 		goto cleanup;
 
@@ -153,7 +152,7 @@ static int igt_evict_something(void *arg)
 		goto cleanup;
 	}
 
-	unpin_ggtt(i915);
+	unpin_ggtt(ggtt);
 
 	/* Everything is unpinned, we should be able to evict something */
 	mutex_lock(&ggtt->vm.mutex);
@@ -169,13 +168,14 @@ static int igt_evict_something(void *arg)
 	}
 
 cleanup:
-	cleanup_objects(i915, &objects);
+	cleanup_objects(ggtt, &objects);
 	return err;
 }
 
 static int igt_overcommit(void *arg)
 {
-	struct drm_i915_private *i915 = arg;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
 	struct drm_i915_gem_object *obj;
 	struct i915_vma *vma;
 	LIST_HEAD(objects);
@@ -185,11 +185,11 @@ static int igt_overcommit(void *arg)
 	 * We expect it to fail.
 	 */
 
-	err = populate_ggtt(i915, &objects);
+	err = populate_ggtt(ggtt, &objects);
 	if (err)
 		goto cleanup;
 
-	obj = i915_gem_object_create_internal(i915, I915_GTT_PAGE_SIZE);
+	obj = i915_gem_object_create_internal(gt->i915, I915_GTT_PAGE_SIZE);
 	if (IS_ERR(obj)) {
 		err = PTR_ERR(obj);
 		goto cleanup;
@@ -205,14 +205,14 @@ static int igt_overcommit(void *arg)
 	}
 
 cleanup:
-	cleanup_objects(i915, &objects);
+	cleanup_objects(ggtt, &objects);
 	return err;
 }
 
 static int igt_evict_for_vma(void *arg)
 {
-	struct drm_i915_private *i915 = arg;
-	struct i915_ggtt *ggtt = &i915->ggtt;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
 	struct drm_mm_node target = {
 		.start = 0,
 		.size = 4096,
@@ -222,7 +222,7 @@ static int igt_evict_for_vma(void *arg)
 
 	/* Fill the GGTT with pinned objects and try to evict a range. */
 
-	err = populate_ggtt(i915, &objects);
+	err = populate_ggtt(ggtt, &objects);
 	if (err)
 		goto cleanup;
 
@@ -236,7 +236,7 @@ static int igt_evict_for_vma(void *arg)
 		goto cleanup;
 	}
 
-	unpin_ggtt(i915);
+	unpin_ggtt(ggtt);
 
 	/* Everything is unpinned, we should be able to evict the node */
 	mutex_lock(&ggtt->vm.mutex);
@@ -249,7 +249,7 @@ static int igt_evict_for_vma(void *arg)
 	}
 
 cleanup:
-	cleanup_objects(i915, &objects);
+	cleanup_objects(ggtt, &objects);
 	return err;
 }
 
@@ -262,8 +262,8 @@ static void mock_color_adjust(const struct drm_mm_node *node,
 
 static int igt_evict_for_cache_color(void *arg)
 {
-	struct drm_i915_private *i915 = arg;
-	struct i915_ggtt *ggtt = &i915->ggtt;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
 	const unsigned long flags = PIN_OFFSET_FIXED;
 	struct drm_mm_node target = {
 		.start = I915_GTT_PAGE_SIZE * 2,
@@ -284,7 +284,7 @@ static int igt_evict_for_cache_color(void *arg)
 	ggtt->vm.mm.color_adjust = mock_color_adjust;
 	GEM_BUG_ON(!i915_vm_has_cache_coloring(&ggtt->vm));
 
-	obj = i915_gem_object_create_internal(i915, I915_GTT_PAGE_SIZE);
+	obj = i915_gem_object_create_internal(gt->i915, I915_GTT_PAGE_SIZE);
 	if (IS_ERR(obj)) {
 		err = PTR_ERR(obj);
 		goto cleanup;
@@ -300,7 +300,7 @@ static int igt_evict_for_cache_color(void *arg)
 		goto cleanup;
 	}
 
-	obj = i915_gem_object_create_internal(i915, I915_GTT_PAGE_SIZE);
+	obj = i915_gem_object_create_internal(gt->i915, I915_GTT_PAGE_SIZE);
 	if (IS_ERR(obj)) {
 		err = PTR_ERR(obj);
 		goto cleanup;
@@ -345,22 +345,22 @@ static int igt_evict_for_cache_color(void *arg)
 	err = 0;
 
 cleanup:
-	unpin_ggtt(i915);
-	cleanup_objects(i915, &objects);
+	unpin_ggtt(ggtt);
+	cleanup_objects(ggtt, &objects);
 	ggtt->vm.mm.color_adjust = NULL;
 	return err;
 }
 
 static int igt_evict_vm(void *arg)
 {
-	struct drm_i915_private *i915 = arg;
-	struct i915_ggtt *ggtt = &i915->ggtt;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
 	LIST_HEAD(objects);
 	int err;
 
 	/* Fill the GGTT with pinned objects and try to evict everything. */
 
-	err = populate_ggtt(i915, &objects);
+	err = populate_ggtt(ggtt, &objects);
 	if (err)
 		goto cleanup;
 
@@ -374,7 +374,7 @@ static int igt_evict_vm(void *arg)
 		goto cleanup;
 	}
 
-	unpin_ggtt(i915);
+	unpin_ggtt(ggtt);
 
 	mutex_lock(&ggtt->vm.mutex);
 	err = i915_gem_evict_vm(&ggtt->vm);
@@ -386,14 +386,16 @@ static int igt_evict_vm(void *arg)
 	}
 
 cleanup:
-	cleanup_objects(i915, &objects);
+	cleanup_objects(ggtt, &objects);
 	return err;
 }
 
 static int igt_evict_contexts(void *arg)
 {
 	const u64 PRETEND_GGTT_SIZE = 16ull << 20;
-	struct drm_i915_private *i915 = arg;
+	struct intel_gt *gt = arg;
+	struct i915_ggtt *ggtt = gt->ggtt;
+	struct drm_i915_private *i915 = gt->i915;
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 	struct reserved {
@@ -423,10 +425,10 @@ static int igt_evict_contexts(void *arg)
 
 	/* Reserve a block so that we know we have enough to fit a few rq */
 	memset(&hole, 0, sizeof(hole));
-	mutex_lock(&i915->ggtt.vm.mutex);
-	err = i915_gem_gtt_insert(&i915->ggtt.vm, &hole,
+	mutex_lock(&ggtt->vm.mutex);
+	err = i915_gem_gtt_insert(&ggtt->vm, &hole,
 				  PRETEND_GGTT_SIZE, 0, I915_COLOR_UNEVICTABLE,
-				  0, i915->ggtt.vm.total,
+				  0, ggtt->vm.total,
 				  PIN_NOEVICT);
 	if (err)
 		goto out_locked;
@@ -436,17 +438,17 @@ static int igt_evict_contexts(void *arg)
 	do {
 		struct reserved *r;
 
-		mutex_unlock(&i915->ggtt.vm.mutex);
+		mutex_unlock(&ggtt->vm.mutex);
 		r = kcalloc(1, sizeof(*r), GFP_KERNEL);
-		mutex_lock(&i915->ggtt.vm.mutex);
+		mutex_lock(&ggtt->vm.mutex);
 		if (!r) {
 			err = -ENOMEM;
 			goto out_locked;
 		}
 
-		if (i915_gem_gtt_insert(&i915->ggtt.vm, &r->node,
+		if (i915_gem_gtt_insert(&ggtt->vm, &r->node,
 					1ul << 20, 0, I915_COLOR_UNEVICTABLE,
-					0, i915->ggtt.vm.total,
+					0, ggtt->vm.total,
 					PIN_NOEVICT)) {
 			kfree(r);
 			break;
@@ -458,11 +460,11 @@ static int igt_evict_contexts(void *arg)
 		count++;
 	} while (1);
 	drm_mm_remove_node(&hole);
-	mutex_unlock(&i915->ggtt.vm.mutex);
+	mutex_unlock(&ggtt->vm.mutex);
 	pr_info("Filled GGTT with %lu 1MiB nodes\n", count);
 
 	/* Overfill the GGTT with context objects and so try to evict one. */
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		struct i915_sw_fence fence;
 		struct drm_file *file;
 
@@ -518,7 +520,7 @@ static int igt_evict_contexts(void *arg)
 			break;
 	}
 
-	mutex_lock(&i915->ggtt.vm.mutex);
+	mutex_lock(&ggtt->vm.mutex);
 out_locked:
 	if (igt_flush_test(i915))
 		err = -EIO;
@@ -532,7 +534,7 @@ static int igt_evict_contexts(void *arg)
 	}
 	if (drm_mm_node_allocated(&hole))
 		drm_mm_remove_node(&hole);
-	mutex_unlock(&i915->ggtt.vm.mutex);
+	mutex_unlock(&ggtt->vm.mutex);
 	intel_runtime_pm_put(&i915->runtime_pm, wakeref);
 
 	return err;
@@ -556,7 +558,7 @@ int i915_gem_evict_mock_selftests(void)
 		return -ENOMEM;
 
 	with_intel_runtime_pm(&i915->runtime_pm, wakeref)
-		err = i915_subtests(tests, i915);
+		err = i915_subtests(tests, &i915->gt);
 
 	drm_dev_put(&i915->drm);
 	return err;
@@ -571,5 +573,5 @@ int i915_gem_evict_live_selftests(struct drm_i915_private *i915)
 	if (intel_gt_is_wedged(&i915->gt))
 		return 0;
 
-	return i915_subtests(tests, i915);
+	return intel_gt_live_subtests(tests, &i915->gt);
 }
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (7 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:06   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test Tvrtko Ursulin
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Just freeing up two more call sites from passing in i915 to
for_each_engine.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/selftests/mock_gem_device.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index cb8c3a501cc7..13d0380c08b5 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -40,14 +40,14 @@
 
 void mock_device_flush(struct drm_i915_private *i915)
 {
+	struct intel_gt *gt = &i915->gt;
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 
 	do {
-		for_each_engine(engine, i915, id)
+		for_each_engine(engine, gt, id)
 			mock_engine_flush(engine);
-	} while (intel_gt_retire_requests_timeout(&i915->gt,
-						  MAX_SCHEDULE_TIMEOUT));
+	} while (intel_gt_retire_requests_timeout(gt, MAX_SCHEDULE_TIMEOUT));
 }
 
 static void mock_device_release(struct drm_device *dev)
@@ -60,7 +60,7 @@ static void mock_device_release(struct drm_device *dev)
 
 	i915_gem_drain_workqueue(i915);
 
-	for_each_engine(engine, i915, id)
+	for_each_engine(engine, &i915->gt, id)
 		mock_engine_free(engine);
 	i915_gem_driver_release__contexts(i915);
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (8 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:08   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest Tvrtko Ursulin
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Frees up two call sites from passing i915 to for_each_engine.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/selftests/igt_live_test.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/igt_live_test.c b/drivers/gpu/drm/i915/selftests/igt_live_test.c
index 810b60100c2c..c130010a7033 100644
--- a/drivers/gpu/drm/i915/selftests/igt_live_test.c
+++ b/drivers/gpu/drm/i915/selftests/igt_live_test.c
@@ -16,6 +16,7 @@ int igt_live_test_begin(struct igt_live_test *t,
 			const char *func,
 			const char *name)
 {
+	struct intel_gt *gt = &i915->gt;
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 	int err;
@@ -24,7 +25,7 @@ int igt_live_test_begin(struct igt_live_test *t,
 	t->func = func;
 	t->name = name;
 
-	err = intel_gt_wait_for_idle(&i915->gt, MAX_SCHEDULE_TIMEOUT);
+	err = intel_gt_wait_for_idle(gt, MAX_SCHEDULE_TIMEOUT);
 	if (err) {
 		pr_err("%s(%s): failed to idle before, with err=%d!",
 		       func, name, err);
@@ -33,7 +34,7 @@ int igt_live_test_begin(struct igt_live_test *t,
 
 	t->reset_global = i915_reset_count(&i915->gpu_error);
 
-	for_each_engine(engine, i915, id)
+	for_each_engine(engine, gt, id)
 		t->reset_engine[id] =
 			i915_reset_engine_count(&i915->gpu_error, engine);
 
@@ -56,7 +57,7 @@ int igt_live_test_end(struct igt_live_test *t)
 		return -EIO;
 	}
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, &i915->gt, id) {
 		if (t->reset_engine[id] ==
 		    i915_reset_engine_count(&i915->gpu_error, engine))
 			continue;
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (9 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:11   ` Chris Wilson
  2019-10-22  9:47 ` [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests Tvrtko Ursulin
  2019-10-22 10:51 ` ✗ Fi.CI.BAT: failure for Fewer for_each_engine(.., i915, ..) Patchwork
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

One more for_each_engine call site changed to work on GT engines.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
index 65d4dbf91999..45fc152ebf5c 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
@@ -514,12 +514,13 @@ static int igt_smoke_tiling(void *arg)
 static int make_obj_busy(struct drm_i915_gem_object *obj)
 {
 	struct drm_i915_private *i915 = to_i915(obj->base.dev);
+	struct intel_gt *gt = &i915->gt;
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 	struct i915_vma *vma;
 	int err;
 
-	vma = i915_vma_instance(obj, &i915->ggtt.vm, NULL);
+	vma = i915_vma_instance(obj, &gt->ggtt->vm, NULL);
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
 
@@ -527,7 +528,7 @@ static int make_obj_busy(struct drm_i915_gem_object *obj)
 	if (err)
 		return err;
 
-	for_each_engine(engine, i915, id) {
+	for_each_engine(engine, gt, id) {
 		struct i915_request *rq;
 
 		rq = i915_request_create(engine->kernel_context);
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (10 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest Tvrtko Ursulin
@ 2019-10-22  9:47 ` Tvrtko Ursulin
  2019-10-22 10:54   ` Chris Wilson
  2019-10-22 10:51 ` ✗ Fi.CI.BAT: failure for Fewer for_each_engine(.., i915, ..) Patchwork
  12 siblings, 1 reply; 26+ messages in thread
From: Tvrtko Ursulin @ 2019-10-22  9:47 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Contexts are not testing physical engines so it makes sense to use the
uabi iterator.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 .../gpu/drm/i915/gem/selftests/i915_gem_context.c    | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
index e5c235051ae5..8f72f173db03 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
@@ -32,7 +32,6 @@ static int live_nop_switch(void *arg)
 	struct drm_i915_private *i915 = arg;
 	struct intel_engine_cs *engine;
 	struct i915_gem_context **ctx;
-	enum intel_engine_id id;
 	struct igt_live_test t;
 	struct drm_file *file;
 	unsigned long n;
@@ -67,7 +66,7 @@ static int live_nop_switch(void *arg)
 		}
 	}
 
-	for_each_engine(engine, i915, id) {
+	for_each_uabi_engine(engine, i915) {
 		struct i915_request *rq;
 		unsigned long end_time, prime;
 		ktime_t times[2] = {};
@@ -583,7 +582,6 @@ static int igt_ctx_exec(void *arg)
 {
 	struct drm_i915_private *i915 = arg;
 	struct intel_engine_cs *engine;
-	enum intel_engine_id id;
 	int err = -ENODEV;
 
 	/*
@@ -595,7 +593,7 @@ static int igt_ctx_exec(void *arg)
 	if (!DRIVER_CAPS(i915)->has_logical_contexts)
 		return 0;
 
-	for_each_engine(engine, i915, id) {
+	for_each_uabi_engine(engine, i915) {
 		struct drm_i915_gem_object *obj = NULL;
 		unsigned long ncontexts, ndwords, dw;
 		struct i915_request *tq[5] = {};
@@ -711,7 +709,6 @@ static int igt_shared_ctx_exec(void *arg)
 	struct i915_request *tq[5] = {};
 	struct i915_gem_context *parent;
 	struct intel_engine_cs *engine;
-	enum intel_engine_id id;
 	struct igt_live_test t;
 	struct drm_file *file;
 	int err = 0;
@@ -743,7 +740,7 @@ static int igt_shared_ctx_exec(void *arg)
 	if (err)
 		goto out_file;
 
-	for_each_engine(engine, i915, id) {
+	for_each_uabi_engine(engine, i915) {
 		unsigned long ncontexts, ndwords, dw;
 		struct drm_i915_gem_object *obj = NULL;
 		IGT_TIMEOUT(end_time);
@@ -1651,7 +1648,6 @@ static int igt_vm_isolation(void *arg)
 	struct drm_file *file;
 	I915_RND_STATE(prng);
 	unsigned long count;
-	unsigned int id;
 	u64 vm_total;
 	int err;
 
@@ -1692,7 +1688,7 @@ static int igt_vm_isolation(void *arg)
 	vm_total -= I915_GTT_PAGE_SIZE;
 
 	count = 0;
-	for_each_engine(engine, i915, id) {
+	for_each_uabi_engine(engine, i915) {
 		IGT_TIMEOUT(end_time);
 		unsigned long this = 0;
 
-- 
2.20.1

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio
  2019-10-22  9:47 ` [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio Tvrtko Ursulin
@ 2019-10-22 10:00   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:00 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:15)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities
  2019-10-22  9:47 ` [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities Tvrtko Ursulin
@ 2019-10-22 10:00   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:00 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:16)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup
  2019-10-22  9:47 ` [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup Tvrtko Ursulin
@ 2019-10-22 10:01   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:01 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:17)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Getting closer,
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup
  2019-10-22  9:47 ` [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup Tvrtko Ursulin
@ 2019-10-22 10:01   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:01 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:18)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init
  2019-10-22  9:47 ` [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init Tvrtko Ursulin
@ 2019-10-22 10:02   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:02 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:19)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds
  2019-10-22  9:47 ` [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds Tvrtko Ursulin
@ 2019-10-22 10:02   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:02 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:20)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Engines belong to the GT so make it indicative in the API.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts
  2019-10-22  9:47 ` [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts Tvrtko Ursulin
@ 2019-10-22 10:04   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:04 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:21)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Just compartmentalizes code a bit more.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Makes sense,
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt
  2019-10-22  9:47 ` [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt Tvrtko Ursulin
@ 2019-10-22 10:06   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:06 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:22)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Convert the test code to work directly on what it needs rather than
> going through the top-level i915.
> 
> This enables another natural usage for for_each_engine(.., gt, ..).
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Also i915_gem_gtt/evict themselves need to be compartmentalised better,
so this is even more natural than it looks :)

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device
  2019-10-22  9:47 ` [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device Tvrtko Ursulin
@ 2019-10-22 10:06   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:06 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:23)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Just freeing up two more call sites from passing in i915 to
> for_each_engine.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Ok, we really should do a gt/mock_gt.c...
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test
  2019-10-22  9:47 ` [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test Tvrtko Ursulin
@ 2019-10-22 10:08   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:08 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:24)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Frees up two call sites from passing i915 to for_each_engine.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Ok. I've been looking at making this intel_gt centric, and our
discussions lead to consider both a global GEM variant and a local gt
variant. For later.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest
  2019-10-22  9:47 ` [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest Tvrtko Ursulin
@ 2019-10-22 10:11   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:11 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:25)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> One more for_each_engine call site changed to work on GT engines.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>  drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
> index 65d4dbf91999..45fc152ebf5c 100644
> --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
> +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
> @@ -514,12 +514,13 @@ static int igt_smoke_tiling(void *arg)
>  static int make_obj_busy(struct drm_i915_gem_object *obj)
>  {
>         struct drm_i915_private *i915 = to_i915(obj->base.dev);
> +       struct intel_gt *gt = &i915->gt;
>         struct intel_engine_cs *engine;
>         enum intel_engine_id id;
>         struct i915_vma *vma;
>         int err;
>  
> -       vma = i915_vma_instance(obj, &i915->ggtt.vm, NULL);
> +       vma = i915_vma_instance(obj, &gt->ggtt->vm, NULL);
>         if (IS_ERR(vma))
>                 return PTR_ERR(vma);
>  
> @@ -527,7 +528,7 @@ static int make_obj_busy(struct drm_i915_gem_object *obj)
>         if (err)
>                 return err;
>  
> -       for_each_engine(engine, i915, id) {
> +       for_each_engine(engine, gt, id) {

I was thinking for_each_uabi_engine() -- but I was trying to answer to
myself why exactly.

Ok, I have an idea, let me float a patch.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* ✗ Fi.CI.BAT: failure for Fewer for_each_engine(.., i915, ..)
  2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
                   ` (11 preceding siblings ...)
  2019-10-22  9:47 ` [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests Tvrtko Ursulin
@ 2019-10-22 10:51 ` Patchwork
  12 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2019-10-22 10:51 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-gfx

== Series Details ==

Series: Fewer for_each_engine(.., i915, ..)
URL   : https://patchwork.freedesktop.org/series/68374/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_7147 -> Patchwork_14913
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_14913 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_14913, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_14913:

### IGT changes ###

#### Possible regressions ####

  * igt@runner@aborted:
    - fi-apl-guc:         NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-apl-guc/igt@runner@aborted.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@i915_selftest@live_gt_heartbeat}:
    - fi-kbl-r:           [PASS][2] -> [DMESG-FAIL][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-kbl-r/igt@i915_selftest@live_gt_heartbeat.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-kbl-r/igt@i915_selftest@live_gt_heartbeat.html
    - fi-kbl-guc:         [PASS][4] -> [DMESG-FAIL][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-kbl-guc/igt@i915_selftest@live_gt_heartbeat.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-kbl-guc/igt@i915_selftest@live_gt_heartbeat.html
    - fi-cml-u2:          NOTRUN -> [DMESG-FAIL][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-cml-u2/igt@i915_selftest@live_gt_heartbeat.html

  
Known issues
------------

  Here are the changes found in Patchwork_14913 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_flink_basic@basic:
    - fi-icl-u3:          [PASS][7] -> [DMESG-WARN][8] ([fdo#107724] / [fdo#112052 ])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-icl-u3/igt@gem_flink_basic@basic.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-icl-u3/igt@gem_flink_basic@basic.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [PASS][9] -> [FAIL][10] ([fdo#111407])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Possible fixes ####

  * igt@gem_ctx_create@basic-files:
    - fi-bxt-dsi:         [INCOMPLETE][11] ([fdo#103927]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-bxt-dsi/igt@gem_ctx_create@basic-files.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-bxt-dsi/igt@gem_ctx_create@basic-files.html

  * igt@gem_mmap_gtt@basic-read-no-prefault:
    - fi-icl-u3:          [DMESG-WARN][13] ([fdo#107724]) -> [PASS][14] +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-icl-u3/igt@gem_mmap_gtt@basic-read-no-prefault.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-icl-u3/igt@gem_mmap_gtt@basic-read-no-prefault.html

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-cml-u2:          [INCOMPLETE][15] ([fdo#110566]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7147/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/fi-cml-u2/igt@i915_module_load@reload-with-fault-injection.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#110566]: https://bugs.freedesktop.org/show_bug.cgi?id=110566
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [fdo#112052 ]: https://bugs.freedesktop.org/show_bug.cgi?id=112052 


Participating hosts (53 -> 45)
------------------------------

  Missing    (8): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-gdg-551 fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_7147 -> Patchwork_14913

  CI-20190529: 20190529
  CI_DRM_7147: af7be68bf037a893e0a6b84a82ae80b8ae0e15b1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5235: da9abbab69be80dd00812a4607a4ea2dffcc4544 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_14913: da50b8955a31abd556b094cd826897af2a1c605c @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

da50b8955a31 drm/i915/selftests: Use for_each_uabi_engine in contex selftests
b81da5e8125a drm/i915/selftests: Use GT engines in i915_gem_mman selftest
a484eb3f5d37 drm/i915/selftests: Use GT engines in igt_live_test
9b1ed0a7cbe0 drm/i915/selftests: Use GT engines in mock_gem_device
4f1456e689cc drm/i915/selftests: Convert eviction selftests to gt/ggtt
0088feea94ec drm/i915: Split drop caches into GT and i915 parts
4768416b013a drm/i915: Pass intel_gt to intel_engines_verify_workarounds
f0ae79caddd5 drm/i915: Pass intel_gt to intel_engines_init
7b3429a444f9 drm/i915: Pass intel_gt to intel_engines_setup
105644aa276c drm/i915: Pass intel_gt to intel_engines_cleanup
757ad8d265d1 drm/i915: Pass intel_gt to intel_setup_engine_capabilities
4b7d3b07ffe2 drm/i915: Pass intel_gt to intel_engines_init_mmio

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_14913/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests
  2019-10-22  9:47 ` [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests Tvrtko Ursulin
@ 2019-10-22 10:54   ` Chris Wilson
  0 siblings, 0 replies; 26+ messages in thread
From: Chris Wilson @ 2019-10-22 10:54 UTC (permalink / raw)
  To: Intel-gfx, Tvrtko Ursulin

Quoting Tvrtko Ursulin (2019-10-22 10:47:26)
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> 
> Contexts are not testing physical engines so it makes sense to use the
> uabi iterator.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2019-10-22 10:55 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-22  9:47 [PATCH 00/12] Fewer for_each_engine(.., i915, ..) Tvrtko Ursulin
2019-10-22  9:47 ` [PATCH 01/12] drm/i915: Pass intel_gt to intel_engines_init_mmio Tvrtko Ursulin
2019-10-22 10:00   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 02/12] drm/i915: Pass intel_gt to intel_setup_engine_capabilities Tvrtko Ursulin
2019-10-22 10:00   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 03/12] drm/i915: Pass intel_gt to intel_engines_cleanup Tvrtko Ursulin
2019-10-22 10:01   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 04/12] drm/i915: Pass intel_gt to intel_engines_setup Tvrtko Ursulin
2019-10-22 10:01   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 05/12] drm/i915: Pass intel_gt to intel_engines_init Tvrtko Ursulin
2019-10-22 10:02   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 06/12] drm/i915: Pass intel_gt to intel_engines_verify_workarounds Tvrtko Ursulin
2019-10-22 10:02   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 07/12] drm/i915: Split drop caches into GT and i915 parts Tvrtko Ursulin
2019-10-22 10:04   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 08/12] drm/i915/selftests: Convert eviction selftests to gt/ggtt Tvrtko Ursulin
2019-10-22 10:06   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 09/12] drm/i915/selftests: Use GT engines in mock_gem_device Tvrtko Ursulin
2019-10-22 10:06   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 10/12] drm/i915/selftests: Use GT engines in igt_live_test Tvrtko Ursulin
2019-10-22 10:08   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 11/12] drm/i915/selftests: Use GT engines in i915_gem_mman selftest Tvrtko Ursulin
2019-10-22 10:11   ` Chris Wilson
2019-10-22  9:47 ` [PATCH 12/12] drm/i915/selftests: Use for_each_uabi_engine in contex selftests Tvrtko Ursulin
2019-10-22 10:54   ` Chris Wilson
2019-10-22 10:51 ` ✗ Fi.CI.BAT: failure for Fewer for_each_engine(.., i915, ..) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.