drm/xe/eustall: Add workaround 22016596838 which applies to PVC.
authorHarish Chegondi <harish.chegondi@intel.com>
Wed, 26 Feb 2025 01:47:12 +0000 (17:47 -0800)
committerAshutosh Dixit <ashutosh.dixit@intel.com>
Wed, 26 Feb 2025 19:31:06 +0000 (11:31 -0800)
Add PVC workaround 22016596838 that disables EU DOP gating
during EU stall sampling.

Signed-off-by: Harish Chegondi <harish.chegondi@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/062a12ed9e110fea420cd47cb70fb10136ee9132.1740533885.git.harish.chegondi@intel.com
drivers/gpu/drm/xe/xe_eu_stall.c
drivers/gpu/drm/xe/xe_wa_oob.rules

index 54a0d1f..88a92ba 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/types.h>
 
 #include <drm/drm_drv.h>
+#include <generated/xe_wa_oob.h>
 #include <uapi/drm/xe_drm.h>
 
 #include "xe_bo.h"
@@ -22,6 +23,7 @@
 #include "xe_observation.h"
 #include "xe_pm.h"
 #include "xe_trace.h"
+#include "xe_wa.h"
 
 #include "regs/xe_eu_stall_regs.h"
 #include "regs/xe_gt_regs.h"
@@ -642,6 +644,10 @@ static int xe_eu_stall_stream_enable(struct xe_eu_stall_data_stream *stream)
                return -ETIMEDOUT;
        }
 
+       if (XE_WA(gt, 22016596838))
+               xe_gt_mcr_multicast_write(gt, ROW_CHICKEN2,
+                                         _MASKED_BIT_ENABLE(DISABLE_DOP_GATING));
+
        for_each_dss_steering(xecore, gt, group, instance) {
                write_ptr_reg = xe_gt_mcr_unicast_read(gt, XEHPC_EUSTALL_REPORT, group, instance);
                /* Clear any drop bits set and not cleared in the previous session. */
@@ -793,6 +799,10 @@ static int xe_eu_stall_disable_locked(struct xe_eu_stall_data_stream *stream)
 
        cancel_delayed_work_sync(&stream->buf_poll_work);
 
+       if (XE_WA(gt, 22016596838))
+               xe_gt_mcr_multicast_write(gt, ROW_CHICKEN2,
+                                         _MASKED_BIT_DISABLE(DISABLE_DOP_GATING));
+
        xe_force_wake_put(gt_to_fw(gt), XE_FW_RENDER);
        xe_pm_runtime_put(gt_to_xe(gt));
 
index 1dd02a2..e0c5fa4 100644 (file)
@@ -5,6 +5,7 @@
 22011391025    PLATFORM(DG2)
 22012727170    SUBPLATFORM(DG2, G11)
 22012727685    SUBPLATFORM(DG2, G11)
+22016596838    PLATFORM(PVC)
 18020744125    PLATFORM(PVC)
 1509372804     PLATFORM(PVC), GRAPHICS_STEP(A0, C0)
 1409600907     GRAPHICS_VERSION_RANGE(1200, 1250)