]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/guc: Accumulate CT H2G retry sleep budget
authorShuicheng Lin <shuicheng.lin@intel.com>
Mon, 23 Feb 2026 16:23:52 +0000 (16:23 +0000)
committerMatt Roper <matthew.d.roper@intel.com>
Wed, 25 Feb 2026 17:25:05 +0000 (09:25 -0800)
guc_ct_send_wait_for_retry() introduced sleep_total_ms as a
budget guard, but never incremented it. As a result, the
"about 1 second" bailout condition never triggers in the H2G
backpressure path.

Accumulate the delay returned by xe_sleep_exponential_ms() into
sleep_total_ms so the timeout logic works as intended.

Fixes: 943c4d0637cf ("drm/xe/guc: Limit sleep while waiting for H2G credits")
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260223162350.3205364-5-shuicheng.lin@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
drivers/gpu/drm/xe/xe_guc_ct.c

index 8a45573f88120701fbbbea63d78c89ca7af016e4..1c37813d2ccd607ea34378f7e84774146db95ac6 100644 (file)
@@ -1124,7 +1124,7 @@ static bool guc_ct_send_wait_for_retry(struct xe_guc_ct *ct, u32 len,
                                                 h2g->info.size,
                                                 h2g->info.space,
                                                 len + GUC_CTB_HDR_LEN);
-               xe_sleep_exponential_ms(sleep_period_ms, 64);
+               *sleep_total_ms += xe_sleep_exponential_ms(sleep_period_ms, 64);
        } else {
                struct xe_device *xe = ct_to_xe(ct);
                struct guc_ctb *g2h = &ct->ctbs.g2h;