Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d97eb69 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Only add the lazy request if we end up waiting for it.

parent 33d23237
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -1664,9 +1664,7 @@ i915_gem_next_request_seqno(struct drm_device *dev,
			    struct intel_ring_buffer *ring)
			    struct intel_ring_buffer *ring)
{
{
	drm_i915_private_t *dev_priv = dev->dev_private;
	drm_i915_private_t *dev_priv = dev->dev_private;

	return ring->outstanding_lazy_request = dev_priv->next_seqno;
	ring->outstanding_lazy_request = true;
	return dev_priv->next_seqno;
}
}


static void
static void
@@ -2072,7 +2070,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,
	if (atomic_read(&dev_priv->mm.wedged))
	if (atomic_read(&dev_priv->mm.wedged))
		return -EAGAIN;
		return -EAGAIN;


	if (ring->outstanding_lazy_request) {
	if (seqno == ring->outstanding_lazy_request) {
		struct drm_i915_gem_request *request;
		struct drm_i915_gem_request *request;


		request = kzalloc(sizeof(*request), GFP_KERNEL);
		request = kzalloc(sizeof(*request), GFP_KERNEL);
@@ -2087,7 +2085,6 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,


		seqno = request->seqno;
		seqno = request->seqno;
	}
	}
	BUG_ON(seqno == dev_priv->next_seqno);


	if (!i915_seqno_passed(ring->get_seqno(ring), seqno)) {
	if (!i915_seqno_passed(ring->get_seqno(ring), seqno)) {
		if (HAS_PCH_SPLIT(dev))
		if (HAS_PCH_SPLIT(dev))
@@ -3973,7 +3970,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
	i915_retire_commands(dev, ring);
	i915_retire_commands(dev, ring);


	if (i915_add_request(dev, file, request, ring))
	if (i915_add_request(dev, file, request, ring))
		ring->outstanding_lazy_request = true;
		i915_gem_next_request_seqno(dev, ring);
	else
	else
		request = NULL;
		request = NULL;


+1 −1
Original line number Original line Diff line number Diff line
@@ -87,7 +87,7 @@ struct intel_ring_buffer {
	/**
	/**
	 * Do we have some not yet emitted requests outstanding?
	 * Do we have some not yet emitted requests outstanding?
	 */
	 */
	bool outstanding_lazy_request;
	u32 outstanding_lazy_request;


	wait_queue_head_t irq_queue;
	wait_queue_head_t irq_queue;
	drm_local_map_t map;
	drm_local_map_t map;