[lkml]   [2012]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[ 02/42] drm/i915: Reset last_retired_head when resetting ring
    3.4-stable review patch.  If anyone has any objections, please let me know.


    From: Chris Wilson <>

    commit c3b20037926e607b6cdaecbf9d3103e2ca63bc31 upstream.

    When we reset the ring control registers, including the HEAD and TAIL of
    the ring, we also need to reset associated state. In this instance, we
    were failing to reset the cached value of ring->last_retired_head and so
    upon the first request for more space following a resume would
    potentially (depending on a narrow race window) believe that the HEAD had
    advanced much further than reality.

    This is a regression from:

    commit a71d8d94525e8fd855c0466fb586ae1cb008f3a2
    Author: Chris Wilson <>
    Date: Wed Feb 15 11:25:36 2012 +0000

    drm/i915: Record the tail at each request and use it to estimate the head

    Signed-off-by: Chris Wilson <>
    Signed-off-by: Daniel Vetter <>
    Signed-off-by: Greg Kroah-Hartman <>

    drivers/gpu/drm/i915/intel_ringbuffer.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
    +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
    @@ -309,6 +309,7 @@ static int init_ring_common(struct intel
    ring->head = I915_READ_HEAD(ring);
    ring->tail = I915_READ_TAIL(ring) & TAIL_ADDR;
    ring->space = ring_space(ring);
    + ring->last_retired_head = -1;

    return 0;

     \ /
      Last update: 2012-06-15 03:01    [W:0.023 / U:4.304 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site