[Intel-gfx] [PATCH] drm/i915: Remove assertion of active_rings must be non-empty if active_requests

Chris Wilson chris at chris-wilson.co.uk
Fri May 4 10:24:52 UTC 2018


Quoting Chris Wilson (2018-05-04 11:11:47)
> "An outstanding request must still be on an active ring somewhere" is
> only true if we haven't just been interrupted by the shrinker in the
> middle of allocating the request itself. (At the start of
> i915_request_alloc() we pin the context and prepare the GT for activity,
> marking it as active, and then try to allocate the request. If this
> allocation invokes the shrinker, we try to reclaim some space by calling
> i915_retire_requests() which may then be confused by the pre-reservation
> of active_requests.)

Note that the oops here is actually of any allocation after
i915_request_alloc and before i915_request_add. To close that coarse
window, we could move the list_add(rq, ring->request_list) to
i915_request_alloc, but we still have the issue of the allocations inside
i915_request_alloc itself.
-Chris


More information about the Intel-gfx mailing list