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

drm/xe/guc: Capture all available bits of GuC timestamp

The extra bits are not hugely useful because the GuC log only uses
32bit time stamps. But they exist so might as well provide them.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241024002554.1983101-2-John.C.Harrison@Intel.com

+6 -5
+2 -1
drivers/gpu/drm/xe/regs/xe_guc_regs.h
··· 84 84 #define HUC_LOADING_AGENT_GUC REG_BIT(1) 85 85 #define GUC_WOPCM_OFFSET_VALID REG_BIT(0) 86 86 #define GUC_MAX_IDLE_COUNT XE_REG(0xc3e4) 87 - #define GUC_PMTIMESTAMP XE_REG(0xc3e8) 87 + #define GUC_PMTIMESTAMP_LO XE_REG(0xc3e8) 88 + #define GUC_PMTIMESTAMP_HI XE_REG(0xc3ec) 88 89 89 90 #define GUC_SEND_INTERRUPT XE_REG(0xc4c8) 90 91 #define GUC_SEND_TRIGGER REG_BIT(0)
+3 -3
drivers/gpu/drm/xe/xe_guc_log.c
··· 171 171 172 172 fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT); 173 173 if (!fw_ref) { 174 - snapshot->stamp = ~0; 174 + snapshot->stamp = ~0ULL; 175 175 } else { 176 - snapshot->stamp = xe_mmio_read32(&gt->mmio, GUC_PMTIMESTAMP); 176 + snapshot->stamp = xe_mmio_read64_2x32(&gt->mmio, GUC_PMTIMESTAMP_LO); 177 177 xe_force_wake_put(gt_to_fw(gt), fw_ref); 178 178 } 179 179 snapshot->ktime = ktime_get_boottime_ns(); ··· 205 205 snapshot->ver_found.major, snapshot->ver_found.minor, snapshot->ver_found.patch, 206 206 snapshot->ver_want.major, snapshot->ver_want.minor, snapshot->ver_want.patch); 207 207 drm_printf(p, "Kernel timestamp: 0x%08llX [%llu]\n", snapshot->ktime, snapshot->ktime); 208 - drm_printf(p, "GuC timestamp: 0x%08X [%u]\n", snapshot->stamp, snapshot->stamp); 208 + drm_printf(p, "GuC timestamp: 0x%08llX [%llu]\n", snapshot->stamp, snapshot->stamp); 209 209 drm_printf(p, "Log level: %u\n", snapshot->level); 210 210 211 211 remain = snapshot->size;
+1 -1
drivers/gpu/drm/xe/xe_guc_log_types.h
··· 27 27 /** @ktime: Kernel time the snapshot was taken */ 28 28 u64 ktime; 29 29 /** @stamp: GuC timestamp at which the snapshot was taken */ 30 - u32 stamp; 30 + u64 stamp; 31 31 /** @level: GuC log verbosity level */ 32 32 u32 level; 33 33 /** @ver_found: GuC firmware version */