Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -4930,11 +4930,9 @@ i915_gem_init_hw(struct drm_device *dev)
	intel_mocs_init_l3cc_table(dev);

	/* We can't enable contexts until all firmware is loaded */
	if (HAS_GUC(dev)) {
	ret = intel_guc_setup(dev);
	if (ret)
		goto out;
	}

	/*
	 * Increment the next seqno by 0x100 so we have a visible break
+8 −4
Original line number Diff line number Diff line
@@ -425,8 +425,12 @@ int intel_guc_setup(struct drm_device *dev)
	if (!i915.enable_guc_loading) {
		err = 0;
		goto fail;
	} else if (fw_path == NULL || *fw_path == '\0') {
		if (*fw_path == '\0')
	} else if (fw_path == NULL) {
		/* Device is known to have no uCode (e.g. no GuC) */
		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;
		goto fail;
@@ -535,7 +539,7 @@ int intel_guc_setup(struct drm_device *dev)
		if (fw_path == NULL)
			DRM_INFO("GuC submission without firmware not supported\n");
		if (ret == 0)
			DRM_INFO("Falling back to execlist mode\n");
			DRM_INFO("Falling back from GuC submission to execlist mode\n");
		else
			DRM_ERROR("GuC init failed: %d\n", ret);
	}