Skip to content

Commit

Permalink
drm/i915/ringbuffer: Write the value passed in to the tail register
Browse files Browse the repository at this point in the history
This should fix the error along the reset path were we tried to clear the
tail register by setting it to 0, but were in fact setting it to the
current value and complaining when it did not reset to 0.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
  • Loading branch information
Chris Wilson committed Oct 22, 2010
1 parent 85ccc35 commit 297b0c5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
26 changes: 13 additions & 13 deletions drivers/gpu/drm/i915/intel_ringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,12 @@ render_ring_flush(struct drm_device *dev,
}
}

static void ring_set_tail(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value)
static void ring_write_tail(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value)
{
drm_i915_private_t *dev_priv = dev->dev_private;
I915_WRITE_TAIL(ring, ring->tail);
I915_WRITE_TAIL(ring, value);
}

u32 intel_ring_get_active_head(struct drm_device *dev,
Expand All @@ -148,7 +148,7 @@ static int init_ring_common(struct drm_device *dev,
/* Stop the ring if it's running. */
I915_WRITE_CTL(ring, 0);
I915_WRITE_HEAD(ring, 0);
ring->set_tail(dev, ring, 0);
ring->write_tail(dev, ring, 0);

/* Initialize the ring. */
I915_WRITE_START(ring, obj_priv->gtt_offset);
Expand Down Expand Up @@ -729,7 +729,7 @@ void intel_ring_advance(struct drm_device *dev,
struct intel_ring_buffer *ring)
{
ring->tail &= ring->size - 1;
ring->set_tail(dev, ring, ring->tail);
ring->write_tail(dev, ring, ring->tail);
}

static const struct intel_ring_buffer render_ring = {
Expand All @@ -738,7 +738,7 @@ static const struct intel_ring_buffer render_ring = {
.mmio_base = RENDER_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_render_ring,
.set_tail = ring_set_tail,
.write_tail = ring_write_tail,
.flush = render_ring_flush,
.add_request = render_ring_add_request,
.get_seqno = render_ring_get_seqno,
Expand All @@ -755,7 +755,7 @@ static const struct intel_ring_buffer bsd_ring = {
.mmio_base = BSD_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_bsd_ring,
.set_tail = ring_set_tail,
.write_tail = ring_write_tail,
.flush = bsd_ring_flush,
.add_request = ring_add_request,
.get_seqno = ring_status_page_get_seqno,
Expand All @@ -765,9 +765,9 @@ static const struct intel_ring_buffer bsd_ring = {
};


static void gen6_bsd_ring_set_tail(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value)
static void gen6_bsd_ring_write_tail(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value)
{
drm_i915_private_t *dev_priv = dev->dev_private;

Expand Down Expand Up @@ -829,7 +829,7 @@ static const struct intel_ring_buffer gen6_bsd_ring = {
.mmio_base = GEN6_BSD_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_bsd_ring,
.set_tail = gen6_bsd_ring_set_tail,
.write_tail = gen6_bsd_ring_write_tail,
.flush = gen6_ring_flush,
.add_request = ring_add_request,
.get_seqno = ring_status_page_get_seqno,
Expand Down Expand Up @@ -859,7 +859,7 @@ static const struct intel_ring_buffer gen6_blt_ring = {
.mmio_base = BLT_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_ring_common,
.set_tail = ring_set_tail,
.write_tail = ring_write_tail,
.flush = gen6_ring_flush,
.add_request = ring_add_request,
.get_seqno = ring_status_page_get_seqno,
Expand Down
6 changes: 3 additions & 3 deletions drivers/gpu/drm/i915/intel_ringbuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ struct intel_ring_buffer {
int (*init)(struct drm_device *dev,
struct intel_ring_buffer *ring);

void (*set_tail)(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value);
void (*write_tail)(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 value);
void (*flush)(struct drm_device *dev,
struct intel_ring_buffer *ring,
u32 invalidate_domains,
Expand Down

0 comments on commit 297b0c5

Please sign in to comment.