drm/xe: Avoid cryptic message when there's no GuC definition
authorLucas De Marchi <lucas.demarchi@intel.com>
Thu, 1 Feb 2024 22:47:24 +0000 (14:47 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Wed, 7 Feb 2024 23:08:21 +0000 (15:08 -0800)
If there's no GuC firmware entry in the table and the user didn't pass
an override path, the error message is very cryptic: xe will simply try
to continue and then fail when submitting the default context:

xe 0000:00:02.0: [drm:xe_pci_probe [xe]] XE_LUNARLAKE  64b0:0001 dgfx:0 gfx:Xe2_LPG (20.04) media:Xe2_LPM (20.00) display:no dma_m_s:46 tc:1 gscfi:0
...
xe: probe of 0000:00:02.0 failed with error -22

Add an explicit error message and bail out:

xe 0000:00:02.0: [drm:xe_pci_probe [xe]] XE_LUNARLAKE  64b0:0001 dgfx:0 gfx:Xe2_LPG (20.04) media:Xe2_LPM (20.00) display:no dma_m_s:46 tc:1 gscfi:0
xe 0000:00:02.0: [drm] *ERROR* No GuC firmware defined for platform
xe 0000:00:02.0: [drm] *ERROR* GuC init failed with -2
...
xe: probe of 0000:00:02.0 failed with error -2

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Francois Dugast <francois.dugast@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240201224724.551130-3-lucas.demarchi@intel.com
drivers/gpu/drm/xe/xe_uc_fw.c

index a8b203ac7c81412faae9ad1921ed09cf8e920a9e..a9d25b3fa67cfc748b7089cf4852e45a8e4a5e04 100644 (file)
@@ -663,8 +663,13 @@ static int uc_fw_request(struct xe_uc_fw *uc_fw, const struct firmware **firmwar
                               XE_UC_FIRMWARE_SELECTED :
                               XE_UC_FIRMWARE_NOT_SUPPORTED);
 
-       if (!xe_uc_fw_is_supported(uc_fw))
+       if (!xe_uc_fw_is_supported(uc_fw)) {
+               if (uc_fw->type == XE_UC_FW_TYPE_GUC) {
+                       drm_err(&xe->drm, "No GuC firmware defined for platform\n");
+                       return -ENOENT;
+               }
                return 0;
+       }
 
        /* an empty path means the firmware is disabled */
        if (!xe_device_uc_enabled(xe) || !(*uc_fw->path)) {