diff options
| -rw-r--r-- | drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/xe/xe_gsc.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/xe/xe_uc_fw.c | 10 |
3 files changed, 15 insertions, 10 deletions
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c index 07acae121aa7..ed1f65f5ef4d 100644 --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c @@ -39,7 +39,7 @@ static bool intel_hdcp_gsc_check_status(struct drm_device *drm) struct xe_gt *gt = tile->media_gt; struct xe_gsc *gsc = >->uc.gsc; - if (!gsc || !xe_uc_fw_is_enabled(&gsc->fw)) { + if (!gsc || !xe_uc_fw_is_available(&gsc->fw)) { drm_dbg_kms(&xe->drm, "GSC Components not ready for HDCP2.x\n"); return false; diff --git a/drivers/gpu/drm/xe/xe_gsc.c b/drivers/gpu/drm/xe/xe_gsc.c index a3157b0fe791..e5c234f3d795 100644 --- a/drivers/gpu/drm/xe/xe_gsc.c +++ b/drivers/gpu/drm/xe/xe_gsc.c @@ -414,15 +414,16 @@ int xe_gsc_init(struct xe_gsc *gsc) } /* - * Some platforms can have GuC but not GSC. That would cause - * xe_uc_fw_init(gsc) to return a "not supported" failure code and abort - * all firmware loading. So check for GSC being enabled before - * propagating the failure back up. That way the higher level will keep - * going and load GuC as appropriate. + * Starting from BMG the GSC is no longer needed for MC6 entry, so the + * only missing features if the FW is lacking would be the content + * protection ones. This is acceptable, so we allow the driver load to + * continue if the GSC FW is missing. */ ret = xe_uc_fw_init(&gsc->fw); if (!xe_uc_fw_is_enabled(&gsc->fw)) return 0; + else if (gt_to_xe(gt)->info.platform >= XE_BATTLEMAGE && !xe_uc_fw_is_available(&gsc->fw)) + return 0; else if (ret) goto out; @@ -614,7 +615,7 @@ void xe_gsc_print_info(struct xe_gsc *gsc, struct drm_printer *p) drm_printf(p, "\tfound security version %u\n", gsc->security_version); - if (!xe_uc_fw_is_enabled(&gsc->fw)) + if (!xe_uc_fw_is_available(&gsc->fw)) return; CLASS(xe_force_wake, fw_ref)(gt_to_fw(gt), XE_FW_GSC); diff --git a/drivers/gpu/drm/xe/xe_uc_fw.c b/drivers/gpu/drm/xe/xe_uc_fw.c index 85544c214274..5d10a6c34604 100644 --- a/drivers/gpu/drm/xe/xe_uc_fw.c +++ b/drivers/gpu/drm/xe/xe_uc_fw.c @@ -739,7 +739,7 @@ static int uc_fw_request(struct xe_uc_fw *uc_fw, const struct firmware **firmwar return 0; } - err = request_firmware(&fw, uc_fw->path, dev); + err = firmware_request_nowarn(&fw, uc_fw->path, dev); if (err) goto fail; @@ -768,8 +768,12 @@ fail: XE_UC_FIRMWARE_MISSING : XE_UC_FIRMWARE_ERROR); - xe_gt_notice(gt, "%s firmware %s: fetch failed with error %pe\n", - xe_uc_fw_type_repr(uc_fw->type), uc_fw->path, ERR_PTR(err)); + if (err == -ENOENT) + xe_gt_info(gt, "%s firmware %s not found\n", + xe_uc_fw_type_repr(uc_fw->type), uc_fw->path); + else + xe_gt_notice(gt, "%s firmware %s: fetch failed with error %pe\n", + xe_uc_fw_type_repr(uc_fw->type), uc_fw->path, ERR_PTR(err)); xe_gt_info(gt, "%s firmware(s) can be downloaded from %s\n", xe_uc_fw_type_repr(uc_fw->type), XE_UC_FIRMWARE_URL); |
