Commit 2e08feeb authored by Brian Nguyen's avatar Brian Nguyen Committed by Matthew Brost
Browse files

drm/xe: Add page reclamation related stats



Add page reclaim list (PRL) related stats to GT stats to assist in
debugging and tuning of page reclaim related actions. Include counters
of page sizes added to PRL and if PRL action is issued.

v2:
 - Add PRL_ABORTED_COUNT stats and corresponding changes. (Matthew B)

Signed-off-by: default avatarBrian Nguyen <brian3.nguyen@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260107010447.4125005-10-brian3.nguyen@intel.com
parent 83b914f9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -76,6 +76,11 @@ static const char *const stat_description[__XE_GT_STATS_NUM_IDS] = {
		     "hw_engine_group_suspend_lr_queue_us"),
	DEF_STAT_STR(HW_ENGINE_GROUP_WAIT_DMA_QUEUE_US,
		     "hw_engine_group_wait_dma_queue_us"),
	DEF_STAT_STR(PRL_4K_ENTRY_COUNT, "prl_4k_entry_count"),
	DEF_STAT_STR(PRL_64K_ENTRY_COUNT, "prl_64k_entry_count"),
	DEF_STAT_STR(PRL_2M_ENTRY_COUNT, "prl_2m_entry_count"),
	DEF_STAT_STR(PRL_ISSUED_COUNT, "prl_issued_count"),
	DEF_STAT_STR(PRL_ABORTED_COUNT, "prl_aborted_count"),
};

/**
+5 −0
Original line number Diff line number Diff line
@@ -49,6 +49,11 @@ enum xe_gt_stats_id {
	XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_COUNT,
	XE_GT_STATS_ID_HW_ENGINE_GROUP_SUSPEND_LR_QUEUE_US,
	XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_US,
	XE_GT_STATS_ID_PRL_4K_ENTRY_COUNT,
	XE_GT_STATS_ID_PRL_64K_ENTRY_COUNT,
	XE_GT_STATS_ID_PRL_2M_ENTRY_COUNT,
	XE_GT_STATS_ID_PRL_ISSUED_COUNT,
	XE_GT_STATS_ID_PRL_ABORTED_COUNT,
	/* must be the last entry */
	__XE_GT_STATS_NUM_IDS,
};
+3 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ static int send_tlb_inval_ggtt(struct xe_tlb_inval *tlb_inval, u32 seqno)
static int send_page_reclaim(struct xe_guc *guc, u32 seqno,
			     u64 gpu_addr)
{
	struct xe_gt *gt = guc_to_gt(guc);
	u32 action[] = {
		XE_GUC_ACTION_PAGE_RECLAMATION,
		seqno,
@@ -104,6 +105,8 @@ static int send_page_reclaim(struct xe_guc *guc, u32 seqno,
		upper_32_bits(gpu_addr),
	};

	xe_gt_stats_incr(gt, XE_GT_STATS_ID_PRL_ISSUED_COUNT, 1);

	return xe_guc_ct_send(&guc->ct, action, ARRAY_SIZE(action),
			      G2H_LEN_DW_PAGE_RECLAMATION, 1);
}
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@

#include "regs/xe_gt_regs.h"
#include "xe_assert.h"
#include "xe_gt_stats.h"
#include "xe_macros.h"
#include "xe_mmio.h"
#include "xe_pat.h"
+1 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ void xe_page_reclaim_list_invalidate(struct xe_page_reclaim_list *prl);
		struct xe_page_reclaim_list *__prl = (prl);				\
											\
		xe_page_reclaim_list_invalidate(__prl);					\
		xe_gt_stats_incr(__gt, XE_GT_STATS_ID_PRL_ABORTED_COUNT, 1);		\
		vm_dbg(&gt_to_xe(__gt)->drm, "PRL aborted: " fmt, ##__VA_ARGS__);	\
	} while (0)

Loading