[Intel-gfx] [PATCH] drm/i915/huc: fix version parsing from CSS header
Summers, Stuart
stuart.summers at intel.com
Wed Sep 25 23:03:20 UTC 2019
On Wed, 2019-09-25 at 15:21 -0700, Daniele Ceraolo Spurio wrote:
> The HuC FW has silently switched to encoding the version the same way
> as
> the GuC FW does, i.e. major.minor.patch instead of just major.minor.
> All
> the current blobs follow the new scheme, but since minor and patch
> are
> both zero there is no difference in the end results and we happily
> load
> them. New binaries, however, will have non-zero values in there, so
> we
> need to make sure to parse them correctly.
>
> Signed-off-by: Daniele Ceraolo Spurio <
> daniele.ceraolospurio at intel.com>
I don't have insight into the HuC change, so just taking your word
here. The code below looks sane and is an obvious improvement.
It might be interesting to get a look from someone a little closer to
this for a HuC perspective. With that disclaimer:
Reviewed-by: Stuart Summers <stuart.summers at intel.com>
> Cc: Anusha Srivatsa <anusha.srivatsa at intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> ---
> drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 23 ++++------------
> ----
> drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h | 8 +++----
> 2 files changed, 7 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> index ea9a807abd4f..bb878119f06c 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> @@ -339,25 +339,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw
> *uc_fw, struct drm_i915_private *i915)
> }
>
> /* Get version numbers from the CSS header */
> - switch (uc_fw->type) {
> - case INTEL_UC_FW_TYPE_GUC:
> - uc_fw->major_ver_found =
> FIELD_GET(CSS_SW_VERSION_GUC_MAJOR,
> - css->sw_version);
> - uc_fw->minor_ver_found =
> FIELD_GET(CSS_SW_VERSION_GUC_MINOR,
> - css->sw_version);
> - break;
> -
> - case INTEL_UC_FW_TYPE_HUC:
> - uc_fw->major_ver_found =
> FIELD_GET(CSS_SW_VERSION_HUC_MAJOR,
> - css->sw_version);
> - uc_fw->minor_ver_found =
> FIELD_GET(CSS_SW_VERSION_HUC_MINOR,
> - css->sw_version);
> - break;
> -
> - default:
> - MISSING_CASE(uc_fw->type);
> - break;
> - }
> + uc_fw->major_ver_found = FIELD_GET(CSS_SW_VERSION_UC_MAJOR,
> + css->sw_version);
> + uc_fw->minor_ver_found = FIELD_GET(CSS_SW_VERSION_UC_MINOR,
> + css->sw_version);
>
> if (uc_fw->major_ver_found != uc_fw->major_ver_wanted ||
> uc_fw->minor_ver_found < uc_fw->minor_ver_wanted) {
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
> b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
> index ae58e8a8c53b..f8f6c91a0df6 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
> @@ -69,11 +69,9 @@ struct uc_css_header {
> char username[8];
> char buildnumber[12];
> u32 sw_version;
> -#define CSS_SW_VERSION_GUC_MAJOR (0xFF << 16)
> -#define CSS_SW_VERSION_GUC_MINOR (0xFF << 8)
> -#define CSS_SW_VERSION_GUC_PATCH (0xFF << 0)
> -#define CSS_SW_VERSION_HUC_MAJOR (0xFFFF << 16)
> -#define CSS_SW_VERSION_HUC_MINOR (0xFFFF << 0)
> +#define CSS_SW_VERSION_UC_MAJOR (0xFF << 16)
> +#define CSS_SW_VERSION_UC_MINOR (0xFF << 8)
> +#define CSS_SW_VERSION_UC_PATCH (0xFF << 0)
> u32 reserved[14];
> u32 header_info;
> } __packed;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3270 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20190925/a2ead453/attachment-0001.bin>
More information about the Intel-gfx
mailing list