]> www.infradead.org Git - users/hch/configfs.git/commitdiff
drm/xe/guc: Bump minimum required GuC version to v70.29.2
authorJulia Filipchuk <julia.filipchuk@intel.com>
Fri, 2 Aug 2024 22:21:27 +0000 (15:21 -0700)
committerDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Tue, 6 Aug 2024 21:39:29 +0000 (14:39 -0700)
The VF API version for this release is 1.13.4.

Bumping the minimum required GuC version just before force-probe
removal allows us to set a baseline for what API features are expected
to be available. I.e., at this point there is no need for any version
checking in the code before using a feature. Of course, if/when the
API is extended in future GuC releases, those new features will need
API version checks in the code.

Bump the recommended GuC versions to match.

Also add numerical comparison helpers to simplify the version number
checks.

v2: Reword commit message and make comparison helpers GuC specific -
review feedback from Daniele, done by JohnH

Signed-off-by: Julia Filipchuk <julia.filipchuk@intel.com>
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240802222129.3976212-3-John.C.Harrison@Intel.com
drivers/gpu/drm/xe/xe_guc.h
drivers/gpu/drm/xe/xe_uc_fw.c

index e0bbf98f849ddde6768d6c7e70197327b72d82bd..c3e6b51f7a09ce7a147a3010d70d77b0c9fe0e0d 100644 (file)
 #include "xe_hw_engine_types.h"
 #include "xe_macros.h"
 
+/*
+ * GuC version number components are defined to be only 8-bit size,
+ * so converting to a 32bit 8.8.8 integer allows simple (and safe)
+ * numerical comparisons.
+ */
+#define MAKE_GUC_VER(maj, min, pat)    (((maj) << 16) | ((min) << 8) | (pat))
+#define MAKE_GUC_VER_STRUCT(ver)       MAKE_GUC_VER((ver).major, (ver).minor, (ver).patch)
+#define GUC_SUBMIT_VER(guc)            MAKE_VER_STRUCT((guc)->fw.versions.found[XE_UC_FW_VER_COMPATIBILITY])
+#define GUC_FIRMWARE_VER(guc)          MAKE_VER_STRUCT((guc)->fw.versions.found[XE_UC_FW_VER_RELEASE])
+
 struct drm_printer;
 
 void xe_guc_comm_init_early(struct xe_guc *guc);
index 5b70d23724c4b7cdfc94e685a579c834fd953893..6bd1962bce36a0bb293fe8bd424f6f2af506e0d6 100644 (file)
@@ -15,6 +15,7 @@
 #include "xe_gsc.h"
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
+#include "xe_guc.h"
 #include "xe_map.h"
 #include "xe_mmio.h"
 #include "xe_module.h"
@@ -105,15 +106,15 @@ struct fw_blobs_by_type {
 };
 
 #define XE_GUC_FIRMWARE_DEFS(fw_def, mmp_ver, major_ver)                       \
-       fw_def(LUNARLAKE,       major_ver(xe,   guc,    lnl,    70, 19, 2))     \
-       fw_def(METEORLAKE,      major_ver(i915, guc,    mtl,    70, 19, 2))     \
-       fw_def(DG2,             major_ver(i915, guc,    dg2,    70, 19, 2))     \
-       fw_def(DG1,             major_ver(i915, guc,    dg1,    70, 19, 2))     \
-       fw_def(ALDERLAKE_N,     major_ver(i915, guc,    tgl,    70, 19, 2))     \
-       fw_def(ALDERLAKE_P,     major_ver(i915, guc,    adlp,   70, 19, 2))     \
-       fw_def(ALDERLAKE_S,     major_ver(i915, guc,    tgl,    70, 19, 2))     \
-       fw_def(ROCKETLAKE,      major_ver(i915, guc,    tgl,    70, 19, 2))     \
-       fw_def(TIGERLAKE,       major_ver(i915, guc,    tgl,    70, 19, 2))
+       fw_def(LUNARLAKE,       major_ver(xe,   guc,    lnl,    70, 29, 2))     \
+       fw_def(METEORLAKE,      major_ver(i915, guc,    mtl,    70, 29, 2))     \
+       fw_def(DG2,             major_ver(i915, guc,    dg2,    70, 29, 2))     \
+       fw_def(DG1,             major_ver(i915, guc,    dg1,    70, 29, 2))     \
+       fw_def(ALDERLAKE_N,     major_ver(i915, guc,    tgl,    70, 29, 2))     \
+       fw_def(ALDERLAKE_P,     major_ver(i915, guc,    adlp,   70, 29, 2))     \
+       fw_def(ALDERLAKE_S,     major_ver(i915, guc,    tgl,    70, 29, 2))     \
+       fw_def(ROCKETLAKE,      major_ver(i915, guc,    tgl,    70, 29, 2))     \
+       fw_def(TIGERLAKE,       major_ver(i915, guc,    tgl,    70, 29, 2))
 
 #define XE_HUC_FIRMWARE_DEFS(fw_def, mmp_ver, no_ver)          \
        fw_def(BATTLEMAGE,      no_ver(xe,      huc,            bmg))           \
@@ -309,10 +310,10 @@ static int guc_read_css_info(struct xe_uc_fw *uc_fw, struct uc_css_header *css)
 
        xe_gt_assert(gt, uc_fw->type == XE_UC_FW_TYPE_GUC);
 
-       /* We don't support GuC releases older than 70.19 */
-       if (release->major < 70 || (release->major == 70 && release->minor < 19)) {
-               xe_gt_err(gt, "Unsupported GuC v%u.%u! v70.19 or newer is required\n",
-                         release->major, release->minor);
+       /* We don't support GuC releases older than 70.29.2 */
+       if (MAKE_GUC_VER_STRUCT(*release) < MAKE_GUC_VER(70, 29, 2)) {
+               xe_gt_err(gt, "Unsupported GuC v%u.%u.%u! v70.29.2 or newer is required\n",
+                         release->major, release->minor, release->patch);
                return -EINVAL;
        }