On 17/05/2018 08:40, Chris Wilson wrote:
Store whether or not we need to kick the guc's execlists emulation on
the engine itself to avoid chasing the device info.

We do not chase device info but modparams in this case.

gen8_cs_irq_handler                          512     428     -84

I guess my point from before, (unfortunately I forgot to reply), was how much of the saving remains if GEM_BUG_ON is compiled out?

If nothing or almost nothing, I don't see a need to fiddle with this now.

Regards,

Tvrtko


Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
  drivers/gpu/drm/i915/i915_irq.c             | 4 +++-
  drivers/gpu/drm/i915/intel_guc_submission.c | 1 +
  drivers/gpu/drm/i915/intel_lrc.c            | 1 +
  drivers/gpu/drm/i915/intel_ringbuffer.h     | 7 +++++++
  4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index f9bc3aaa90d0..460878572515 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1472,8 +1472,10 @@ gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 
iir)
        }
if (iir & GT_RENDER_USER_INTERRUPT) {
+               if (intel_engine_uses_guc(engine))
+                       tasklet = true;
+
                notify_ring(engine);
-               tasklet |= USES_GUC_SUBMISSION(engine->i915);
        }
if (tasklet)
diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c 
b/drivers/gpu/drm/i915/intel_guc_submission.c
index 133367a17863..d9fcd5db4ea4 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -1312,6 +1312,7 @@ int intel_guc_submission_enable(struct intel_guc *guc)
                engine->unpark = guc_submission_unpark;
engine->flags &= ~I915_ENGINE_SUPPORTS_STATS;
+               engine->flags |= I915_ENGINE_USES_GUC;
        }
return 0;
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 857ab04452f0..4928e9ad7826 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -2305,6 +2305,7 @@ static void execlists_set_default_submission(struct 
intel_engine_cs *engine)
        engine->park = NULL;
        engine->unpark = NULL;
+ engine->flags &= ~I915_ENGINE_USES_GUC;
        engine->flags |= I915_ENGINE_SUPPORTS_STATS;
        if (engine->i915->preempt_context)
                engine->flags |= I915_ENGINE_HAS_PREEMPTION;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h 
b/drivers/gpu/drm/i915/intel_ringbuffer.h
index acef385c4c80..4ad9c5842575 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -574,6 +574,7 @@ struct intel_engine_cs {
  #define I915_ENGINE_NEEDS_CMD_PARSER BIT(0)
  #define I915_ENGINE_SUPPORTS_STATS   BIT(1)
  #define I915_ENGINE_HAS_PREEMPTION   BIT(2)
+#define I915_ENGINE_USES_GUC         BIT(3)
        unsigned int flags;
/*
@@ -651,6 +652,12 @@ intel_engine_has_preemption(const struct intel_engine_cs 
*engine)
        return engine->flags & I915_ENGINE_HAS_PREEMPTION;
  }
+static inline bool
+intel_engine_uses_guc(const struct intel_engine_cs *engine)
+{
+       return engine->flags & I915_ENGINE_USES_GUC;
+}
+
  static inline bool __execlists_need_preempt(int prio, int last)
  {
        return prio > max(0, last);

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

Reply via email to