Commit e6e3ea52 authored by Umesh Nerlige Ramappa's avatar Umesh Nerlige Ramappa Committed by Thomas Hellström
Browse files

drm/xe/lrc: Fix uninitialized new_ts when capturing context timestamp



Getting engine specific CTX TIMESTAMP register can fail. In that case,
if the context is active, new_ts is uninitialized. Fix that case by
initializing new_ts to the last value that was sampled in SW -
lrc->ctx_timestamp.

Flagged by static analysis.

v2: Fix new_ts initialization (Ashutosh)

Fixes: bb63e725 ("drm/xe: Avoid toggling schedule state to check LRC timestamp in TDR")
Signed-off-by: default avatarUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patch.msgid.link/20260312125308.3126607-2-umesh.nerlige.ramappa@intel.com


(cherry picked from commit 466e75d4)
Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
parent 9be6fd9f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2413,14 +2413,14 @@ static int get_ctx_timestamp(struct xe_lrc *lrc, u32 engine_id, u64 *reg_ctx_ts)
 * @lrc: Pointer to the lrc.
 *
 * Return latest ctx timestamp. With support for active contexts, the
 * calculation may bb slightly racy, so follow a read-again logic to ensure that
 * calculation may be slightly racy, so follow a read-again logic to ensure that
 * the context is still active before returning the right timestamp.
 *
 * Returns: New ctx timestamp value
 */
u64 xe_lrc_timestamp(struct xe_lrc *lrc)
{
	u64 lrc_ts, reg_ts, new_ts;
	u64 lrc_ts, reg_ts, new_ts = lrc->ctx_timestamp;
	u32 engine_id;

	lrc_ts = xe_lrc_ctx_timestamp(lrc);