[Intel-gfx] [PATCH 2/6] drm/i915/guc: Bypass fw loading gracefully if GuC is not supported
yu.dai at intel.com
yu.dai at intel.com
Mon Jan 11 13:46:31 PST 2016
From: Alex Dai <yu.dai at intel.com>
This is to rework previous patch:
commit 9f9e539f90bcecfdc7b3679d337b7a62d4313205
Author: Daniel Vetter <daniel.vetter at ffwll.ch>
Date: Fri Oct 23 11:10:59 2015 +0200
drm/i915: Shut up GuC errors when it's disabled
There is the case where GuC loading is needed even GuC submission
is disabled. For example, HuC loading and authentication require
GuC to be loaded regardless. In this patch, driver will try to load
the firmware only when it explicitly asks for that by specifying fw
name and version. All other cases are considered as UC_FIRMWARE_NONE
and the loading is bypassed silently.
Signed-off-by: Alex Dai <yu.dai at intel.com>
---
drivers/gpu/drm/i915/intel_guc_loader.c | 32 +++++++++++---------------------
1 file changed, 11 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 70dbeb5..e11e1e8 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -594,39 +594,29 @@ void intel_guc_ucode_init(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_uc_fw *guc_fw = &dev_priv->guc.guc_fw;
- const char *fw_path;
+ const char *fw_path = NULL;
+
+ guc_fw->uc_dev = dev;
+ guc_fw->uc_fw_path = NULL;
+ guc_fw->fetch_status = UC_FIRMWARE_NONE;
+ guc_fw->load_status = UC_FIRMWARE_NONE;
if (!HAS_GUC_SCHED(dev))
i915.enable_guc_submission = false;
- if (!HAS_GUC_UCODE(dev)) {
- fw_path = NULL;
- } else if (IS_SKYLAKE(dev)) {
+ if (!HAS_GUC_UCODE(dev))
+ return;
+
+ if (IS_SKYLAKE(dev)) {
fw_path = I915_SKL_GUC_UCODE;
guc_fw->major_ver_wanted = 4;
guc_fw->minor_ver_wanted = 3;
- } else {
- i915.enable_guc_submission = false;
- fw_path = ""; /* unknown device */
}
- if (!i915.enable_guc_submission)
- return;
-
- guc_fw->uc_dev = dev;
- guc_fw->uc_fw_path = fw_path;
- guc_fw->fetch_status = UC_FIRMWARE_NONE;
- guc_fw->load_status = UC_FIRMWARE_NONE;
-
if (fw_path == NULL)
return;
- if (*fw_path == '\0') {
- DRM_ERROR("No GuC firmware known for this platform\n");
- guc_fw->fetch_status = UC_FIRMWARE_FAIL;
- return;
- }
-
+ guc_fw->uc_fw_path = fw_path;
guc_fw->fetch_status = UC_FIRMWARE_PENDING;
DRM_DEBUG_DRIVER("GuC firmware pending, path %s\n", fw_path);
intel_uc_fw_fetch(dev, guc_fw);
--
2.5.0
More information about the Intel-gfx
mailing list