From nobody Wed Feb 11 04:19:47 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A22FE389DEC for ; Tue, 10 Feb 2026 16:29:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770740990; cv=none; b=YdkFc2YF1yayxobDiOEnTk9nwa+d2m6JgkE6mVDfwxKJAWSRx1R/7l2KSsXyXhQAIIf4mafQ9lHYL13QQrawTDYnAy6AbvacGa6oHyAuUmWDx6dg9+tqMkIW2LA7FjlA7CxuXHXFvsp1McRRm8HzcjoIoYr0XuljPklhFuSCpCw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770740990; c=relaxed/simple; bh=n5cxhcAYuqXwVPgqUWtTDYlwQYPPyoUIskghINChSL0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=YZfSyP/FZd7Vj7fuTTR/YQBLFy3Ts9nE7765GrvjEST3frTUmyQKY6WSrSx2dZsuPesNPTWfgF/NAYSQKJWoDyfmmJqgr0xeb2sZFjAN8rCDRdwvZEan/yrIyT8Gf4mqTIkq/qOgebuRrzGB1oR7ytuYYyMdq7/juwuEXCKk5UI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=H9oUAjMF; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="H9oUAjMF" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-483487335c2so17797295e9.2 for ; Tue, 10 Feb 2026 08:29:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770740987; x=1771345787; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=sdzOxstMlsYuxY5gUUqtUIeZeD3M+KWyBuexQsbSY20=; b=H9oUAjMFywEmCbFxUgvVBLHd0kGnex+5KeeRaYdxZ2V0q+X3h9WS6do0e7mo0t5P/Q n+ElNiySFa/hUBIMxzTxjSDDJ+jEQTqjm/3FJ5SDpLa7phG5H2BAkPwS1DaLFp6nlNeO DzViIpKKqV2sNpOAF2wiNCCTUElk63fyaewDkzhlQp83X8YqPKAh0ChWZE9VSYRGpEYZ MrATeTGlJ5Itca4K47wXtMcvHymVx8b6kH2yRPng6IpQPi/AmrisaoxEwkDURhcVV+HV U8hC4pUOYQd+JzUBsfprtlHzDj69EuTU4w3gihkKDIswzLRAAAfmTJYzTjyKr8fpJfqK gitA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770740987; x=1771345787; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sdzOxstMlsYuxY5gUUqtUIeZeD3M+KWyBuexQsbSY20=; b=qVQUMFGG471OgusX4yR1XZNU+nG9MOOkSuQfuMW0TDcvIsqik+pj1P5AqLdBI4DCJ7 Y1PwJ/b9fq/7gaSNHNZvXRqXccH5SWy4EdcPUyWqqtee3ALu6GSnFBDMPfknQwkjqXED kQ91SNGvn0AK9DhLK67YP+UVx93RixYchY49oaQloN5221ISwxwUrl6sZyq4MXLVZOA0 CR/fTjBVL9rwqhjpXx60X+FJlzJDP6fKn/oa/Df0AvMage1S+OB2agKKuYiD4Zheotdt yKKHiCJn3gBoYiDfc8VvHKNr07ovHbg17mzi7vi/mqZvF/MnJ90anSkOlIj+OOaIk7Wd oorw== X-Forwarded-Encrypted: i=1; AJvYcCWCMNIVrYk/i3HxNxynXGJiJ18MyaibbnU2o3MTYDJQr4WAln72GKDnVZ1WaI6KAuIx2qEeTkh0nMvFQdY=@vger.kernel.org X-Gm-Message-State: AOJu0YxBz2WlSlTG055WMu2Tq8TEeaaFxamFD+6nZzCkOfDc3XPePfaa mapr1+kUsUSkJByDT0OaVWgAlaDrjiQQVUfj3RQzH1zVZexZizGCyB8= X-Gm-Gg: AZuq6aKQdI/Lke4rYMn0ZntcaImmfdqLnFyiWL360fPmSKexAlMXw0MtCrUG/zvEtf2 1xjcUOucULq+k/r9ZByt3bw4U6rmZIp2DkZPxWhS4zg8UaEfBmag3dCGzXjyJR+huNPKRxHV8I4 tkrNKc0PxK3PvRVcm1U8+JmOQQEYcAFNFMnzg65f/rZh+/CWjH2xKuzMPsZh+rOtmPL0XDiKpyB xbioNCyBNZtChUk5VgWki+YCGFd2Q4/GlYslbqampfLG7h2DSRwK3GdThQp+ZiQA61Nn4QpOMsV 7gUqn+fhAfdQEnOxPbBvwBGL5ipqkG/ya7dHiath4FL2yDOZqja03lXZneglJReuZAZqr/O+75V pSnV4X8+5LERbu6jkgRc57HGRmugi8KDZH05Qiy+KBO0hiPvagBC2FN8tsxFkS5bc8aZnlFyzqq mNCYl5MGbipvChy4vp9g2zyy8q/MpVBOM841kKDeT1s3IVRGzfcJYnw3WMxc2cvOPIEhAhAlAqG XxuqJyvb5JKsw== X-Received: by 2002:a05:600c:3148:b0:47a:8154:33e3 with SMTP id 5b1f17b1804b1-4832097e27fmr187592045e9.28.1770740986868; Tue, 10 Feb 2026 08:29:46 -0800 (PST) Received: from [192.168.1.17] (host-79-19-172-190.retail.telecomitalia.it. [79.19.172.190]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4834d5d78cfsm95182975e9.1.2026.02.10.08.29.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Feb 2026 08:29:46 -0800 (PST) From: Anna Maniscalco Date: Tue, 10 Feb 2026 17:29:42 +0100 Subject: [PATCH] drm/msm: always recover the gpu Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260210-recovery_suspend_fix-v1-1-00ed9013da04@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x2MWwqAIBAArxL7naD2oq4SIWJb7Y/GLkUR3T3pc wZmHhBkQoGheIDxJKEUM5iygLD5uKKiOTNYbVttjVaMIZ3It5NDdoyzW+hSXefbpq/s4usAOd0 Zs/634/S+H7EzSB1mAAAA X-Change-ID: 20260210-recovery_suspend_fix-77a65932fa4c To: Rob Clark , Sean Paul , Konrad Dybcio , Akhil P Oommen , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Anna Maniscalco , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1770740985; l=2814; i=anna.maniscalco2000@gmail.com; s=20240815; h=from:subject:message-id; bh=n5cxhcAYuqXwVPgqUWtTDYlwQYPPyoUIskghINChSL0=; b=M9SJ3nUQubja4jNzIiH2tA9YijW97ffp9B+aOxZx4Zzsd4ZwxYxM2PqFAUA4PUMwW1FxjOr3Y r9kplVv06gSCIjLoDjXxpAys0/yewGxd4mLhyICAH8uf89NNneUrX8G X-Developer-Key: i=anna.maniscalco2000@gmail.com; a=ed25519; pk=0zicFb38tVla+iHRo4kWpOMsmtUrpGBEa7LkFF81lyY= Previously, in case there was no more work to do, recover worker wouldn't trigger recovery and would instead rely on the gpu going to sleep and then resuming when more work is submitted. Recover_worker will first increment the fence of the hung ring so, if there's only one job submitted to a ring and that causes an hang, it will early out. There's no guarantee that the gpu will suspend and resume before more work is submitted and if the gpu is in a hung state it will stay in that state and probably trigger a timeout again. Just stop checking and always recover the gpu. Signed-off-by: Anna Maniscalco Cc: stable@vger.kernel.org --- drivers/gpu/drm/msm/msm_gpu.c | 42 ++++++++++++++++++++-------------------= --- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index 995549d0bbbc..ea3e79670f75 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -547,32 +547,30 @@ static void recover_worker(struct kthread_work *work) msm_update_fence(ring->fctx, fence); } =20 - if (msm_gpu_active(gpu)) { - /* retire completed submits, plus the one that hung: */ - retire_submits(gpu); + /* retire completed submits, plus the one that hung: */ + retire_submits(gpu); =20 - gpu->funcs->recover(gpu); + gpu->funcs->recover(gpu); =20 - /* - * Replay all remaining submits starting with highest priority - * ring - */ - for (i =3D 0; i < gpu->nr_rings; i++) { - struct msm_ringbuffer *ring =3D gpu->rb[i]; - unsigned long flags; + /* + * Replay all remaining submits starting with highest priority + * ring + */ + for (i =3D 0; i < gpu->nr_rings; i++) { + struct msm_ringbuffer *ring =3D gpu->rb[i]; + unsigned long flags; =20 - spin_lock_irqsave(&ring->submit_lock, flags); - list_for_each_entry(submit, &ring->submits, node) { - /* - * If the submit uses an unusable vm make sure - * we don't actually run it - */ - if (to_msm_vm(submit->vm)->unusable) - submit->nr_cmds =3D 0; - gpu->funcs->submit(gpu, submit); - } - spin_unlock_irqrestore(&ring->submit_lock, flags); + spin_lock_irqsave(&ring->submit_lock, flags); + list_for_each_entry(submit, &ring->submits, node) { + /* + * If the submit uses an unusable vm make sure + * we don't actually run it + */ + if (to_msm_vm(submit->vm)->unusable) + submit->nr_cmds =3D 0; + gpu->funcs->submit(gpu, submit); } + spin_unlock_irqrestore(&ring->submit_lock, flags); } =20 pm_runtime_put(&gpu->pdev->dev); --- base-commit: 50c4a49f7292b33b454ea1a16c4f77d6965405dc change-id: 20260210-recovery_suspend_fix-77a65932fa4c Best regards, --=20 Anna Maniscalco