drm/i915/guc: Don't forward flip interrupts to GuC
authorSagar Arun Kamble <sagar.a.kamble@intel.com>
Wed, 30 Sep 2015 16:57:37 +0000 (09:57 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 1 Oct 2015 16:12:17 +0000 (18:12 +0200)
Due to flip interrupts GuC stays awake always and GT does not enter
RC6. Do not route those interrupts to GuC for now. Driver won't touch
DE_GUCRMR register and leave it as what default value.

Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Signed-off-by: Alex Dai <yu.dai@intel.com>
Reviewed-by: Tom O'Rourke <Tom.O'Rourke@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_guc_loader.c

index 5d17b63c107cc5664b5ad3b1bff24031d7ef6c0f..f87d833aa5ca86ac62528794543779dac4659a66 100644 (file)
@@ -90,9 +90,6 @@ static void direct_interrupts_to_host(struct drm_i915_private *dev_priv)
        for_each_ring(ring, dev_priv, i)
                I915_WRITE(RING_MODE_GEN7(ring), irqs);
 
-       /* tell DE to send nothing to GuC */
-       I915_WRITE(DE_GUCRMR, ~0);
-
        /* route all GT interrupts to the host */
        I915_WRITE(GUC_BCS_RCS_IER, 0);
        I915_WRITE(GUC_VCS2_VCS1_IER, 0);
@@ -110,13 +107,6 @@ static void direct_interrupts_to_guc(struct drm_i915_private *dev_priv)
        for_each_ring(ring, dev_priv, i)
                I915_WRITE(RING_MODE_GEN7(ring), irqs);
 
-       /* tell DE to send (all) flip_done to GuC */
-       irqs = DERRMR_PIPEA_PRI_FLIP_DONE | DERRMR_PIPEA_SPR_FLIP_DONE |
-              DERRMR_PIPEB_PRI_FLIP_DONE | DERRMR_PIPEB_SPR_FLIP_DONE |
-              DERRMR_PIPEC_PRI_FLIP_DONE | DERRMR_PIPEC_SPR_FLIP_DONE;
-       /* Unmasked bits will cause GuC response message to be sent */
-       I915_WRITE(DE_GUCRMR, ~irqs);
-
        /* route USER_INTERRUPT to Host, all others are sent to GuC. */
        irqs = GT_RENDER_USER_INTERRUPT << GEN8_RCS_IRQ_SHIFT |
               GT_RENDER_USER_INTERRUPT << GEN8_BCS_IRQ_SHIFT;