|
@@ -8586,6 +8586,20 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
|
|
|
if (ring->id == RCS)
|
|
|
len += 6;
|
|
|
|
|
|
+ /*
|
|
|
+ * BSpec MI_DISPLAY_FLIP for IVB:
|
|
|
+ * "The full packet must be contained within the same cache line."
|
|
|
+ *
|
|
|
+ * Currently the LRI+SRM+MI_DISPLAY_FLIP all fit within the same
|
|
|
+ * cacheline, if we ever start emitting more commands before
|
|
|
+ * the MI_DISPLAY_FLIP we may need to first emit everything else,
|
|
|
+ * then do the cacheline alignment, and finally emit the
|
|
|
+ * MI_DISPLAY_FLIP.
|
|
|
+ */
|
|
|
+ ret = intel_ring_cacheline_align(ring);
|
|
|
+ if (ret)
|
|
|
+ goto err_unpin;
|
|
|
+
|
|
|
ret = intel_ring_begin(ring, len);
|
|
|
if (ret)
|
|
|
goto err_unpin;
|