[Intel-gfx] [PATCH] drm/i915: bdw expands ACTHD to 64bit
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Thu Mar 20 17:56:57 CET 2014
On 03/19/2014 09:54 PM, Chris Wilson wrote:
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
> index 7a01911c16f8..a6ceb2c6f36d 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.c
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
> @@ -417,13 +417,19 @@ static void ring_write_tail(struct intel_ring_buffer *ring,
> I915_WRITE_TAIL(ring, value);
> }
>
> -u32 intel_ring_get_active_head(struct intel_ring_buffer *ring)
> +u64 intel_ring_get_active_head(struct intel_ring_buffer *ring)
> {
> drm_i915_private_t *dev_priv = ring->dev->dev_private;
> - u32 acthd_reg = INTEL_INFO(ring->dev)->gen >= 4 ?
> - RING_ACTHD(ring->mmio_base) : ACTHD;
>
> - return I915_READ(acthd_reg);
> + u32 reg = (INTEL_INFO(ring->dev)->gen >= 4 ?
> + RING_ACTHD(ring->mmio_base) : ACTHD);
> + u64 acthd;
> +
> + acthd = I915_READ(reg);
> + if (INTEL_INFO(ring->dev)->gen >= 8)
> + acthd |= (u64)I915_READ(RING_ACTHD_UDW(ring->mmio_base)) << 32;
> +
> + return acthd;
> }
Can it happen, and does anyone care, for a low dword to wrap so instead
of say, 0x00010000, this function falsely returns 0x0001ffff ?
Tvrtko
More information about the Intel-gfx
mailing list