From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5E036EB26E0 for ; Tue, 10 Feb 2026 16:29:51 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C1C3510E5D8; Tue, 10 Feb 2026 16:29:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="F5L7KCjx"; dkim-atps=neutral Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id D21DA10E5D8 for ; Tue, 10 Feb 2026 16:29:48 +0000 (UTC) Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-483487335c2so17797285e9.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=lists.freedesktop.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=F5L7KCjxLMySlyMPYEsNYMiFdYfdC4jzm47Rk0tWgJmN+1qgMiOemV2mO3a1ZbyLBb Ra2z9BmVqLs/U7yIA+wQZ9Mvet3zfbnPlkf/2Z3mPP82r3AmvL/oi7kXdy9OBI6jOsif FENc0nQJanypv1XX/W58frIE965BUgT18ng/jPwvdUGF+L4r9kllhchPz8EGkrF01e9w PfalrwOaDxEGsHFLDvCabwIeT7WIdt2jlboCn/QPuL6bi39H/MuZSqE1hhKbRsHAceex +DyAoYI/Ay131dLL5x+4y7R9P8hWvoWPT0aGRxWGW2aC/t5AWSeUgPxh5iOCgo+1nw4M 7aDA== 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=KdhyKIZSMS/N5EhIEZDnPOhla8JWLIIaDRZxY7qdKjKq6GuOjrta6h1QhHhBhDJKnE /+i3S9vDdOTEK3eLRcdtEcDIevoeZAzyc4dMssFrI3sApH7yw1AOZYAqj2gPZRI6/pQE 4YJBsCCb0MR6sZZdHuqKlGPCgj3Wnt5JjRugCLl2N41N5s6B2KXkVLwdOSgVN0Y9bRZw hoTMCYGX6M32yvk6+aNAx4GXrkRt5RAWHmPweoDSpzTaRQHALlg3dXKn3APSmh0Nrqc+ 4NXjV/hBhC827eCLgG0STFzBq7kiSf+X/vrXaDtbo7drYBhfYFPF9fV9Ru3DhepA0uo7 F2sA== X-Forwarded-Encrypted: i=1; AJvYcCV4q67hwlSiBQgp++n3E9UckNah7TLdmqNeJPdMsrKbpIkas4DUWTdXg9777LrHe9Yvqj5je4nJYK4=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yz0uFFMeS8dOFkn9Q57EKRdAukknE9wnM5t8+mW0ClsvqHRGA3+ m8FjVAUklYKXzTqSdIK7BhzZm250XdGrVmCIKij3TR7BR5m/D57y+Cs= X-Gm-Gg: AZuq6aJNIDDzuAJJANHvdD5cQwiMnT38Y3oDbxxPAgGgQ70+6A+CoHpbhLqtKVJjrXR owGvOzLtK5SxAlJ7of6ouZfkdmXTExnbfNtSZJzFWANrG6ee46ujh/JYwjy5pkPWFdo1XC3BQQ8 1AaSQywWa4blNqWfZls5LEgci/9lzK60jovPq5UxMAB6drMr6q4fuX9Mo14avj4/+rtHMMcwqQo wXpTC261UIeEGvDWIBAoMlY8OKlXxiGS7dPK3qi8qfIPhAqi6iM+jSk71/6IZjfnNuWfRVkDGzj /h1vtIlMslRsvpFzJI2FUxada9lZ0chgpFSq2jLy/+83QjivmxE66XWLUga2dwHwhumhoxQ37fq xIO0yIJeivuSFGuIYOkEywk9G36QbwVYzzOo/3De0WFox8w2IQ5+8FHCQy4jUSve265mWnP6pOz lglPeqd/O1sZS0H3zq2c3Df8MvryetbYw+jVacoiXTOU6rYCXSHb9HGiaSgwHbYslRkyIpplAEk 1XHsT/FVv/+kQ== 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 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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); } - 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); - gpu->funcs->recover(gpu); + gpu->funcs->recover(gpu); - /* - * Replay all remaining submits starting with highest priority - * ring - */ - for (i = 0; i < gpu->nr_rings; i++) { - struct msm_ringbuffer *ring = gpu->rb[i]; - unsigned long flags; + /* + * Replay all remaining submits starting with highest priority + * ring + */ + for (i = 0; i < gpu->nr_rings; i++) { + struct msm_ringbuffer *ring = gpu->rb[i]; + unsigned long 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 = 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 = 0; + gpu->funcs->submit(gpu, submit); } + spin_unlock_irqrestore(&ring->submit_lock, flags); } pm_runtime_put(&gpu->pdev->dev); --- base-commit: 50c4a49f7292b33b454ea1a16c4f77d6965405dc change-id: 20260210-recovery_suspend_fix-77a65932fa4c Best regards, -- Anna Maniscalco