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

drm/i915/guc: Skip communication warning on reset in progress

GuC IRQ and tasklet handler receive just single G2H message, and let other
messages to be received from next tasklet. During this chained tasklet
process, if reset process started, communication will be disabled.
Skip warning for this condition.

Fixes: 65dd4ed0f4e1 ("drm/i915/guc: Don't receive all G2H messages in irq handler")
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15018
Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://lore.kernel.org/r/20250929152904.269776-1-zhanjun.dong@intel.com
(cherry picked from commit 604b5ee4a653a70979ce689dbd6a5d942eb016bf)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

authored by

Zhanjun Dong and committed by
Rodrigo Vivi
1696b0cf 3a866087

+8 -1
+8 -1
drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
··· 1325 1325 1326 1326 static void ct_try_receive_message(struct intel_guc_ct *ct) 1327 1327 { 1328 + struct intel_guc *guc = ct_to_guc(ct); 1328 1329 int ret; 1329 1330 1330 - if (GEM_WARN_ON(!ct->enabled)) 1331 + if (!ct->enabled) { 1332 + GEM_WARN_ON(!guc_to_gt(guc)->uc.reset_in_progress); 1333 + return; 1334 + } 1335 + 1336 + /* When interrupt disabled, message handling is not expected */ 1337 + if (!guc->interrupts.enabled) 1331 1338 return; 1332 1339 1333 1340 ret = ct_receive(ct);