[Intel-gfx] [PATCH 2/5] drm/i915/skl: Refuse to load outdated dmc firmware

Mika Kuoppala mika.kuoppala at linux.intel.com
Wed Sep 23 03:09:46 PDT 2015


There is known issue on GT interrupt delivery with DC6 and
firmwares <1.21. There is a suspicion that this causes
spurious gpu hangs on driver init and with some workloads,
as upgrading the firmware to 1.21 makes these problems
disappear.

As of now the current version included in distribution
firmware packages is very like to be 1.19. Play it safe and
refuse to load a firmware version that may affect gpu
side stability.

v2: Refuse to load fw instead of notifying the user

Cc: Animesh Manna <animesh.manna at intel.com>
Cc: Jani Nikula <jani.nikula at linux.intel.com>
Cc: Dave Gordon <david.s.gordon at intel.com>
Cc: Arun Siluvery <arun.siluvery at linux.intel.com>
References: https://01.org/linuxgraphics/downloads/skldmcver121
Testcase: igt/gem_exec_nop
Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
---
 drivers/gpu/drm/i915/intel_csr.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 308330b..edd1017 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -47,6 +47,9 @@
 MODULE_FIRMWARE(I915_CSR_SKL);
 MODULE_FIRMWARE(I915_CSR_BXT);
 
+#define SKL_REQUIRED_FW_MAJOR	1
+#define SKL_REQUIRED_FW_MINOR	21
+
 /*
 * SKL CSR registers for DC5 and DC6
 */
@@ -394,6 +397,13 @@ static void finish_csr_load(const struct firmware *fw, void *context)
 	csr->dmc_ver_minor = ((dmc_header->fw_version & 0xffff0000) >> 16) * 10
 		+ (dmc_header->fw_version & 0x0000ffff);
 
+	if (IS_SKYLAKE(dev) && (csr->dmc_ver_major < SKL_REQUIRED_FW_MAJOR ||
+				csr->dmc_ver_minor < SKL_REQUIRED_FW_MINOR)) {
+		DRM_INFO("Outdated dmc firmware found, please upgrade to %u.%u or newer\n",
+			 SKL_REQUIRED_FW_MAJOR, SKL_REQUIRED_FW_MINOR);
+			goto out;
+	}
+
 	/* load csr program during system boot, as needed for DC states */
 	intel_csr_load_program(dev);
 	fw_loaded = true;
-- 
2.1.4



More information about the Intel-gfx mailing list