[Intel-xe] [PATCH 4/4] drm/xe/huc: Define HuC for MTL

Lucas De Marchi lucas.demarchi at intel.com
Fri Oct 13 19:39:17 UTC 2023


On Fri, Oct 13, 2023 at 11:28:28AM -0700, Daniele Ceraolo Spurio wrote:
>
>
>On 10/13/2023 11:14 AM, Lucas De Marchi wrote:
>>On Fri, Sep 15, 2023 at 03:34:58PM -0700, Daniele Ceraolo Spurio wrote:
>>>MTL uses a GSC-enabled binary. We expect all GSC-enabled binaries to be
>>>defined with a "_gsc", so we can check for that in the name to
>>>determine if the binary has the GSC headers or not.
>>>
>>>Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>>>Cc: Alan Previn <alan.previn.teres.alexis at intel.com>
>>>Cc: John Harrison <John.C.Harrison at Intel.com>
>>>---
>>>drivers/gpu/drm/xe/xe_uc_fw.c | 17 +++++++++++------
>>>1 file changed, 11 insertions(+), 6 deletions(-)
>>>
>>>diff --git a/drivers/gpu/drm/xe/xe_uc_fw.c 
>>>b/drivers/gpu/drm/xe/xe_uc_fw.c
>>>index f956457d0b11..4e43b16a61d5 100644
>>>--- a/drivers/gpu/drm/xe/xe_uc_fw.c
>>>+++ b/drivers/gpu/drm/xe/xe_uc_fw.c
>>>@@ -113,12 +113,13 @@ struct fw_blobs_by_type {
>>>    fw_def(ROCKETLAKE,    major_ver(i915,    guc,    tgl,    70, 
>>>5))        \
>>>    fw_def(TIGERLAKE,    major_ver(i915,    guc,    tgl,    70, 5))
>>>
>>>-#define XE_HUC_FIRMWARE_DEFS(fw_def, mmp_ver, no_ver)                \
>>>-    fw_def(DG1,        no_ver(i915,    huc,    dg1)) \
>>>-    fw_def(ALDERLAKE_P,    no_ver(i915,    huc, tgl))            \
>>>-    fw_def(ALDERLAKE_S,    no_ver(i915,    huc, tgl))            \
>>>-    fw_def(ROCKETLAKE,    no_ver(i915,    huc, tgl))            \
>>>-    fw_def(TIGERLAKE,    no_ver(i915,    huc,    tgl))
>>>+#define XE_HUC_FIRMWARE_DEFS(fw_def, mmp_ver, no_ver)        \
>>>+    fw_def(METEORLAKE,    no_ver(i915,    huc_gsc, mtl))        \
>>>+    fw_def(DG1,        no_ver(i915,    huc,        dg1)) \
>>>+    fw_def(ALDERLAKE_P,    no_ver(i915,    huc, tgl))        \
>>>+    fw_def(ALDERLAKE_S,    no_ver(i915,    huc, tgl))        \
>>>+    fw_def(ROCKETLAKE,    no_ver(i915,    huc, tgl))        \
>>>+    fw_def(TIGERLAKE,    no_ver(i915,    huc,        tgl))
>>>
>>>#define MAKE_FW_PATH(dir__, uc__, shortname__, version__)            \
>>>    __stringify(dir__) "/" __stringify(shortname__) "_" 
>>>__stringify(uc__) version__ ".bin"
>>>@@ -207,6 +208,10 @@ uc_fw_auto_select(struct xe_device *xe, 
>>>struct xe_uc_fw *uc_fw)
>>>            uc_fw->major_ver_wanted = entries[i].major;
>>>            uc_fw->minor_ver_wanted = entries[i].minor;
>>>            uc_fw->full_ver_required = entries[i].full_ver_required;
>>>+
>>>+            if (strstr(uc_fw->path, "gsc"))
>>>+                uc_fw->has_gsc_headers = true;
>>
>>can we rather get this from the headers / magic or whatever from
>>*inside* the firmware? Relying on the filename IMO is not a good
>>practice.  If we don't have a proper way to identify, then I think it
>>would be better a try/fail approach starting with MTL: try with gsc
>>headers starting on MTL and fallback on error.
>
>There is no "official" way of knowing what type of headers are on top 
>of the FW, but the GSC headers start with a marker, so I can check if 
>that's there and if it is not we can assume it is a CSS header. The 

that sounds like the normal way to identify file types... check a marker
and adapt the parser according to it.

>cons of this approach is that if the binary gets corrupted (which can 
>rarely happen) we might get an unclear error through the fallback.

I don't think there's much problem with that... if the file is
corrupt, returning an error in the gsc or ccs format handler would be
sufficient, it doesn't matter which.

>Would this work for you?

yes, it seems better.

thanks
Lucas De Marchi

>
>Daniele
>
>>
>>Lucas De Marchi
>>
>>>+
>>>            break;
>>>        }
>>>    }
>>>-- 
>>>2.41.0
>>>
>


More information about the Intel-xe mailing list