]> git.ipfire.org Git - thirdparty/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)
committerAshutosh Dixit <ashutosh.dixit@intel.com>
Wed, 11 Sep 2024 18:41:35 +0000 (11:41 -0700)
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
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 63286ed8457fa35d0dea3b05e3ff763a5e40f95c..0369cc016f6abdd7dcbfc3ecd6776658466819b8 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);
 }