Commit e556f7c1 authored by Dave Gordon's avatar Dave Gordon Committed by Tvrtko Ursulin

drm/i915/guc: fix GuC loading/submission check

The last stage of the GuC loader also sanitises the GuC submission
settings, so should be called unconditionally (even on platforms
without a GuC) to ensure consistent settings; in particular, this
prevents any attempt to use GuC submission on GuCless platforms!

Also fix error path handling and clarify DRM_INFO fallback message.
Signed-off-by: default avatarDave Gordon <david.s.gordon@intel.com>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
parent 6bb62855
...@@ -4930,11 +4930,9 @@ i915_gem_init_hw(struct drm_device *dev) ...@@ -4930,11 +4930,9 @@ i915_gem_init_hw(struct drm_device *dev)
intel_mocs_init_l3cc_table(dev); intel_mocs_init_l3cc_table(dev);
/* We can't enable contexts until all firmware is loaded */ /* We can't enable contexts until all firmware is loaded */
if (HAS_GUC(dev)) { ret = intel_guc_setup(dev);
ret = intel_guc_setup(dev); if (ret)
if (ret) goto out;
goto out;
}
/* /*
* Increment the next seqno by 0x100 so we have a visible break * Increment the next seqno by 0x100 so we have a visible break
......
...@@ -425,9 +425,13 @@ int intel_guc_setup(struct drm_device *dev) ...@@ -425,9 +425,13 @@ int intel_guc_setup(struct drm_device *dev)
if (!i915.enable_guc_loading) { if (!i915.enable_guc_loading) {
err = 0; err = 0;
goto fail; goto fail;
} else if (fw_path == NULL || *fw_path == '\0') { } else if (fw_path == NULL) {
if (*fw_path == '\0') /* Device is known to have no uCode (e.g. no GuC) */
DRM_INFO("No GuC firmware known for this platform\n"); err = -ENXIO;
goto fail;
} else if (*fw_path == '\0') {
/* Device has a GuC but we don't know what f/w to load? */
DRM_INFO("No GuC firmware known for this platform\n");
err = -ENODEV; err = -ENODEV;
goto fail; goto fail;
} }
...@@ -535,7 +539,7 @@ int intel_guc_setup(struct drm_device *dev) ...@@ -535,7 +539,7 @@ int intel_guc_setup(struct drm_device *dev)
if (fw_path == NULL) if (fw_path == NULL)
DRM_INFO("GuC submission without firmware not supported\n"); DRM_INFO("GuC submission without firmware not supported\n");
if (ret == 0) if (ret == 0)
DRM_INFO("Falling back to execlist mode\n"); DRM_INFO("Falling back from GuC submission to execlist mode\n");
else else
DRM_ERROR("GuC init failed: %d\n", ret); DRM_ERROR("GuC init failed: %d\n", ret);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment