[PATCH] drm/i915/uc: Fix table order verification to check all FW types
Ceraolo Spurio, Daniele
daniele.ceraolospurio at intel.com
Wed Nov 23 02:08:10 UTC 2022
On 11/22/2022 3:33 PM, John.C.Harrison at Intel.com wrote:
> From: John Harrison <John.C.Harrison at Intel.com>
>
> It was noticed that the table order verification step was only being
> run once rather than once per firmware type. Fix that.
>
> Note that the long term plan is to convert this code to be a mock
> selftest. It is already only compiled in when selftests are enabled.
> And the work involved in the conversion was estimated to be
> non-trivial. So that conversion is currently low on the priority list.
>
> Signed-off-by: John Harrison <John.C.Harrison at Intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Daniele
> ---
> drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 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 0c80ba51a4bdc..31613c7e0838b 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> @@ -238,7 +238,7 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw)
> [INTEL_UC_FW_TYPE_GUC] = { blobs_guc, ARRAY_SIZE(blobs_guc) },
> [INTEL_UC_FW_TYPE_HUC] = { blobs_huc, ARRAY_SIZE(blobs_huc) },
> };
> - static bool verified;
> + static bool verified[INTEL_UC_FW_NUM_TYPES];
> const struct uc_fw_platform_requirement *fw_blobs;
> enum intel_platform p = INTEL_INFO(i915)->platform;
> u32 fw_count;
> @@ -291,8 +291,8 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw)
> }
>
> /* make sure the list is ordered as expected */
> - if (IS_ENABLED(CONFIG_DRM_I915_SELFTEST) && !verified) {
> - verified = true;
> + if (IS_ENABLED(CONFIG_DRM_I915_SELFTEST) && !verified[uc_fw->type]) {
> + verified[uc_fw->type] = true;
>
> for (i = 1; i < fw_count; i++) {
> /* Next platform is good: */
> @@ -343,7 +343,8 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw)
> continue;
>
> bad:
> - drm_err(&i915->drm, "Invalid FW blob order: %s r%u %s%d.%d.%d comes before %s r%u %s%d.%d.%d\n",
> + drm_err(&i915->drm, "Invalid %s blob order: %s r%u %s%d.%d.%d comes before %s r%u %s%d.%d.%d\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> intel_platform_name(fw_blobs[i - 1].p), fw_blobs[i - 1].rev,
> fw_blobs[i - 1].blob.legacy ? "L" : "v",
> fw_blobs[i - 1].blob.major,
More information about the dri-devel
mailing list