Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/xe/gsc: Track the platform in the compatibility version

The GSC compatibility version number is reset for each new platform. To
indicate this, the version includes a number that identifies the
platform (102 = MTL, 104 = LNL); this matches what happens for the
release version, where the major number also identifies a platform.

To make it clearer in our logs that the compatibility version is
specific to the platform, it is useful to include this platform number.
However, given that our binary names already include the platform, it is
not necessary to add this extra number there.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Reviewed-by: Julia Filipchuk <julia.filipchuk@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240828215158.2743994-4-daniele.ceraolospurio@intel.com

+13 -7
+4 -3
drivers/gpu/drm/xe/xe_gsc.c
··· 165 165 return err; 166 166 } 167 167 168 - compat->major = version_query_rd(xe, &bo->vmap, rd_offset, compat_major); 169 - compat->minor = version_query_rd(xe, &bo->vmap, rd_offset, compat_minor); 168 + compat->major = version_query_rd(xe, &bo->vmap, rd_offset, proj_major); 169 + compat->minor = version_query_rd(xe, &bo->vmap, rd_offset, compat_major); 170 + compat->patch = version_query_rd(xe, &bo->vmap, rd_offset, compat_minor); 170 171 171 - xe_gt_info(gt, "found GSC cv%u.%u\n", compat->major, compat->minor); 172 + xe_gt_info(gt, "found GSC cv%u.%u.%u\n", compat->major, compat->minor, compat->patch); 172 173 173 174 out_bo: 174 175 xe_bo_unpin_map_no_vm(bo);
+9 -4
drivers/gpu/drm/xe/xe_uc_fw.c
··· 129 129 130 130 /* for the GSC FW we match the compatibility version and not the release one */ 131 131 #define XE_GSC_FIRMWARE_DEFS(fw_def, major_ver) \ 132 - fw_def(LUNARLAKE, major_ver(xe, gsc, lnl, 1, 0, 0)) \ 133 - fw_def(METEORLAKE, major_ver(i915, gsc, mtl, 1, 0, 0)) 132 + fw_def(LUNARLAKE, major_ver(xe, gsc, lnl, 104, 1, 0)) \ 133 + fw_def(METEORLAKE, major_ver(i915, gsc, mtl, 102, 1, 0)) 134 134 135 135 #define MAKE_FW_PATH(dir__, uc__, shortname__, version__) \ 136 136 __stringify(dir__) "/" __stringify(shortname__) "_" __stringify(uc__) version__ ".bin" ··· 141 141 MAKE_FW_PATH(dir_, uc_, shortname_, "_" __stringify(a)) 142 142 #define fw_filename_no_ver(dir_, uc_, shortname_) \ 143 143 MAKE_FW_PATH(dir_, uc_, shortname_, "") 144 + #define fw_filename_gsc(dir_, uc_, shortname_, a, b, c) \ 145 + MAKE_FW_PATH(dir_, uc_, shortname_, "_" __stringify(b)) 144 146 145 147 #define uc_fw_entry_mmp_ver(dir_, uc_, shortname_, a, b, c) \ 146 148 { fw_filename_mmp_ver(dir_, uc_, shortname_, a, b, c), \ ··· 153 151 #define uc_fw_entry_no_ver(dir_, uc_, shortname_) \ 154 152 { fw_filename_no_ver(dir_, uc_, shortname_), \ 155 153 0, 0 } 154 + #define uc_fw_entry_gsc(dir_, uc_, shortname_, a, b, c) \ 155 + { fw_filename_gsc(dir_, uc_, shortname_, a, b, c), \ 156 + a, b, c } 156 157 157 158 /* All blobs need to be declared via MODULE_FIRMWARE() */ 158 159 #define XE_UC_MODULE_FIRMWARE(platform__, fw_filename) \ ··· 171 166 fw_filename_mmp_ver, fw_filename_major_ver) 172 167 XE_HUC_FIRMWARE_DEFS(XE_UC_MODULE_FIRMWARE, 173 168 fw_filename_mmp_ver, fw_filename_no_ver) 174 - XE_GSC_FIRMWARE_DEFS(XE_UC_MODULE_FIRMWARE, fw_filename_major_ver) 169 + XE_GSC_FIRMWARE_DEFS(XE_UC_MODULE_FIRMWARE, fw_filename_gsc) 175 170 176 171 static struct xe_gt * 177 172 __uc_fw_to_gt(struct xe_uc_fw *uc_fw, enum xe_uc_fw_type type) ··· 214 209 uc_fw_entry_no_ver) 215 210 }; 216 211 static const struct uc_fw_entry entries_gsc[] = { 217 - XE_GSC_FIRMWARE_DEFS(XE_UC_FW_ENTRY, uc_fw_entry_major_ver) 212 + XE_GSC_FIRMWARE_DEFS(XE_UC_FW_ENTRY, uc_fw_entry_gsc) 218 213 }; 219 214 static const struct fw_blobs_by_type blobs_all[XE_UC_FW_NUM_TYPES] = { 220 215 [XE_UC_FW_TYPE_GUC] = { entries_guc, ARRAY_SIZE(entries_guc) },