In the next patch, we are introducing a broad virtual engine to encompass
multiple physical engines, losing the 1:1 nature of BIT(engine->id). To
reflect the broader set of engines implied by the virtual instance, lets
store the full bitmask.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_request.c              | 2 +-
 drivers/gpu/drm/i915/i915_reset.c                | 4 ++--
 drivers/gpu/drm/i915/intel_engine_cs.c           | 1 +
 drivers/gpu/drm/i915/intel_hangcheck.c           | 8 ++++----
 drivers/gpu/drm/i915/intel_ringbuffer.c          | 4 ++--
 drivers/gpu/drm/i915/intel_ringbuffer.h          | 7 +------
 drivers/gpu/drm/i915/selftests/intel_hangcheck.c | 2 +-
 7 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_request.c 
b/drivers/gpu/drm/i915/i915_request.c
index ca432d3d8211..22ac02f02b33 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -888,7 +888,7 @@ void i915_request_add(struct i915_request *request)
                list_add(&ring->active_link, &request->i915->gt.active_rings);
        }
        pin_active_context(request->i915, request->hw_context);
-       request->i915->gt.active_engines |= BIT(engine->id);
+       request->i915->gt.active_engines |= engine->mask;
 
        request->emitted_jiffies = jiffies;
 
diff --git a/drivers/gpu/drm/i915/i915_reset.c 
b/drivers/gpu/drm/i915/i915_reset.c
index e0d87e287b10..660af00329b4 100644
--- a/drivers/gpu/drm/i915/i915_reset.c
+++ b/drivers/gpu/drm/i915/i915_reset.c
@@ -1041,7 +1041,7 @@ void i915_reset(struct drm_i915_private *i915,
 static inline int intel_gt_reset_engine(struct drm_i915_private *i915,
                                        struct intel_engine_cs *engine)
 {
-       return intel_gpu_reset(i915, intel_engine_flag(engine));
+       return intel_gpu_reset(i915, engine->mask);
 }
 
 /**
@@ -1239,7 +1239,7 @@ void i915_handle_error(struct drm_i915_private *i915,
                                continue;
 
                        if (i915_reset_engine(engine, msg) == 0)
-                               engine_mask &= ~intel_engine_flag(engine);
+                               engine_mask &= ~engine->mask;
 
                        clear_bit(I915_RESET_ENGINE + engine->id,
                                  &i915->gpu_error.flags);
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
b/drivers/gpu/drm/i915/intel_engine_cs.c
index 53f68c983334..41deffa3c69c 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -305,6 +305,7 @@ intel_engine_setup(struct drm_i915_private *dev_priv,
                return -ENOMEM;
 
        engine->id = id;
+       engine->mask = BIT(id);
        engine->i915 = dev_priv;
        __sprint_engine_name(engine->name, info);
        engine->hw_id = engine->guc_id = info->hw_id;
diff --git a/drivers/gpu/drm/i915/intel_hangcheck.c 
b/drivers/gpu/drm/i915/intel_hangcheck.c
index 2d0ef22518b1..2bc3003ffe6f 100644
--- a/drivers/gpu/drm/i915/intel_hangcheck.c
+++ b/drivers/gpu/drm/i915/intel_hangcheck.c
@@ -120,7 +120,7 @@ engine_stuck(struct intel_engine_cs *engine, u64 acthd)
         */
        tmp = I915_READ_CTL(engine);
        if (tmp & RING_WAIT) {
-               i915_handle_error(dev_priv, BIT(engine->id), 0,
+               i915_handle_error(dev_priv, engine->mask, 0,
                                  "stuck wait on %s", engine->name);
                I915_WRITE_CTL(engine, tmp);
                return ENGINE_WAIT_KICK;
@@ -286,13 +286,13 @@ static void i915_hangcheck_elapsed(struct work_struct 
*work)
                hangcheck_store_sample(engine, &hc);
 
                if (hc.stalled) {
-                       hung |= intel_engine_flag(engine);
+                       hung |= engine->mask;
                        if (hc.action != ENGINE_DEAD)
-                               stuck |= intel_engine_flag(engine);
+                               stuck |= engine->mask;
                }
 
                if (hc.wedged)
-                       wedged |= intel_engine_flag(engine);
+                       wedged |= engine->mask;
        }
 
        if (wedged) {
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index e2c415aa8354..07379c02af83 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1841,8 +1841,8 @@ static int switch_context(struct i915_request *rq)
                                goto err;
                } while (--loops);
 
-               if (intel_engine_flag(engine) & ppgtt->pd_dirty_rings) {
-                       unwind_mm = intel_engine_flag(engine);
+               if (ppgtt->pd_dirty_rings & engine->mask) {
+                       unwind_mm = engine->mask;
                        ppgtt->pd_dirty_rings &= ~unwind_mm;
                        hw_flags = MI_FORCE_RESTORE;
                }
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h 
b/drivers/gpu/drm/i915/intel_ringbuffer.h
index f37c5d1468be..c1afe77260d0 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -354,6 +354,7 @@ struct intel_engine_cs {
        enum intel_engine_id id;
        unsigned int hw_id;
        unsigned int guc_id;
+       unsigned long mask;
 
        u8 uabi_class;
 
@@ -654,12 +655,6 @@ execlists_port_complete(struct intel_engine_execlists * 
const execlists,
        return port;
 }
 
-static inline unsigned int
-intel_engine_flag(const struct intel_engine_cs *engine)
-{
-       return BIT(engine->id);
-}
-
 static inline u32
 intel_read_status_page(const struct intel_engine_cs *engine, int reg)
 {
diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c 
b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
index 9fe9ba66b5ec..625d5b6055be 100644
--- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
+++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c
@@ -1137,7 +1137,7 @@ static int __igt_reset_evict_vma(struct drm_i915_private 
*i915,
        }
 
 out_reset:
-       fake_hangcheck(rq->i915, intel_engine_flag(rq->engine));
+       fake_hangcheck(rq->i915, rq->engine->mask);
 
        if (tsk) {
                struct igt_wedge_me w;
-- 
2.20.1

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

Reply via email to