aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_csr.c
diff options
context:
space:
mode:
authorPatrik Jakobsson <patrik.jakobsson@linux.intel.com>2015-11-09 16:48:16 +0100
committerImre Deak <imre.deak@intel.com>2015-11-17 20:55:17 +0200
commitfc131bf20945def9cca1943b21f4c8f4a53d986b (patch)
tree93865b3a783e57cb6e676709b6fa9b72d842da9b /drivers/gpu/drm/i915/intel_csr.c
parentdrm/i915: fix handling of the disable_power_well module option (diff)
downloadlinux-dev-fc131bf20945def9cca1943b21f4c8f4a53d986b.tar.xz
linux-dev-fc131bf20945def9cca1943b21f4c8f4a53d986b.zip
drm/i915: Don't trust CSR program memory contents
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
Diffstat (limited to 'drivers/gpu/drm/i915/intel_csr.c')
-rw-r--r--drivers/gpu/drm/i915/intel_csr.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 2d6527e52acc..d16f77fc29f3 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -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++)