]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/xe: fix WA 14018094691
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Wed, 7 Aug 2024 23:53:32 +0000 (16:53 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Mon, 19 Aug 2024 17:34:05 +0000 (13:34 -0400)
This WA is applied while initializing the media GT, but it a primary
GT WA (because it modifies a register on the primary GT), so the XE_WA
macro is returning false even when the WA should be applied.
Fix this by using the primary GT in the macro.

Note that this WA only applies to PXP and we don't yet support that in
Xe, so there are no negative effects to this bug, which is why we didn't
see any errors in testing.

v2: use the primary GT in the macro instead of marking the WA as
platform-wide (Lucas, Matt).

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240807235333.1370915-1-daniele.ceraolospurio@intel.com
(cherry picked from commit e422c0bfd9e47e399e86bcc483f49d8b54064fc2)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gsc.c

index f8239a13fa2b882f2fb8245f88abb2c53ad3d9b2..77ce44e845c5f059b374678b53dfa5755f8aa4ae 100644 (file)
@@ -260,7 +260,7 @@ static int gsc_upload_and_init(struct xe_gsc *gsc)
        struct xe_tile *tile = gt_to_tile(gt);
        int ret;
 
-       if (XE_WA(gt, 14018094691)) {
+       if (XE_WA(tile->primary_gt, 14018094691)) {
                ret = xe_force_wake_get(gt_to_fw(tile->primary_gt), XE_FORCEWAKE_ALL);
 
                /*
@@ -278,7 +278,7 @@ static int gsc_upload_and_init(struct xe_gsc *gsc)
 
        ret = gsc_upload(gsc);
 
-       if (XE_WA(gt, 14018094691))
+       if (XE_WA(tile->primary_gt, 14018094691))
                xe_force_wake_put(gt_to_fw(tile->primary_gt), XE_FORCEWAKE_ALL);
 
        if (ret)