[Intel-gfx] [PATCH] drm/i915/huc: fix version parsing from CSS header

Michal Wajdeczko michal.wajdeczko at intel.com
Thu Sep 26 07:37:16 UTC 2019


On Thu, 26 Sep 2019 01:03:20 +0200, Summers, Stuart  
<stuart.summers at intel.com> wrote:

> 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>

Double checked offline with HuC team, so

Acked-by: Michal Wajdeczko <michal.wajdeczko 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;


More information about the Intel-gfx mailing list