Re: [PATCH 03/15] drm/i915: Only spin whilst waiting on the current request

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30/11/15 10:06, Tvrtko Ursulin wrote:

On 29/11/15 08:48, Chris Wilson wrote:
Limit busywaiting only to the request currently being processed by the
GPU. If the request is not currently being processed by the GPU, there
is a very low likelihood of it being completed within the 2 microsecond
spin timeout and so we will just be wasting CPU cycles.

v2: Check for logical inversion when rebasing - we were incorrectly
checking for this request being active, and instead busywaiting for
when the GPU was not yet processing the request of interest.

v3: Try another colour for the seqno names.
v4: Another colour for the function names.

Adding a field in the request to track the sequence number of the previous request isn't ideal when considering the scheduler and preemption. But we've got a separate batch-in-progress sequence number in the hardware status page (also for use by TDR to check which batch is currently running), so you could use that. Then the check is simply

    curr = intel_read_status_page(ring, I915_BATCH_ACTIVE_SEQNO);
    if (curr != req->seqno)
        return -EAGAIN;

.DAve.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux