drm/i915: Don't trust CSR program memory contents
authorPatrik Jakobsson <patrik.jakobsson@linux.intel.com>
Mon, 9 Nov 2015 15:48:16 +0000 (16:48 +0100)
committerImre Deak <imre.deak@intel.com>
Tue, 17 Nov 2015 18:55:17 +0000 (20:55 +0200)
Replaces "drm/i915: Force loading of csr program at boot" in the old
series.

Previously we called blindly into intel_csr_load_program() and depended
on a check of whether the CSR program memory was cleared or not.
This check is not reliable and no longer needed since we fixed the
call-sites of intel_csr_load_program().

Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1447084107-8521-2-git-send-email-patrik.jakobsson@linux.intel.com
drivers/gpu/drm/i915/intel_csr.c

index 2d6527e52acce5dc8bf9f155ee0152f7ccef8540..d16f77fc29f30db4a3d67439b21ab7d8c78f76da 100644 (file)
@@ -216,14 +216,10 @@ void intel_csr_load_program(struct drm_i915_private *dev_priv)
                return;
        }
 
-       /*
-        * FIXME: Firmware gets lost on S3/S4, but not when entering system
-        * standby or suspend-to-idle (which is just like forced runtime pm).
-        * Unfortunately the ACPI subsystem doesn't yet give us a way to
-        * differentiate this, hence figure it out with this hack.
-        */
-       if ((!dev_priv->csr.dmc_payload) || I915_READ(CSR_PROGRAM(0)))
+       if (!dev_priv->csr.dmc_payload) {
+               DRM_ERROR("Tried to program CSR with empty payload\n");
                return;
+       }
 
        fw_size = dev_priv->csr.dmc_fw_size;
        for (i = 0; i < fw_size; i++)