[Intel-gfx] [PATCH 46/55] drm/i915: Update intel_ring_begin() to take a request structure
John Harrison
John.C.Harrison at Intel.com
Tue Jun 23 03:37:53 PDT 2015
On 23/06/2015 11:24, Chris Wilson wrote:
> On Fri, May 29, 2015 at 05:44:07PM +0100, John.C.Harrison at Intel.com wrote:
>> -int intel_ring_begin(struct intel_engine_cs *ring,
>> +int intel_ring_begin(struct drm_i915_gem_request *req,
>> int num_dwords)
>> {
>> - struct drm_i915_gem_request *req;
>> - struct drm_i915_private *dev_priv = ring->dev->dev_private;
>> + struct intel_engine_cs *ring;
>> + struct drm_i915_private *dev_priv;
>> int ret;
>>
>> + WARN_ON(req == NULL);
>> + ring = req->ring;
> What was the point?
> -Chris
>
The point is to remove the OLR. The significant change within
intel_ring_begin is the next few lines:
- /* Preallocate the olr before touching the ring */
- ret = i915_gem_request_alloc(ring, ring->default_context, &req);
That is the part that causes problems by randomly creating a brand new
request that no-one knows about and squirreling it away in the OLR to
scoop up random bits of work. This is the whole point of the entire
patch series - to ensure that all ring work is assigned to a known
request by whoever instigated that work.
John.
More information about the Intel-gfx
mailing list