[Intel-gfx] [PATCH] drm/i915/huc: fix version parsing from CSS header
Daniele Ceraolo Spurio
daniele.ceraolospurio at intel.com
Fri Sep 27 17:56:35 UTC 2019
On 9/26/19 12:37 AM, Michal Wajdeczko wrote:
> 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>
>
Thanks for the double check and the review, pushed.
Daniele
>>
>>> 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