drm/i915: Remove 'faked' request from LRC submission

The LRC submission code requires a request for tracking purposes. It does not
actually require that request to 'complete' it simply uses it for keeping hold
of reference counts on contexts and such like.

Previously, the fall back path of polling for space in the ring would start by
submitting any outstanding work that was sat in the buffer. This submission was
not done as part of the request that that work was owned by because that would
lead to complications with the request being submitted twice. Instead, a null
request structure was passed in to the submit call and a fake one was created.

That fall back path has long since been obsoleted and has now been removed. Thus
there is never any need to fake up a request structure. This patch removes that
code. A couple of sanity check warnings are added as well, just in case.

For: VIZ-5115
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Thomas Daniel <thomas.daniel@intel.com>
Reviewed-by: Tomas Elf <tomas.elf@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
John Harrison 2015-05-29 17:44:13 +01:00 committed by Daniel Vetter
parent fcfa423cbb
commit 9bb1af4406

View File

@ -555,22 +555,11 @@ static int execlists_context_queue(struct intel_engine_cs *ring,
if (to != ring->default_context) if (to != ring->default_context)
intel_lr_context_pin(ring, to); intel_lr_context_pin(ring, to);
if (!request) { WARN_ON(!request);
/* WARN_ON(to != request->ctx);
* If there isn't a request associated with this submission,
* create one as a temporary holder. i915_gem_request_reference(request);
*/
request = kzalloc(sizeof(*request), GFP_KERNEL);
if (request == NULL)
return -ENOMEM;
request->ring = ring;
request->ctx = to;
kref_init(&request->ref);
i915_gem_context_reference(request->ctx);
} else {
i915_gem_request_reference(request);
WARN_ON(to != request->ctx);
}
request->tail = tail; request->tail = tail;
spin_lock_irq(&ring->execlist_lock); spin_lock_irq(&ring->execlist_lock);