Re: [PATCH 05/59] drm/i915: Reserve ring buffer space for i915_add_request() commands

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

 



On 20/03/2015 15:13, Daniel Vetter wrote:
On Thu, Mar 19, 2015 at 12:30:10PM +0000, John.C.Harrison@xxxxxxxxx wrote:
+void intel_ring_reserved_space_use(struct intel_ringbuffer *ringbuf, int size)
Just a bit of interface bikeshed - I'd drop the size parameter here. It
just duplicates what we tell the ring in the reservation code and the real
check happens in the _end function.

+{
+	WARN_ON(size > ringbuf->reserved_size);
+	WARN_ON(ringbuf->reserved_in_use);
+
+	ringbuf->reserved_in_use = true;
+	ringbuf->reserved_tail   = ringbuf->tail;
+}
+
+void intel_ring_reserved_space_end(struct intel_ringbuffer *ringbuf)
+{
+	WARN_ON(!ringbuf->reserved_in_use);
+	WARN_ON(ringbuf->tail > ringbuf->reserved_tail + ringbuf->reserved_size);
Don't we need to handle wrap-around to make sure we do correctly check for
sufficient reservation?
-Daniel

There is nothing special to worry about for wrapping. The regular intel_ring_begin() code will handle all that as before. The whole point of the reserved scheme is that it is basically the same as calling intel_ring_begin() with 'size + RESERVED_SIZE' everywhere. So when i915_add_request() starts, it is guaranteed that an 'intel_ring_begin(RESERVED_SIZE)' has been done already including any necessary buffer wrapping. Thus it does not actually need to call 'i_r_begin()' at all, really - it is guaranteed to succeed (as long as it stays within RESERVED_SIZE total usage).

John.

_______________________________________________
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