Skip to content

Commit

Permalink
drm/i915: Only init engines once
Browse files Browse the repository at this point in the history
We can do this.

And now there's finally the clean split between software setup and
hardware setup I kinda wanted since multi-ring support was merged
aeons ago. It only took almost 5 years.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Dave Gordon <david.s.gordon@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Daniel Vetter committed Dec 3, 2014
1 parent 99be1df commit 35a57ff
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 13 deletions.
13 changes: 10 additions & 3 deletions drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -4769,6 +4769,7 @@ int
i915_gem_init_hw(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_engine_cs *ring;
int ret, i;

if (INTEL_INFO(dev)->gen < 6 && !intel_enable_gtt())
Expand All @@ -4795,9 +4796,11 @@ i915_gem_init_hw(struct drm_device *dev)

i915_gem_init_swizzling(dev);

ret = dev_priv->gt.init_rings(dev);
if (ret)
return ret;
for_each_ring(ring, dev_priv, i) {
ret = ring->init_hw(ring);
if (ret)
return ret;
}

for (i = 0; i < NUM_L3_SLICES(dev); i++)
i915_gem_l3_remap(&dev_priv->ring[RCS], i);
Expand Down Expand Up @@ -4870,6 +4873,10 @@ int i915_gem_init(struct drm_device *dev)
return ret;
}

ret = dev_priv->gt.init_rings(dev);
if (ret)
return ret;

ret = i915_gem_init_hw(dev);
if (ret == -EIO) {
/* Allow ring initialisation to fail by marking the GPU as
Expand Down
6 changes: 0 additions & 6 deletions drivers/gpu/drm/i915/intel_lrc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1387,12 +1387,6 @@ static int logical_ring_init(struct drm_device *dev, struct intel_engine_cs *rin
if (ret)
return ret;

if (ring->init_hw) {
ret = ring->init_hw(ring);
if (ret)
return ret;
}

ret = intel_lr_context_deferred_create(ring->default_context, ring);

return ret;
Expand Down
4 changes: 0 additions & 4 deletions drivers/gpu/drm/i915/intel_ringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1859,10 +1859,6 @@ static int intel_init_ring_buffer(struct drm_device *dev,
if (ret)
goto error;

ret = ring->init_hw(ring);
if (ret)
goto error;

return 0;

error:
Expand Down

0 comments on commit 35a57ff

Please sign in to comment.