mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/xe: highlight reserved PAT entries in dump output
Enhance the PAT table dump by marking reserved entries with an asterisk (*) for improved readability and debugging. V2: Added a note in the "PAT table" header explaining the meaning of the asterisk(*) to improve clarity for readers. (Matt Roper) V3: Introduced a valid field in struct xe_pat_table_entry to explicitly track whether an entry is valid or reserved, avoiding reliance on coh_mode == 0. (Matt Roper) Signed-off-by: Xin Wang <x.wang@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patch.msgid.link/20251030221734.1058350-1-x.wang@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
This commit is contained in:
@@ -115,7 +115,8 @@ static const struct xe_pat_table_entry xelpg_pat_table[] = {
|
||||
REG_FIELD_PREP(XE2_L4_POLICY, l4_policy) | \
|
||||
REG_FIELD_PREP(XE2_COH_MODE, __coh_mode), \
|
||||
.coh_mode = (BUILD_BUG_ON_ZERO(__coh_mode && comp_en) || __coh_mode) ? \
|
||||
XE_COH_AT_LEAST_1WAY : XE_COH_NONE \
|
||||
XE_COH_AT_LEAST_1WAY : XE_COH_NONE, \
|
||||
.valid = 1 \
|
||||
}
|
||||
|
||||
static const struct xe_pat_table_entry xe2_pat_table[] = {
|
||||
@@ -368,7 +369,7 @@ static int xe2_dump(struct xe_gt *gt, struct drm_printer *p)
|
||||
if (!fw_ref)
|
||||
return -ETIMEDOUT;
|
||||
|
||||
drm_printf(p, "PAT table:\n");
|
||||
drm_printf(p, "PAT table: (* = reserved entry)\n");
|
||||
|
||||
for (i = 0; i < xe->pat.n_entries; i++) {
|
||||
if (xe_gt_is_media_type(gt))
|
||||
@@ -376,14 +377,14 @@ static int xe2_dump(struct xe_gt *gt, struct drm_printer *p)
|
||||
else
|
||||
pat = xe_gt_mcr_unicast_read_any(gt, XE_REG_MCR(_PAT_INDEX(i)));
|
||||
|
||||
drm_printf(p, "PAT[%2d] = [ %u, %u, %u, %u, %u, %u ] (%#8x)\n", i,
|
||||
drm_printf(p, "PAT[%2d] = [ %u, %u, %u, %u, %u, %u ] (%#8x)%s\n", i,
|
||||
!!(pat & XE2_NO_PROMOTE),
|
||||
!!(pat & XE2_COMP_EN),
|
||||
REG_FIELD_GET(XE2_L3_CLOS, pat),
|
||||
REG_FIELD_GET(XE2_L3_POLICY, pat),
|
||||
REG_FIELD_GET(XE2_L4_POLICY, pat),
|
||||
REG_FIELD_GET(XE2_COH_MODE, pat),
|
||||
pat);
|
||||
pat, xe->pat.table[i].valid ? "" : " *");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -426,18 +427,18 @@ static int xe3p_xpc_dump(struct xe_gt *gt, struct drm_printer *p)
|
||||
if (!fw_ref)
|
||||
return -ETIMEDOUT;
|
||||
|
||||
drm_printf(p, "PAT table:\n");
|
||||
drm_printf(p, "PAT table: (* = reserved entry)\n");
|
||||
|
||||
for (i = 0; i < xe->pat.n_entries; i++) {
|
||||
pat = xe_gt_mcr_unicast_read_any(gt, XE_REG_MCR(_PAT_INDEX(i)));
|
||||
|
||||
drm_printf(p, "PAT[%2d] = [ %u, %u, %u, %u, %u ] (%#8x)\n", i,
|
||||
drm_printf(p, "PAT[%2d] = [ %u, %u, %u, %u, %u ] (%#8x)%s\n", i,
|
||||
!!(pat & XE2_NO_PROMOTE),
|
||||
REG_FIELD_GET(XE2_L3_CLOS, pat),
|
||||
REG_FIELD_GET(XE2_L3_POLICY, pat),
|
||||
REG_FIELD_GET(XE2_L4_POLICY, pat),
|
||||
REG_FIELD_GET(XE2_COH_MODE, pat),
|
||||
pat);
|
||||
pat, xe->pat.table[i].valid ? "" : " *");
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -29,6 +29,11 @@ struct xe_pat_table_entry {
|
||||
#define XE_COH_NONE 1
|
||||
#define XE_COH_AT_LEAST_1WAY 2
|
||||
u16 coh_mode;
|
||||
|
||||
/**
|
||||
* @valid: Set to 1 if the entry is valid, 0 if it's reserved.
|
||||
*/
|
||||
u16 valid;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user