[PATCH 5/6] Add debugging for failed GuC firmware load

Dave Gordon david.s.gordon at intel.com
Tue Jul 26 12:07:44 UTC 2016


Signed-off-by: Dave Gordon <david.s.gordon at intel.com>
---
 drivers/gpu/drm/i915/intel_guc_loader.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index b9c9f15..4449bd1 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -563,6 +563,27 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 		intel_guc_fw_status_repr(guc_fw->guc_fw_fetch_status));
 
 	err = request_firmware(&fw, guc_fw->guc_fw_path, &dev->pdev->dev);
+
+	if (WARN_ON(err == -ENOENT)) {
+		struct drm_i915_private *dev_priv = to_i915(dev);
+
+		DRM_INFO("GuC firmware NOT FOUND at '%s'\n", guc_fw->guc_fw_path);
+
+		err = request_firmware(&fw, dev_priv->csr.fw_path, &dev_priv->drm.pdev->dev);
+		if (err)
+			DRM_INFO("CSR firmware also NOT FOUND at '%s'\n", dev_priv->csr.fw_path);
+		else
+			DRM_INFO("CSR firmware found at '%s'\n", dev_priv->csr.fw_path);
+		release_firmware(fw);
+
+		msleep(3000);
+		err = request_firmware(&fw, guc_fw->guc_fw_path, &dev_priv->drm.pdev->dev);
+		if (err)
+			DRM_INFO("GuC firmware still NOT FOUND at '%s'\n", guc_fw->guc_fw_path);
+		else
+			DRM_INFO("GuC firmware FOUND at '%s' after RETRY!\n", guc_fw->guc_fw_path);
+	}
+
 	if (err)
 		goto fail;
 	if (!fw)
@@ -658,7 +679,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 fail:
 	DRM_DEBUG_DRIVER("GuC fw fetch status FAIL; err %d, fw %p, obj %p\n",
 		err, fw, guc_fw->guc_fw_obj);
-	DRM_ERROR("Failed to fetch GuC firmware from %s (error %d)\n",
+	DRM_ERROR("Failed to fetch GuC firmware from '%s' (error %d)\n",
 		  guc_fw->guc_fw_path, err);
 
 	mutex_lock(&dev->struct_mutex);
-- 
1.9.1



More information about the Intel-gfx-trybot mailing list