aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2013-02-14 14:53:51 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-02-19 18:21:47 -0500
commitb9e1faa7634e68bfcdff00a8e9378fcb662a7f30 (patch)
tree09f6b05252a5b336ed6f55fd0ec2c76b98aed910 /drivers/gpu/drm/i915/intel_ringbuffer.c
parent4f7dfb6788dd022446847fbbfbe45e13bedb5be2 (diff)
drm/i915: Fix PIPE_CONTROL DW/QW write through global GTT on IVB+
The bit controlling whether PIPE_CONTROL DW/QW write targets the global GTT or PPGTT moved moved from DW 2 bit 2 to DW 1 bit 24 on IVB. I verified on IVB that the fix is in fact effective. Without the fix none of the scratch writes actually landed in the pipe control page. With the fix the writes show up correctly. v2: move PIPE_CONTROL_GLOBAL_GTT_IVB setup to where other flags are set Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 9b8b0588c836..1d5d613eb6be 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -318,6 +318,7 @@ gen7_render_ring_flush(struct intel_ring_buffer *ring,
318 * TLB invalidate requires a post-sync write. 318 * TLB invalidate requires a post-sync write.
319 */ 319 */
320 flags |= PIPE_CONTROL_QW_WRITE; 320 flags |= PIPE_CONTROL_QW_WRITE;
321 flags |= PIPE_CONTROL_GLOBAL_GTT_IVB;
321 322
322 /* Workaround: we must issue a pipe_control with CS-stall bit 323 /* Workaround: we must issue a pipe_control with CS-stall bit
323 * set before a pipe_control command that has the state cache 324 * set before a pipe_control command that has the state cache
@@ -331,7 +332,7 @@ gen7_render_ring_flush(struct intel_ring_buffer *ring,
331 332
332 intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); 333 intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4));
333 intel_ring_emit(ring, flags); 334 intel_ring_emit(ring, flags);
334 intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); 335 intel_ring_emit(ring, scratch_addr);
335 intel_ring_emit(ring, 0); 336 intel_ring_emit(ring, 0);
336 intel_ring_advance(ring); 337 intel_ring_advance(ring);
337 338