Преглед изворни кода

drm/i915: Sleep whilst waiting for the ring

If userspace is submitting so many long running batches that the ring
becomes full, throttle by sleeping for a 1ms before checking for free
space. Simply yielding was causing excessive scheduler overhead whilst
making no progress.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Chris Wilson пре 14 година
родитељ
комит
e60a0b107b
1 измењених фајлова са 1 додато и 1 уклоњено
  1. 1 1
      drivers/gpu/drm/i915/intel_ringbuffer.c

+ 1 - 1
drivers/gpu/drm/i915/intel_ringbuffer.c

@@ -707,7 +707,7 @@ int intel_wait_ring_buffer(struct drm_device *dev,
 				master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT;
 				master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT;
 		}
 		}
 
 
-		yield();
+		msleep(1);
 	} while (!time_after(jiffies, end));
 	} while (!time_after(jiffies, end));
 	trace_i915_ring_wait_end (dev);
 	trace_i915_ring_wait_end (dev);
 	return -EBUSY;
 	return -EBUSY;