Commit 301efe96 authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Chris Wilson

drm/i915/uc: Don't fail on HuC firmware failure

HuC is usually not a critical component, so we can safely ignore
firmware load or authentication failures unless HuC was explicitly
requested by the user.

v2: add convenient way to disable loading (Chris)
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #v1
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190729112612.37476-1-michal.wajdeczko@intel.com
parent ed32f8d4
...@@ -422,7 +422,7 @@ int intel_uc_init_hw(struct intel_uc *uc) ...@@ -422,7 +422,7 @@ int intel_uc_init_hw(struct intel_uc *uc)
if (intel_uc_is_using_huc(uc)) { if (intel_uc_is_using_huc(uc)) {
ret = intel_huc_fw_upload(huc); ret = intel_huc_fw_upload(huc);
if (ret) if (ret && intel_uc_fw_is_overridden(&huc->fw))
goto err_out; goto err_out;
} }
...@@ -444,9 +444,9 @@ int intel_uc_init_hw(struct intel_uc *uc) ...@@ -444,9 +444,9 @@ int intel_uc_init_hw(struct intel_uc *uc)
if (ret) if (ret)
goto err_log_capture; goto err_log_capture;
if (intel_uc_is_using_huc(uc)) { if (intel_uc_fw_is_loaded(&huc->fw)) {
ret = intel_huc_auth(huc); ret = intel_huc_auth(huc);
if (ret) if (ret && intel_uc_fw_is_overridden(&huc->fw))
goto err_communication; goto err_communication;
} }
...@@ -465,7 +465,7 @@ int intel_uc_init_hw(struct intel_uc *uc) ...@@ -465,7 +465,7 @@ int intel_uc_init_hw(struct intel_uc *uc)
dev_info(i915->drm.dev, "GuC submission %s\n", dev_info(i915->drm.dev, "GuC submission %s\n",
enableddisabled(intel_uc_is_using_guc_submission(uc))); enableddisabled(intel_uc_is_using_guc_submission(uc)));
dev_info(i915->drm.dev, "HuC %s\n", dev_info(i915->drm.dev, "HuC %s\n",
enableddisabled(intel_uc_is_using_huc(uc))); enableddisabled(intel_huc_is_authenticated(huc)));
return 0; return 0;
......
...@@ -146,7 +146,8 @@ __uc_fw_override(struct intel_uc_fw *uc_fw) ...@@ -146,7 +146,8 @@ __uc_fw_override(struct intel_uc_fw *uc_fw)
break; break;
} }
return uc_fw->path; uc_fw->user_overridden = uc_fw->path;
return uc_fw->user_overridden;
} }
/** /**
...@@ -176,7 +177,7 @@ void intel_uc_fw_init_early(struct intel_uc_fw *uc_fw, ...@@ -176,7 +177,7 @@ void intel_uc_fw_init_early(struct intel_uc_fw *uc_fw,
__uc_fw_auto_select(uc_fw, INTEL_INFO(i915)->platform, __uc_fw_auto_select(uc_fw, INTEL_INFO(i915)->platform,
INTEL_REVID(i915)); INTEL_REVID(i915));
if (uc_fw->path) if (uc_fw->path && *uc_fw->path)
uc_fw->status = INTEL_UC_FIRMWARE_SELECTED; uc_fw->status = INTEL_UC_FIRMWARE_SELECTED;
else else
uc_fw->status = INTEL_UC_FIRMWARE_NOT_SUPPORTED; uc_fw->status = INTEL_UC_FIRMWARE_NOT_SUPPORTED;
......
...@@ -61,6 +61,7 @@ struct intel_uc_fw { ...@@ -61,6 +61,7 @@ struct intel_uc_fw {
enum intel_uc_fw_type type; enum intel_uc_fw_type type;
enum intel_uc_fw_status status; enum intel_uc_fw_status status;
const char *path; const char *path;
bool user_overridden;
size_t size; size_t size;
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
...@@ -141,6 +142,11 @@ static inline bool intel_uc_fw_supported(struct intel_uc_fw *uc_fw) ...@@ -141,6 +142,11 @@ static inline bool intel_uc_fw_supported(struct intel_uc_fw *uc_fw)
return __intel_uc_fw_status(uc_fw) != INTEL_UC_FIRMWARE_NOT_SUPPORTED; return __intel_uc_fw_status(uc_fw) != INTEL_UC_FIRMWARE_NOT_SUPPORTED;
} }
static inline bool intel_uc_fw_is_overridden(const struct intel_uc_fw *uc_fw)
{
return uc_fw->user_overridden;
}
static inline void intel_uc_fw_sanitize(struct intel_uc_fw *uc_fw) static inline void intel_uc_fw_sanitize(struct intel_uc_fw *uc_fw)
{ {
if (intel_uc_fw_is_loaded(uc_fw)) if (intel_uc_fw_is_loaded(uc_fw))
......
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