drm/xe/bmg: Update Wa_14022085890
authorVinay Belgaumkar <vinay.belgaumkar@intel.com>
Thu, 12 Jun 2025 07:09:02 +0000 (00:09 -0700)
committerLucas De Marchi <lucas.demarchi@intel.com>
Tue, 1 Jul 2025 20:55:09 +0000 (13:55 -0700)
Set GT min frequency to 1200Mhz once driver load is complete.

v2: Review comments (Rodrigo)
v3: Apply Wa earlier so user_req_min is not clobbered.
v4: Apply to all GTs (Lucas)

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Link: https://lore.kernel.org/r/20250612-wa-14022085890-v4-3-94ba5dcc1e30@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
(cherry picked from commit bdde16c9ac5cb56ad2ee19792222fa1853577af7)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_guc_pc.c
drivers/gpu/drm/xe/xe_wa_oob.rules

index 9f029acbd257228267937441527c4f711fb537f0..9d9d0e815feaa67c74a572d62d7221bff9991fc1 100644 (file)
@@ -52,6 +52,7 @@
 
 #define LNL_MERT_FREQ_CAP      800
 #define BMG_MERT_FREQ_CAP      2133
+#define BMG_MIN_FREQ           1200
 
 #define SLPC_RESET_TIMEOUT_MS 5 /* roughly 5ms, but no need for precision */
 #define SLPC_RESET_EXTENDED_TIMEOUT_MS 1000 /* To be used only at pc_start */
@@ -832,6 +833,7 @@ void xe_guc_pc_init_early(struct xe_guc_pc *pc)
 
 static int pc_adjust_freq_bounds(struct xe_guc_pc *pc)
 {
+       struct xe_tile *tile = gt_to_tile(pc_to_gt(pc));
        int ret;
 
        lockdep_assert_held(&pc->freq_lock);
@@ -858,6 +860,9 @@ static int pc_adjust_freq_bounds(struct xe_guc_pc *pc)
        if (pc_get_min_freq(pc) > pc->rp0_freq)
                ret = pc_set_min_freq(pc, pc->rp0_freq);
 
+       if (XE_WA(tile->primary_gt, 14022085890))
+               ret = pc_set_min_freq(pc, max(BMG_MIN_FREQ, pc_get_min_freq(pc)));
+
 out:
        return ret;
 }
index 9efc5accd43d1c3ca8a55a62af22b74c414b93d1..320766f6c5dffb61738f512649f28d02f369dc0d 100644 (file)
@@ -59,3 +59,7 @@ no_media_l3   MEDIA_VERSION(3000)
                MEDIA_VERSION_RANGE(1301, 3000)
 16026508708    GRAPHICS_VERSION_RANGE(1200, 3001)
                MEDIA_VERSION_RANGE(1300, 3000)
+
+# SoC workaround - currently applies to all platforms with the following
+# primary GT GMDID
+14022085890    GRAPHICS_VERSION(2001)