Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/xe/xe3p: Dump CSMQDEBUG register

The CSMQDEBUG is useful for the development of MQ feature. Start dumping
the debug register.

Cc: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Wang Xin <x.wang@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20251016-xe3p-v3-10-3dd173a3097a@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

authored by

Wang Xin and committed by
Lucas De Marchi
7626cec6 ccccbc53

+29 -1
+2
drivers/gpu/drm/xe/regs/xe_engine_regs.h
··· 155 155 #define GFX_DISABLE_LEGACY_MODE REG_BIT(3) 156 156 #define GFX_MSIX_INTERRUPT_ENABLE REG_BIT(13) 157 157 158 + #define RING_CSMQDEBUG(base) XE_REG((base) + 0x2b0) 159 + 158 160 #define RING_TIMESTAMP(base) XE_REG((base) + 0x358) 159 161 160 162 #define RING_TIMESTAMP_UDW(base) XE_REG((base) + 0x358 + 4)
+27 -1
drivers/gpu/drm/xe/xe_guc_capture.c
··· 150 150 { SFC_DONE(2), 0, 0, 0, 0, "SFC_DONE[2]"}, \ 151 151 { SFC_DONE(3), 0, 0, 0, 0, "SFC_DONE[3]"} 152 152 153 + #define XE3P_BASE_ENGINE_INSTANCE \ 154 + { RING_CSMQDEBUG(0), REG_32BIT, 0, 0, 0, "CSMQDEBUG"} 155 + 153 156 /* XE_LP Global */ 154 157 static const struct __guc_mmio_reg_descr xe_lp_global_regs[] = { 155 158 COMMON_XELP_BASE_GLOBAL, ··· 197 194 /* XE_LP - GSC Per-Engine-Instance */ 198 195 static const struct __guc_mmio_reg_descr xe_lp_gsc_inst_regs[] = { 199 196 COMMON_BASE_ENGINE_INSTANCE, 197 + }; 198 + 199 + /* Render / Compute Per-Engine-Instance */ 200 + static const struct __guc_mmio_reg_descr xe3p_rc_inst_regs[] = { 201 + COMMON_BASE_ENGINE_INSTANCE, 202 + XE3P_BASE_ENGINE_INSTANCE, 200 203 }; 201 204 202 205 /* ··· 255 246 {} 256 247 }; 257 248 249 + /* List of lists for Xe3p and beyond */ 250 + static const struct __guc_mmio_reg_descr_group xe3p_lists[] = { 251 + MAKE_REGLIST(xe_lp_global_regs, PF, GLOBAL, 0), 252 + MAKE_REGLIST(xe_hpg_rc_class_regs, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE), 253 + MAKE_REGLIST(xe3p_rc_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE), 254 + MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_VIDEO), 255 + MAKE_REGLIST(xe_vd_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_VIDEO), 256 + MAKE_REGLIST(xe_vec_class_regs, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE), 257 + MAKE_REGLIST(xe_vec_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE), 258 + MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_BLITTER), 259 + MAKE_REGLIST(xe_blt_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_BLITTER), 260 + MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_GSC_OTHER), 261 + MAKE_REGLIST(xe_lp_gsc_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_GSC_OTHER), 262 + {} 263 + }; 258 264 static const char * const capture_list_type_names[] = { 259 265 "Global", 260 266 "Class", ··· 317 293 static const struct __guc_mmio_reg_descr_group * 318 294 guc_capture_get_device_reglist(struct xe_device *xe) 319 295 { 320 - if (GRAPHICS_VERx100(xe) >= 1255) 296 + if (GRAPHICS_VER(xe) >= 35) 297 + return xe3p_lists; 298 + else if (GRAPHICS_VERx100(xe) >= 1255) 321 299 return xe_hpg_lists; 322 300 else 323 301 return xe_lp_lists;