[Intel-gfx] [PATCH v5] drm/i915: Emit to ringbuffer directly
Chris Wilson
chris at chris-wilson.co.uk
Wed Feb 8 17:49:28 UTC 2017
Just recording a couple of BUG_ON for posterity, would be nice additions
to this patch:
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 11d355d314e1..702c023cd502 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -2264,6 +2264,7 @@ u32 *intel_ring_begin(struct drm_i915_gem_request *req, int num_dwords)
ring->space -= remain_actual;
}
+ GEM_BUG_ON(ring->tail > ring->size - bytes);
out = (u32 *)(ring->vaddr + ring->tail);
ring->tail += bytes;
ring->space -= bytes;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 896838ca502c..117e1e735fc7 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -526,6 +526,7 @@ static inline u32 intel_ring_offset(struct intel_ring *ring, void *addr)
{
/* Don't write ring->size (equivalent to 0) as that hangs some GPUs. */
u32 offset = addr - ring->vaddr;
+ GEM_BUG_ON(offset > ring->size);
return offset & (ring->size - 1);
}
On Wed, Feb 08, 2017 at 02:14:34PM +0000, Tvrtko Ursulin wrote:
> @@ -862,10 +863,9 @@ void __i915_add_request(struct drm_i915_gem_request *request, bool flush_caches)
> * GPU processing the request, we never over-estimate the
> * position of the ring's HEAD.
> */
> - err = intel_ring_begin(request, engine->emit_breadcrumb_sz);
> - GEM_BUG_ON(err);
> request->postfix = ring->tail;
> - ring->tail += engine->emit_breadcrumb_sz * sizeof(u32);
> + out = intel_ring_begin(request, engine->emit_breadcrumb_sz);
> + GEM_BUG_ON(IS_ERR(out));
A test for BAT :)
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list