drm/xe/huc: HuC is not supported on GTs that don't have video engines
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Wed, 25 Oct 2023 17:57:43 +0000 (10:57 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:43:23 +0000 (11:43 -0500)
On MTL-style multi-gt platforms, the HuC is only available on the media
GT, so we need to consider it as not supported on the render GT.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_huc.c

index 293403d16f25c434eddd3f1a2778afaa59d41baf..386efa180c1c305fa8b5e9a103382890e84fbd07 100644 (file)
@@ -35,10 +35,19 @@ huc_to_guc(struct xe_huc *huc)
 
 int xe_huc_init(struct xe_huc *huc)
 {
-       struct xe_device *xe = huc_to_xe(huc);
+       struct xe_gt *gt = huc_to_gt(huc);
+       struct xe_tile *tile = gt_to_tile(gt);
+       struct xe_device *xe = gt_to_xe(gt);
        int ret;
 
        huc->fw.type = XE_UC_FW_TYPE_HUC;
+
+       /* On platforms with a media GT the HuC is only available there */
+       if (tile->media_gt && (gt != tile->media_gt)) {
+               xe_uc_fw_change_status(&huc->fw, XE_UC_FIRMWARE_NOT_SUPPORTED);
+               return 0;
+       }
+
        ret = xe_uc_fw_init(&huc->fw);
        if (ret)
                goto out;