mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
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: bb63e7257e ("drm/xe: Avoid toggling schedule state to check LRC timestamp in TDR")
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Link: https://patch.msgid.link/20260312125308.3126607-2-umesh.nerlige.ramappa@intel.com
This commit is contained in:
parent
4ff57c5e8d
commit
466e75d480
|
|
@ -2576,14 +2576,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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user