]> git.dujemihanovic.xyz Git - linux.git/commitdiff
drm/xe/oa: Enable Xe2+ PES disaggregation
authorAshutosh Dixit <ashutosh.dixit@intel.com>
Mon, 9 Sep 2024 16:59:33 +0000 (09:59 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 12 Sep 2024 14:07:15 +0000 (10:07 -0400)
Enable Xe2+ PES disaggregation (for OAG) to retrieve disaggregated metrics
when disaggregated data is needed. Userspace can select whether to receive
aggregated or disaggregated metrics via the particular OA configuration it
uses (programmed via DRM_XE_OBSERVATION_OP_ADD_CONFIG).

Bspec: 61101
Fixes: e936f885f1e9 ("drm/xe/oa/uapi: Expose OA stream fd")
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240909165933.2638765-1-ashutosh.dixit@intel.com
Cc: stable@vger.kernel.org
(cherry picked from commit fb2551a0e93897aec7fb3d4f473ebc06b146d160)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/regs/xe_oa_regs.h
drivers/gpu/drm/xe/xe_oa.c

index 1189f5a540a822de4211ab7358e9d0c386aa2e8b..a9b0091cb7ee118074b64cb60b0c9a4ad46acf2b 100644 (file)
@@ -52,6 +52,7 @@
 #define  OAG_OABUFFER_MEMORY_SELECT            REG_BIT(0) /* 0: PPGTT, 1: GGTT */
 
 #define OAG_OACONTROL                          XE_REG(0xdaf4)
+#define  OAG_OACONTROL_OA_PES_DISAG_EN         REG_GENMASK(27, 22)
 #define  OAG_OACONTROL_OA_CCS_SELECT_MASK      REG_GENMASK(18, 16)
 #define  OAG_OACONTROL_OA_COUNTER_SEL_MASK     REG_GENMASK(4, 2)
 #define  OAG_OACONTROL_OA_COUNTER_ENABLE       REG_BIT(0)
index 6d69f751bf78d28907be5b3a0b812f4e44e8e3c9..22f14eba2c6346375c034a0182d90f33aa95493c 100644 (file)
@@ -440,6 +440,10 @@ static void xe_oa_enable(struct xe_oa_stream *stream)
        val = __format_to_oactrl(format, regs->oa_ctrl_counter_select_mask) |
                __oa_ccs_select(stream) | OAG_OACONTROL_OA_COUNTER_ENABLE;
 
+       if (GRAPHICS_VER(stream->oa->xe) >= 20 &&
+           stream->hwe->oa_unit->type == DRM_XE_OA_UNIT_TYPE_OAG)
+               val |= OAG_OACONTROL_OA_PES_DISAG_EN;
+
        xe_mmio_write32(stream->gt, regs->oa_ctrl, val);
 }