]> www.infradead.org Git - users/hch/configfs.git/commitdiff
drm/xe/xe2: Enable Priority Mem Read
authorPallavi Mishra <pallavi.mishra@intel.com>
Wed, 31 Jul 2024 19:56:22 +0000 (01:26 +0530)
committerMatt Roper <matthew.d.roper@intel.com>
Thu, 1 Aug 2024 01:21:29 +0000 (18:21 -0700)
Enable feature to allow memory reads to take a priority memory path.
This will reduce latency on the read path, but may introduce read after
write (RAW) hazards as read and writes will no longer be ordered.

To avoid RAW hazards, SW can use the MI_MEM_FENCE command or any other
MI command that generates non posted memory writes.  This will ensure
data is coherent in memory prior to execution of commands which read
data from memory. RCS,BCS and CCS support this feature.

No pattern identified in KMD that could lead to a hazard.

v2: Modify commit message, enable priority mem read feature for media,
modify version range, modify bspec detail (Matt Roper)

v3: Rebase, fix cramped line-wrapping (jcavitt)

v4: Rebase

v5: Media does not support Priority Mem Read. Modify commit
to reflect the same.

v6: Rebase

Bspec: 60298, 60237, 60187, 60188

Signed-off-by: Pallavi Mishra <pallavi.mishra@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Acked-by: José Roberto de Souza <jose.souza@intel.com>
Acked-by: Carl Zhang <carl.zhang@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240731195622.1868401-1-pallavi.mishra@intel.com
drivers/gpu/drm/xe/regs/xe_engine_regs.h
drivers/gpu/drm/xe/xe_hw_engine.c

index c38db2a746140c01af32e78a483c4b49c466d96a..81b71903675e0d0907b9e83759eff31530f54f60 100644 (file)
 #define CSFE_CHICKEN1(base)                    XE_REG((base) + 0xd4, XE_REG_OPTION_MASKED)
 #define   GHWSP_CSB_REPORT_DIS                 REG_BIT(15)
 #define   PPHWSP_CSB_AND_TIMESTAMP_REPORT_DIS  REG_BIT(14)
+#define   CS_PRIORITY_MEM_READ                 REG_BIT(7)
 
 #define FF_SLICE_CS_CHICKEN1(base)             XE_REG((base) + 0xe0, XE_REG_OPTION_MASKED)
 #define   FFSC_PERCTX_PREEMPT_CTRL             REG_BIT(14)
index 00ace5fcc284e4870b22f2935960d4fec9dd4054..403eb1d2d20ac76e3a819230a8cd1432fda98a67 100644 (file)
@@ -428,6 +428,12 @@ hw_engine_setup_default_state(struct xe_hw_engine *hwe)
                                           0xA,
                                           XE_RTP_ACTION_FLAG(ENGINE_BASE)))
                },
+               /* Enable Priority Mem Read */
+               { XE_RTP_NAME("Priority_Mem_Read"),
+                 XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, XE_RTP_END_VERSION_UNDEFINED)),
+                 XE_RTP_ACTIONS(SET(CSFE_CHICKEN1(0), CS_PRIORITY_MEM_READ,
+                                    XE_RTP_ACTION_FLAG(ENGINE_BASE)))
+               },
                {}
        };