drm/i915: warn if ring is active before sync flush
authorNaresh Kumar Kachhi <naresh.kumar.kachhi@intel.com>
Wed, 12 Mar 2014 11:09:42 +0000 (16:39 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 12 Mar 2014 15:10:55 +0000 (16:10 +0100)
Based on Bspec the command parser must be stopped prior to
issuing sync flush. This should be done by the caller of
intel_ring_setup_status_page. Patch adds a warning if it is
not done.

v2: rebased based on new patch (wait for ring to become idle)

Signed-off-by: Naresh Kumar Kachhi <naresh.kumar.kachhi@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_ringbuffer.c

index 617634b6a6c2b3d8bd02ec4e90787f11d547aa35..c50388a86bca0ebad41b37402c46acbbceaebb6f 100644 (file)
@@ -984,6 +984,10 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
        /* Flush the TLB for this page */
        if (INTEL_INFO(dev)->gen >= 6) {
                u32 reg = RING_INSTPM(ring->mmio_base);
+
+               /* ring should be idle before issuing a sync flush*/
+               WARN_ON((I915_READ_MODE(ring) & MODE_IDLE) == 0);
+
                I915_WRITE(reg,
                           _MASKED_BIT_ENABLE(INSTPM_TLB_INVALIDATE |
                                              INSTPM_SYNC_FLUSH));