|
@@ -1607,8 +1607,8 @@ intel_ring_alloc_seqno(struct intel_ring_buffer *ring)
|
|
|
return i915_gem_get_seqno(ring->dev, &ring->outstanding_lazy_seqno);
|
|
|
}
|
|
|
|
|
|
-static int __intel_ring_begin(struct intel_ring_buffer *ring,
|
|
|
- int bytes)
|
|
|
+static int __intel_ring_prepare(struct intel_ring_buffer *ring,
|
|
|
+ int bytes)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
@@ -1624,7 +1624,6 @@ static int __intel_ring_begin(struct intel_ring_buffer *ring,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- ring->space -= bytes;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1639,12 +1638,17 @@ int intel_ring_begin(struct intel_ring_buffer *ring,
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
+ ret = __intel_ring_prepare(ring, num_dwords * sizeof(uint32_t));
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
/* Preallocate the olr before touching the ring */
|
|
|
ret = intel_ring_alloc_seqno(ring);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
- return __intel_ring_begin(ring, num_dwords * sizeof(uint32_t));
|
|
|
+ ring->space -= num_dwords * sizeof(uint32_t);
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
void intel_ring_init_seqno(struct intel_ring_buffer *ring, u32 seqno)
|