[PATCH 2/2] drm/i915/gt: Avoid mmio reads when setting up interrupts from idle
Chris Wilson
chris at chris-wilson.co.uk
Fri Dec 27 17:17:21 UTC 2019
If we know the submission engine is idle, we do not need to post the
write to enable interrupts as they will be enabled prior to submission.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/gt/intel_lrc.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 89ce3653b4cf..2fa295404b8b 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -3325,14 +3325,15 @@ static int gen8_emit_bb_start(struct i915_request *rq,
static void gen8_logical_ring_enable_irq(struct intel_engine_cs *engine)
{
- ENGINE_WRITE(engine, RING_IMR,
- ~(engine->irq_enable_mask | engine->irq_keep_mask));
- ENGINE_POSTING_READ(engine, RING_IMR);
+ ENGINE_WRITE_FW(engine, RING_IMR,
+ ~(engine->irq_enable_mask | engine->irq_keep_mask));
+ if (execlists_active(&engine->execlists))
+ ENGINE_POSTING_READ(engine, RING_IMR);
}
static void gen8_logical_ring_disable_irq(struct intel_engine_cs *engine)
{
- ENGINE_WRITE(engine, RING_IMR, ~engine->irq_keep_mask);
+ ENGINE_WRITE_FW(engine, RING_IMR, ~engine->irq_keep_mask);
}
static int gen8_emit_flush(struct i915_request *request, u32 mode)
--
2.24.1
More information about the Intel-gfx-trybot
mailing list