From: Oscar Mateo <oscar.mateo@xxxxxxxxx> Finally, start queueing request on ring->submit. Also, remove remaining legacy context switches. Signed-off-by: Oscar Mateo <oscar.mateo@xxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem.c | 9 ++++++--- drivers/gpu/drm/i915/i915_gem_context.c | 10 ++++++---- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 8 +++++--- drivers/gpu/drm/i915/intel_ringbuffer.c | 5 ++++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index f9ed89e..e2d2edb 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2813,9 +2813,12 @@ int i915_gpu_idle(struct drm_device *dev) /* Flush everything onto the inactive list. */ for_each_active_ring(ring, dev_priv, i) { - ret = i915_switch_context(ring, ring->default_context); - if (ret) - return ret; + if (!dev_priv->lrc_enabled) { + ret = i915_switch_context(ring, + ring->default_context); + if (ret) + return ret; + } ret = intel_ring_idle(ring); if (ret) diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index d4c6863..bf6264a 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -532,10 +532,12 @@ int i915_gem_context_enable(struct drm_i915_private *dev_priv) BUG_ON(!dev_priv->ring[RCS].default_context); - for_each_active_ring(ring, dev_priv, i) { - ret = i915_switch_context(ring, ring->default_context); - if (ret) - return ret; + if (!dev_priv->lrc_enabled) { + for_each_active_ring(ring, dev_priv, i) { + ret = i915_switch_context(ring, ring->default_context); + if (ret) + return ret; + } } return 0; diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index f7dad8c..9d17bd8 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1288,9 +1288,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, if (ret) goto err; - ret = i915_switch_context(ring, ctx); - if (ret) - goto err; + if (!dev_priv->lrc_enabled) { + ret = i915_switch_context(ring, ctx); + if (ret) + goto err; + } if (ring == &dev_priv->ring[RCS] && mode != dev_priv->relative_constants_mode) { diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 9cd6ee8..94c1716 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -433,7 +433,10 @@ static void ring_write_tail(struct intel_engine *ring, static void gen8_submit_ctx(struct intel_engine *ring, struct i915_hw_context *ctx, u32 value) { - DRM_ERROR("Execlists still not ready!\n"); + if (WARN_ON(ctx == NULL)) + ctx = ring->default_context; + + gen8_switch_context_queue(ring, ctx, value); } u64 intel_ring_get_active_head(struct intel_engine *ring) -- 1.9.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx