[Intel-gfx] [PATCH] drm/i915/huc: Add more errors for I915_PARAM_HUC_STATUS

Chris Wilson chris at chris-wilson.co.uk
Mon Mar 30 12:28:52 UTC 2020


Quoting Michal Wajdeczko (2020-03-30 12:33:02)
> There might be many reasons why we failed to successfully
> load and authenticate HuC firmware, but today we only use
> single error in case of no HuC hardware. Add some more
> error codes for most common cases (disabled, not installed,
> corrupted or mismatched firmware).
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Tony Ye <tony.ye at intel.com>
> Cc: Robert M. Fosha <robert.m.fosha at intel.com>
> ---
>  drivers/gpu/drm/i915/gt/uc/intel_huc.c | 22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_huc.c b/drivers/gpu/drm/i915/gt/uc/intel_huc.c
> index d6097b46600c..1e8073ec343f 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_huc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_huc.c
> @@ -200,9 +200,13 @@ int intel_huc_auth(struct intel_huc *huc)
>   * This function reads status register to verify if HuC
>   * firmware was successfully loaded.
>   *
> - * Returns: 1 if HuC firmware is loaded and verified,
> - * 0 if HuC firmware is not loaded and -ENODEV if HuC
> - * is not present on this platform.
> + * Returns:
> + *  * -ENODEV if HuC is not present on this platform,
> + *  * -EOPNOTSUPP if HuC firmware is disabled,
> + *  * -ENOPKG if HuC firmware was not installed,
> + *  * -ENOEXEC if HuC firmware is invalid or mismatched,
> + *  * 0 if HuC firmware is not running,
> + *  * 1 if HuC firmware is authenticated and running.
>   */
>  int intel_huc_check_status(struct intel_huc *huc)
>  {
> @@ -210,8 +214,18 @@ int intel_huc_check_status(struct intel_huc *huc)
>         intel_wakeref_t wakeref;
>         u32 status = 0;
>  
> -       if (!intel_huc_is_supported(huc))
> +       switch (__intel_uc_fw_status(&huc->fw)) {
> +       case INTEL_UC_FIRMWARE_NOT_SUPPORTED:
>                 return -ENODEV;

No HW support.

> +       case INTEL_UC_FIRMWARE_DISABLED:
> +               return -EOPNOTSUPP;

Override by user [sysadmin]

> +       case INTEL_UC_FIRMWARE_MISSING:
> +               return -ENOPKG;

FILENOTFOUND.

> +       case INTEL_UC_FIRMWARE_ERROR:
> +               return -ENOEXEC;

File corruption.

There's nothing else between us loading the fw and the huc rejecting
it?

FIRMWARE_FAIL? That's set as the opposite of FIRMWARE_TRANSFERRED in
that we failed to upload the image to the HW. The firmware itself hasn't
had a chance to run.

case INTEL_UC_FIRMWARE_FAIL:
	return -ENXIO;

Or is that being overridden to FIRMWARE_ERROR?

Other than the question of whether there's one more step before the fw
is being run [and then able to set HUC_STATUS as it determines for
itself],

Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the Intel-gfx mailing list