From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D39A48AE0D for ; Thu, 4 Jun 2026 17:36:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594594; cv=pass; b=DRcj/325couAxi8BKcGd8lHVJQMzyrmrEVEUkRzIb2pMooP0TjxtdakSg+XINw74SHsnR6nrmoTVCfnz8irxq3IL+DnhrE29SeuFS7CkHcvVmrjcOu5i/DZfz2l/kKiJj+YA/iFewvtNrdcvGS6OY58MvX0Q1MpYwuQWxvY8NdA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594594; c=relaxed/simple; bh=9+0Lng7EnO833AXhZvezEZ5bQLD345Soj/z4WXi6s74=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SnNHImAfU7FEPoBG2QquLHD/CQBhtsvIvBMFDZCt94kRfCbNqG6+R9LEhQNV/0S2o2qunHDQtm+KYl2O5Hwox9Qnoc664i0e+FFUnFZUIoEcNWSbjqlqDqfuaLnP0NaHmf+bmJfvsYxMa/sv+cKpHsZ5VB+RcRZiCR5aaW0P5YY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=Gx2C930r; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="Gx2C930r" ARC-Seal: i=1; a=rsa-sha256; t=1780594568; cv=none; d=zohomail.com; s=zohoarc; b=WFEkvNJhWr8OA5A9eHrnWX1HyloaYBuJlg1jV1rAGItcaTA+C0LfBiLw9q43IeKkSHJDRtg/P6dPyl7YGE94oJKmDiBNL4fsWMVp+Z5l4mTEBA5wSSPW4cLW433QDmBsUhCPHNcKelPZMU3zvSySl7qbkusTDAns/OGej/NoVXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594568; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=SVx3YSeGNoK9OFNCVBZgsenk/LFwrUPD+yeW9XL5ug8=; b=QCcvjUslDbqANJWKMNo9s1oQKOsCvgE8/ts7P9v/Qd1QiQmaQEeXeflm5OhOjJyhJV2fRmYYIZ5yn8QmNuFFt/8YotkFWLnGTXzmODLGdvf/kN+UnYS2dTDHIxUeD9n+G/VKGplcRQMxKVwr9FB3334kLFGZ7OqUoNQ72lZ3eho= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594568; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=SVx3YSeGNoK9OFNCVBZgsenk/LFwrUPD+yeW9XL5ug8=; b=Gx2C930rXI0rdGHzzG/yo//Fk5W47g8/dAuWgRgYlO5e74HLrv5tNSzHImdn0o9b o1HFcEuE58nCdPScwg2QSnd9HFyUPHWtykBN2XCvforrIs4wESqwMTvILG0qWpvFD8P iyAJhFTRjuEl8Vu2Gr87z8hhggxuoGL9fmcA8syM= Received: by mx.zohomail.com with SMTPS id 1780594565741374.28508656291683; Thu, 4 Jun 2026 10:36:05 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:20 +0100 Subject: [PATCH v2 1/7] drm/panfrost: Check another bo field for cache option query 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: <20260604-claude-fixes-v2-1-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong , Claude X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1047; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=9+0Lng7EnO833AXhZvezEZ5bQLD345Soj/z4WXi6s74=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8zKU1kC0Okbhr/hPphCNr3wp5Hj1bSElm1 yxpAGE+NXaJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PSXMC/9/XMI4UgzgWJ5n+K2HbfxVCSZmrE2pCLux8UH1aHTbGRWIx+xI5zi4sNAGdOZ/y707q0u GYpBAeUWmBzWgz2XJNYBpVIDNYNQcx1mAGUBMoGkNeGtbec0evopcU81V9ozBrDxjKN8nwP4Hx3 BYgwQPsvl5hD7GgxwljMssJD+ty2smf01l+/Hx4I5f7okg5ia5mfoAk35NEeB0Sqj6vBpZ0G2gn ssGY4Es8JSH2Z4O/9st6KaLUnAGV+1Z4Q96BTSOsW4SLgYZ0iUXiBeXPSy4OfCqT20BAA4iX7Wm dYhHt/PlkqZz5Or6UKb+YD+MfLQBoySY/EB15AbS+OEe56qMQnaC4KRmczG6jmBoAwzPJJwrXhR ZKO1EtNIlDHNkEzObwe10lENnzmZuojzOcJNwh4/J1toUls6e/r72L78uHP1FYWj57BWM/ueY8S EbFtWD2VLQaNVFzC3EFtZ/XCSj3bn5QNRmNRdysO72NZonq4yja8gybsYIsTSrttaVSRU= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D When querying the properties of a BO, whether it was created in Writeback caching mode for userspace mappings, is recorded in a Panfrost BO's wb_mmap field. Reported-by: Claude Closes: https://gitlab.freedesktop.org/panfrost/linux/-/work_items/88 Signed-off-by: Adri=C3=A1n Larumbe Fixes: 62eedf1ccba5 ("drm/panfrost: Add flag to map GEM object Write-Back C= acheable") Reviewed-by: Boris Brezillon Reviewed-by: Steven Price --- drivers/gpu/drm/panfrost/panfrost_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index 3d0bdba2a474..cb8e5015847f 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -659,7 +659,7 @@ static int panfrost_ioctl_query_bo_info(struct drm_devi= ce *dev, void *data, if (bo->is_heap) args->create_flags |=3D PANFROST_BO_HEAP; =20 - if (!bo->base.map_wc) + if (bo->wb_mmap) args->create_flags |=3D PANFROST_BO_WB_MMAP; } =20 --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 502A539EB59 for ; Thu, 4 Jun 2026 17:36:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594594; cv=pass; b=ud+VDtbZvA1X2dH/6+KZhEJq18YwYzh64e0UewghtoPTlw8pP1iak8NqxCZc/9kk1hJ4DZm6QOvcqUACUCUQExFnI6CYlYfsZUaPQ/VP05Xii6MVgMUn+z8tq6c9qanEEJOLxRKcJRocfG+czVf7zCTF8r/xjLBGimG87PopHK8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594594; c=relaxed/simple; bh=nzasDqf1ZeVklLh/1HHStVgG7z6hFgrLTXP4S199BT8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PTs8CoiH9jev3CD19AW7YciVWpkrq0Htj3gc1djHvwSxs2hTcbc1hVucWu3TZfkcTKl5e8ImCmIy5a0ckvUtCtjYPC1QbotqMrF0fwPR4M7jyp4tO6HgcDcwVK/can4GSyFW/0mqHxkjNgJf1mgZ6rqK01RsBzPiKOMY4bvIJUY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=b9ZZnDEF; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="b9ZZnDEF" ARC-Seal: i=1; a=rsa-sha256; t=1780594572; cv=none; d=zohomail.com; s=zohoarc; b=bTo9sola0Q9EasoFvNlehSYbmharspgEMnkoZ2/pXdqeAnocBurydmr9VSZ3tLgg4hoRU9tWnIeXYo148a+QLZl9S5XZcW/hHNiuFlHNJc+YtQC9sWitDiyUcfbP1+ND98lWuzjSvnDTG5J4796c7grcWIAvoweqfWKUoLYfb54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594572; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=HPNTjEe/m5SGoAr+PENY+66BzrLFIi72Iy8Y57gshzs=; b=VT3cSC2TJB4p/p9ZFpTkuQAG+wjF7hZXrjZB4qtvYOMIPtPJkyDx5XguxXY6RwtViWEDriAc5XKqVLZ1Min48u28pY4whcEe35ef+10EKxgCKg8xnblNSrLkf13d4rIK9doV9XX3t40ywwGTtQJVQemKUk4dL/sTwyAhowJ8X/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594572; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=HPNTjEe/m5SGoAr+PENY+66BzrLFIi72Iy8Y57gshzs=; b=b9ZZnDEFcGYen1JXI6JRkzUF6vlx7DhtvBSc2VNRUOjR3z4u4p0EKiEKvJcic5M8 prSVZiNCrB9RTqjzKn8DlE0LqiHIovM9oQE3Qki3tm/Ys6rG4GSqV2V453/H/G0B+RB aJh3m+CIYzCxpqRK88iUuQceCwOrk3xAyzj7azxU= Received: by mx.zohomail.com with SMTPS id 1780594569939499.8673373915145; Thu, 4 Jun 2026 10:36:09 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:21 +0100 Subject: [PATCH v2 2/7] drm/panfrost: Prevent division by 0 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: <20260604-claude-fixes-v2-2-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong , Claude X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1187; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=nzasDqf1ZeVklLh/1HHStVgG7z6hFgrLTXP4S199BT8=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8WxvU2W8rxwyJOhXrt+oHBJji+sfAjSlwT GxBZNE5ZK6JAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PXeeC/9vrzMpvViX3v0IeGUnIFh5Uial38bhIF3uoGomEtqsM3SLAlp/YISXTg/XhYPqepLUZVo o0prfUxW3hRMd5Ss4QlewY/7vwKVYFaraQluI5XcR3m62nq/XhD6j/KhAnmQ07Re5+4EeH7U5/G wWqI70NXJfawMC2BXtP2H4fginhJxta8ImxNytl4BCNNHOEpln9UHXCLFGUrqXaPu6X5+IBxQMg uj4hjGB67miAWin/y780Rmanym//Hq8FUBWPAdf0gFzs6mDld3L+3QfMN9aBN5m+Vh+P6hLYMRl +/kjauv2BHaXLqTzblsBgvnPKSQwMIl1VHDv8XOzHN9ZPaAUGHdcuZKlhVUZWlHnTMmCmO9qy5L Ci9SfcXTq7zC1LT7aXjw7PsBAZy52bV0jYld0HwDl4oYj4oX1j8Wmc9LmcRuRTRPksmJGdfXZzv t2IGM7N3GvYcmnPyce+TBN77392gICojxUuLeIxLJFsYo1CsNLYvZQLBV51nusrQoXql4= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D When updating and debug-printing devfreq stats, in the very unlikely offchance that total device time is less than 100 ns, clamp it to 0 to avoid division by 0. Reported-by: Claude Closes: https://gitlab.freedesktop.org/panfrost/linux/-/work_items/88 Signed-off-by: Adri=C3=A1n Larumbe Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver") Reviewed-by: Steven Price --- drivers/gpu/drm/panfrost/panfrost_devfreq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/= panfrost/panfrost_devfreq.c index b51c30778811..e34de47bf43b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -78,7 +78,8 @@ static int panfrost_devfreq_get_dev_status(struct device = *dev, =20 dev_dbg(pfdev->base.dev, "busy %lu total %lu %lu %% freq %lu MHz\n", status->busy_time, status->total_time, - status->busy_time / (status->total_time / 100), + status->total_time >=3D 100 ? + status->busy_time / (status->total_time / 100) : 0, status->current_frequency / 1000 / 1000); =20 return 0; --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BAC53BAD80 for ; Thu, 4 Jun 2026 17:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594595; cv=pass; b=eKKAgGGTlsJIhBgM15DlzeAr799HIL96xWoElaleD4gCyeDkqo8ZW+qvDjzCDeXS35iFZSE2ZtTI63GBDqsKW0SZIXeeWq2kNyURVFzBX/zEpqG7w0ZKWkCL9OYhDurTOX9MGvXnAYQ5J812m+rTmZyp9oCJVLfi2fqiUVa8S7A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594595; c=relaxed/simple; bh=envzPTUCQc+h2llEXgapJvru00GcWmuLBMhw4xPsdkM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZwyjmZ0IIdjZ4p23rIEjuVIpYlL5VgCxZ7LYX+ijkLA4exYoVF8ZoO82Sv4J4VqS66vMADatzCqFJrJS2Lp9ZOMtbkODZbiMfRganHzJX9QcbKNuPDrjqaxFBVQwuqJYhBt6lu+mPcWd0fJ38eY8CWch7BfHxUSRENRgmUYbgf4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=RwJhi2Qu; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="RwJhi2Qu" ARC-Seal: i=1; a=rsa-sha256; t=1780594576; cv=none; d=zohomail.com; s=zohoarc; b=ZG/H4cv4LsYrGuX5Hs8zB9vFMY42IpltOmLu1Dgjfm28/iazT//p8cbaz3E6vvCMEDtnssBruuBmKeM6dMILcvVPa6cbHg7mZ90zg/RVPm7OhjPRatiW+pYl/Duv4eKwshwNOVr8NfOdEs9Z32VcwtY265gzl8WXWb80dpMeJTQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594576; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Aw8Xp6e/O0fBl1LUOgwrUnYqJiNQ0v1DVfYDC2Jp0rU=; b=mTueuZTh2q+qwUY1zTkwosCT6eFsMnuq4aL3Bul6X0OB2o88CAQZtgJ7vBMpmKnn8l6X+XJ8L8OeDfDMhq9i7wcX3M5rEBeipKf5jIAnQlVsEU+rO6N9yxyu+lozsmNY9/mgzIMT1azSwrCKpFEJ2wWrkkcuSEJUTtzbs7vU+3g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594576; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=Aw8Xp6e/O0fBl1LUOgwrUnYqJiNQ0v1DVfYDC2Jp0rU=; b=RwJhi2QulxoOH2pM4mjQLlQHFbA5CBN3I/1jm2u6EuvXgGw6+pPe1oSCPD5ZciyS HtYXh+BZMeWHDuVvHxQl7H+Xpe2ykK80ONbsiCeGfrK1sHFghy1bAFBX82vwqQUS1BP B2qGLWdfCA3Voez4cP+Fupn/knkbTu3ZSsiJJIIE= Received: by mx.zohomail.com with SMTPS id 1780594573852741.1280981036659; Thu, 4 Jun 2026 10:36:13 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:22 +0100 Subject: [PATCH v2 3/7] drm/panfrost: Move shrinker initialization and unplug one level down 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: <20260604-claude-fixes-v2-3-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4486; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=envzPTUCQc+h2llEXgapJvru00GcWmuLBMhw4xPsdkM=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8AzD5yRWR2OF4sWoMokcZM/xgmSxYu6MCt CVm59bvAxmJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PZmNC/91TG6cjRt8ogqHJY9YqDy2MZBcTW0yY+kTW0/kC6mluvGa1OZjymbpefYuaxErIq0LRid fEtseQON/iam79BSbJ7IJ4AotBb8x8AVI3Oaahmkcykf0iedX30lBk95ypdLdkSb/o0GWO23uUU i2/dIDF79/KVRVjwvpdH//wtgkKqhWbVjYg9n/gk3/Uak5GSfgSMXR+k5ZHKuTc0+wzPGnDJomL ryiQkzIVManMzMDUOCCJ3eqkv7uvCFMFp7UUqOEj4zed3LyMSxVvWpho4TFr+bHkhjs4vxwfbkG zfm8eJUjFP7JjMMDPQqKtaZMegGTSs8hzpSGVJEi2m+Et1iQV49nzOCZ6uapt4z69ilBzvIJqeT X20L8NlfY8MX7VhTZ15Pqa+I/UkapNVbatd3nlCkiASLu5MxGn3lh+TL+IgiqAffcLRSmBRGFj5 JN97x6fnU8rdezibJnxBrEzqZmGKIWPVcPNNqDL0/d02JCXv6e/jvhN77c59J6B6tRhpw= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D Since the moment we call drm_dev_register() the device should be in a position to accept jobs, so it's best if the shrinker is already initialized by then. On top of that, make shrinker functions take an panfrost_device pointer like other functions in the same sequence and rename them accordingly. Essentially mimic the init/fini behaviour in Panthor. Signed-off-by: Adri=C3=A1n Larumbe --- drivers/gpu/drm/panfrost/panfrost_device.c | 7 +++++++ drivers/gpu/drm/panfrost/panfrost_drv.c | 6 ------ drivers/gpu/drm/panfrost/panfrost_gem.h | 4 ++-- drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c | 8 ++------ 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/p= anfrost/panfrost_device.c index 7fed22d555a5..87b372c9e675 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.c +++ b/drivers/gpu/drm/panfrost/panfrost_device.c @@ -282,9 +282,15 @@ int panfrost_device_init(struct panfrost_device *pfdev) if (err) goto out_job; =20 + err =3D panfrost_gem_shrinker_init(pfdev); + if (err) + goto out_perfcnt; + panfrost_gem_init(pfdev); =20 return 0; +out_perfcnt: + panfrost_perfcnt_fini(pfdev); out_job: panfrost_jm_fini(pfdev); out_mmu: @@ -306,6 +312,7 @@ int panfrost_device_init(struct panfrost_device *pfdev) =20 void panfrost_device_fini(struct panfrost_device *pfdev) { + panfrost_gem_shrinker_fini(pfdev); panfrost_perfcnt_fini(pfdev); panfrost_jm_fini(pfdev); panfrost_mmu_fini(pfdev); diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index cb8e5015847f..2d4b6aa95c66 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -1000,14 +1000,9 @@ static int panfrost_probe(struct platform_device *pd= ev) if (err < 0) goto err_out1; =20 - err =3D panfrost_gem_shrinker_init(&pfdev->base); - if (err) - goto err_out2; =20 return 0; =20 -err_out2: - drm_dev_unregister(&pfdev->base); err_out1: pm_runtime_disable(pfdev->base.dev); panfrost_device_fini(pfdev); @@ -1021,7 +1016,6 @@ static void panfrost_remove(struct platform_device *p= dev) struct panfrost_device *pfdev =3D platform_get_drvdata(pdev); =20 drm_dev_unregister(&pfdev->base); - panfrost_gem_shrinker_cleanup(&pfdev->base); =20 pm_runtime_get_sync(pfdev->base.dev); pm_runtime_disable(pfdev->base.dev); diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.h b/drivers/gpu/drm/panf= rost/panfrost_gem.h index 79d4377019e9..323a1aee255e 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gem.h +++ b/drivers/gpu/drm/panfrost/panfrost_gem.h @@ -154,8 +154,8 @@ panfrost_gem_mapping_get(struct panfrost_gem_object *bo, void panfrost_gem_mapping_put(struct panfrost_gem_mapping *mapping); void panfrost_gem_teardown_mappings_locked(struct panfrost_gem_object *bo); =20 -int panfrost_gem_shrinker_init(struct drm_device *dev); -void panfrost_gem_shrinker_cleanup(struct drm_device *dev); +int panfrost_gem_shrinker_init(struct panfrost_device *pfdev); +void panfrost_gem_shrinker_fini(struct panfrost_device *pfdev); =20 void panfrost_gem_set_label(struct drm_gem_object *obj, const char *label); int panfrost_gem_sync(struct drm_gem_object *obj, u32 type, diff --git a/drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c b/drivers/gpu= /drm/panfrost/panfrost_gem_shrinker.c index 2fe967a90bcb..fefae87535d6 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c +++ b/drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c @@ -95,10 +95,8 @@ panfrost_gem_shrinker_scan(struct shrinker *shrinker, st= ruct shrink_control *sc) * * This function registers and sets up the panfrost shrinker. */ -int panfrost_gem_shrinker_init(struct drm_device *dev) +int panfrost_gem_shrinker_init(struct panfrost_device *pfdev) { - struct panfrost_device *pfdev =3D to_panfrost_device(dev); - pfdev->shrinker =3D shrinker_alloc(0, "drm-panfrost"); if (!pfdev->shrinker) return -ENOMEM; @@ -118,10 +116,8 @@ int panfrost_gem_shrinker_init(struct drm_device *dev) * * This function unregisters the panfrost shrinker. */ -void panfrost_gem_shrinker_cleanup(struct drm_device *dev) +void panfrost_gem_shrinker_fini(struct panfrost_device *pfdev) { - struct panfrost_device *pfdev =3D to_panfrost_device(dev); - if (pfdev->shrinker) shrinker_free(pfdev->shrinker); } --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2576C4C9561 for ; Thu, 4 Jun 2026 17:36:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594596; cv=pass; b=KlJqNt5SzV6Ld2n+8Dvp2dfwi1NIFNMWO/qhAS5u56eJWK1bH0Rkqwdnw9fsQy9dfZ5LRehm3OUxxQ7rzrZx+TKmiwmCxjiZWKR+fQ5TSvRGeCDicmd5T8VvOrbdF6gTrrr6rSbI88+AVaszo4nCznD/h+G56cjRIaBFNSAo7pQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594596; c=relaxed/simple; bh=jDTN3KPXW5GgyiXtSuso4KxYEzTJHTIqTdytBXUJh3s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O20N3WBgu5IoRnIN8Y4Fthq/c8PWXC3m46We0u0jdDmz7At+yvVxYoVYKY8vN6Zq1R/RqWYg2ZBZNs+QUudk5dPdudoUV3f9knVwcK16KZyGdoc3QJyyFvt2n9yOXZ8DrxF4lsIFzbzOEmbekKrdnznluIP+LJhqC66dYx7NwuU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=R6yTnxE8; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="R6yTnxE8" ARC-Seal: i=1; a=rsa-sha256; t=1780594578; cv=none; d=zohomail.com; s=zohoarc; b=WGmmvKISPfzhj81F5E5sGRS7BmM+pRzy00R4A6NQ+5BtxWuIeV+ByUNeXP5hLvO3hHujLwKS+cxDM2mU7c0UwtmPNpwDNYA9pVtbKZxC9HTiFLOD9u2QHSbpwC75woD4prJSS1XCkYtEH4cSHmutK/G0+MnlFNN1w13f4FbeU3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594578; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=4u+t/C8H9x/aY+ZDOhqE29VEMGRhkLvLihuswVI+BME=; b=HFiA2l3VE8M8Wya3ki+VIGYGMWILqllMAhPz+udGwNMX9DytFUq09f1SOIrSduXu0VPG87cJ71gmJA0TbhNKPYZmbv7Vsr/fdAJmEklUe5U7rI30TF2kt6qfRj4F1qESQCCEJotwvTX+zZvks0KRIzdjiviXSb+xyv9D3Yjcdn8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594578; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=4u+t/C8H9x/aY+ZDOhqE29VEMGRhkLvLihuswVI+BME=; b=R6yTnxE8Y7L8U/D9YiYuMEZNFCTcVV2k1HCp+NqceE/JWz2haXYuU10UjimEs9pn 4Vgj+UJ/RA4YkyGAQi33f9z8aR/lF7m6ocmXs2UxMUVrLJUMkWkjly/F/AUiDccdT9G A7FSx3Z3EYDbiz0S4Adj+4WuPBp2lMweBKAIKksc= Received: by mx.zohomail.com with SMTPS id 1780594577655702.1261648486782; Thu, 4 Jun 2026 10:36:17 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:23 +0100 Subject: [PATCH v2 4/7] drm/panfrost: Move perfcnt GPU disable sequence into a helper 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: <20260604-claude-fixes-v2-4-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2667; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=jDTN3KPXW5GgyiXtSuso4KxYEzTJHTIqTdytBXUJh3s=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8wDXgYJGEsn0JD+YxBWGWWzOze1DVPwGjD ctxIwj10qSJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PTSDC/9sL6DxcKKPZnVI7pgw7rhShwg0i2M3gc4N7vY3iq+ZyJHC7sViGiCyNXYRSHTBNU+VmSF 9iTRHNxXkELTlE/hLo4icEPUSCSGjOO0kAjSRLjwLb03U98+qXVkLtKoKLcUA3+9JWZctCBy6h4 iLPq1DJ2bLNOGFWBJ9W9PEqOC2kyYxwR0+1FEs6BMrIM7INYd/S26K9l3MjGOZCRz7dMGEj4kqT tDL40MTEJ+tDBzfkzFjYLyFUqJ3yWnjWJGngeCPlMIuelGM7OW1AxDT+m3VQiS3eO8weLYUWVcn OWTxgk3AIiihvjELX1KTVME+s0uGZ1XoYpo19jAGMkILDKvCSgtxcwHLlp+m1OvyGzIq7LGrXNI SiZ7xbYC73iZjOWxgVoMHy2Z78Xkfgm+eMlBhwaU4nEOd/VuEnhvUwlOuvnOR21g3ThapuwG/DV eclFRe+J38f1bX6LMAiN6bUZbnToKt0YCJrbzT6uZpi416OLYHM4k7FG3/oAWWy/D1dWI= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D Just for the sake of avoiding repetition. Signed-off-by: Adri=C3=A1n Larumbe Reviewed-by: Boris Brezillon Reviewed-by: Steven Price --- drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 31 ++++++++++++-------------= ---- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/= panfrost/panfrost_perfcnt.c index 7020c0192e18..ad1156678e91 100644 --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c @@ -35,6 +35,16 @@ struct panfrost_perfcnt { struct completion dump_comp; }; =20 +static void panfrost_perfcnt_gpu_disable(struct panfrost_device *pfdev) +{ + gpu_write(pfdev, GPU_PERFCNT_CFG, + GPU_PERFCNT_CFG_MODE(GPU_PERFCNT_CFG_MODE_OFF)); + gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0x0); + gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0x0); + gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0x0); + gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); +} + void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev) { complete(&pfdev->perfcnt->dump_comp); @@ -193,12 +203,7 @@ static int panfrost_perfcnt_disable_locked(struct panf= rost_device *pfdev, if (user !=3D perfcnt->user) return -EINVAL; =20 - gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0x0); - gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0x0); - gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0x0); - gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); - gpu_write(pfdev, GPU_PERFCNT_CFG, - GPU_PERFCNT_CFG_MODE(GPU_PERFCNT_CFG_MODE_OFF)); + panfrost_perfcnt_gpu_disable(pfdev); =20 perfcnt->user =3D NULL; drm_gem_vunmap(&perfcnt->mapping->obj->base.base, &map); @@ -327,12 +332,7 @@ int panfrost_perfcnt_init(struct panfrost_device *pfde= v) perfcnt->bosize =3D size; =20 /* Start with everything disabled. */ - gpu_write(pfdev, GPU_PERFCNT_CFG, - GPU_PERFCNT_CFG_MODE(GPU_PERFCNT_CFG_MODE_OFF)); - gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); + panfrost_perfcnt_gpu_disable(pfdev); =20 init_completion(&perfcnt->dump_comp); mutex_init(&perfcnt->lock); @@ -344,10 +344,5 @@ int panfrost_perfcnt_init(struct panfrost_device *pfde= v) void panfrost_perfcnt_fini(struct panfrost_device *pfdev) { /* Disable everything before leaving. */ - gpu_write(pfdev, GPU_PERFCNT_CFG, - GPU_PERFCNT_CFG_MODE(GPU_PERFCNT_CFG_MODE_OFF)); - gpu_write(pfdev, GPU_PRFCNT_JM_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_SHADER_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_MMU_L2_EN, 0); - gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0); + panfrost_perfcnt_gpu_disable(pfdev); } --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2A794D2EC6 for ; Thu, 4 Jun 2026 17:36:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594604; cv=pass; b=EYvPZbb7YItR9Fp/adkX1AOUJbiaC9bKWdM+Zcdd/isb/RfuWObyOHhGQTujSMMbJrOwF0lxLT5HfUKUxynSMIpqm799TzukNECScjdeXjtN9rSpgZxcdZPuS4iNoRw5HL9TwZ4e7vAihIOnvtp2BQU/czF0oeXOajJOko9yTkc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594604; c=relaxed/simple; bh=WcThKA1a70OHaaKBKZIc8vSUJoYKCiqeinoQG/48rg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u7ud0r2c4TJFRcS/uni/6NsSPgxPXxdoeXoGeaaDBVXQULaksEQ0z8Esw83WdolVzEPLJpAcbeYMudyTGScb/wbiCxVZ2gkr5xYAkGHXjFEVCQyJQDrwzf41UDIhyrrXQExctq1/l0jGEaqVZYSqjw+yXIo8WduxTzF8NjCpRbY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=RcH9ZAs6; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="RcH9ZAs6" ARC-Seal: i=1; a=rsa-sha256; t=1780594582; cv=none; d=zohomail.com; s=zohoarc; b=fOGm0o6ZsQMFXoV1NSh2cHmRU2R+ZLPd/uhU1jKepAc9gkYOsA4ziYPSp5hiyTJcsBD+wjYFcoKl3a943FzawE9y3nDf26CaCoGMH6PL2cix56L/F8e6TKaS7OlCQzi35/LlATrcUtEZ//xKI6D+Y4KMpMSP/8c4/NqjOs/dcAc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594582; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=rurijafEhWebG8QZv5/LXjC2OxytpzPuuam2xKhLYsg=; b=FrUh+0ywctz/rdFnHaJKZYDuIzRkJ0rvlHurI9Ac0r6kVyyQFVKpE6prVeUb/OD6+K93XFV0HJ8pUj9xCCASu7+CuB+t2o65GhyveXkW4R7fxs8ghvhzxFHy/8MDRV0a4LBX4mKLeqlenRCRmbB60XSPzEXsaacb4gDjk2EIWHU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594582; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=rurijafEhWebG8QZv5/LXjC2OxytpzPuuam2xKhLYsg=; b=RcH9ZAs6Av3e2439dJSgMn7v2cRPp3BJMiEzlGv7LnN+QR5sWHvowHEz0P/YR384 Rhqt/+5YZ4Jq1kjC0dDf4ozmJLw90AwAo8eLq1motB2UzLaVWEIkWYuWFyBHb9kGMHk ZVpmLyd5Q7jwhLoqwtMmbp0wVMaPkb354h6zc8P4= Received: by mx.zohomail.com with SMTPS id 1780594581583372.39106556364345; Thu, 4 Jun 2026 10:36:21 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:24 +0100 Subject: [PATCH v2 5/7] drm/panfrost: Make reset sequence deal with an active HWPerf session 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: <20260604-claude-fixes-v2-5-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong , Claude X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6177; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=WcThKA1a70OHaaKBKZIc8vSUJoYKCiqeinoQG/48rg4=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8sQVSjXK25sayGYU2dMmYbTGhUYmEIevjN TtrrmtAIyiJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PQfEDACyMaEEnwSjfSeL11KLcFt1dxZI+NIHYjUDFbmxaI8ZYoGwfLR8g2+A15UntOQf0hPa3TM Ilof1lNGPnTJ0FZX3HrzngwUMS0W9I6Et13JQDD7ui8cRITcYUjCk9Xngn3YFVRYIi500AnK2zK qd8J+ih4fxIYVA1doctVU3reCHtDhGAoX8NU1nXY0MoO+TjSeMnaKsQbYUhjBUWiMWk02QtyV8x IJK5fh/wjhiy9ypPY/J7trIkUqAE8Nwo705ndF99bgyFzcU8C9L7D+7+3ge71HupBMNI/DnpQud O6crgWQShM01SZMnQFSyZ+YZ15rqfZAGtUgyzkpSKtNGND8pag4ZdsuryYfK1z3JV5UwMOLqZ+A LYV4Yn/hr5H6Z+wWrA2fqBHcU0hvuoWcWk0XAK6zFCa4aTr+I26no44jHON8xGnKb6gRNzDA+Vr Jy4d3OsjKvbal6feA4XzTCCGOFBM5pVJ+G1l9zQxqzHJOHeTvMkAbU/DdlN7FIEAjld5c= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D Right now, if there's a HW reset and an HWPerf session is active, panfrost_mmu_reset() will reset the AS count for every single open file's mmu struct back to 0, and also invalidate their AS numbers. Then, when disabling hwperf, panfrost_mmu_as_put() will WARN that mmu->as_count is less than zero. Fix this by introducing a perfcnt HW reset path. The choice was made to render perfcnt unusable after reset, so that a user might have to reprogram it with a full disable/enable sequence before requesting more perfcnt dumps. Reported-by: Claude Closes: https://gitlab.freedesktop.org/panfrost/linux/-/work_items/88 Signed-off-by: Adri=C3=A1n Larumbe Fixes: 7786fd108777 ("drm/panfrost: Expose performance counters through uns= table ioctls") --- drivers/gpu/drm/panfrost/panfrost_device.c | 1 + drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 46 +++++++++++++++++++++++++= +++- drivers/gpu/drm/panfrost/panfrost_perfcnt.h | 1 + 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/p= anfrost/panfrost_device.c index 87b372c9e675..2805d50c1b9b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.c +++ b/drivers/gpu/drm/panfrost/panfrost_device.c @@ -426,6 +426,7 @@ bool panfrost_exception_needs_reset(const struct panfro= st_device *pfdev, =20 void panfrost_device_reset(struct panfrost_device *pfdev, bool enable_job_= int) { + panfrost_perfcnt_reset(pfdev); panfrost_gpu_soft_reset(pfdev); =20 panfrost_gpu_power_on(pfdev); diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/= panfrost/panfrost_perfcnt.c index ad1156678e91..c2087ea705fe 100644 --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c @@ -33,6 +33,7 @@ struct panfrost_perfcnt { struct panfrost_file_priv *user; struct mutex lock; struct completion dump_comp; + atomic_t hw_reset_happened; }; =20 static void panfrost_perfcnt_gpu_disable(struct panfrost_device *pfdev) @@ -57,9 +58,13 @@ void panfrost_perfcnt_sample_done(struct panfrost_device= *pfdev) =20 static int panfrost_perfcnt_dump_locked(struct panfrost_device *pfdev) { + struct panfrost_perfcnt *perfcnt =3D pfdev->perfcnt; u64 gpuva; int ret; =20 + if (atomic_read(&perfcnt->hw_reset_happened)) + return -EIO; + reinit_completion(&pfdev->perfcnt->dump_comp); gpuva =3D pfdev->perfcnt->mapping->mmnode.start << PAGE_SHIFT; gpu_write(pfdev, GPU_PERFCNT_BASE_LO, lower_32_bits(gpuva)); @@ -140,6 +145,15 @@ static int panfrost_perfcnt_enable_locked(struct panfr= ost_device *pfdev, goto err_vunmap; } =20 + /* If a reset is ongoing, the AS we get right below will be torn + * down, so rather than waiting until this becomes obvious in a + * perfcnt_dump() ioctl, we ask the user to try again slightly later. + */ + if (atomic_read(&pfdev->reset.pending)) { + ret =3D -EAGAIN; + goto err_vunmap; + } + ret =3D panfrost_mmu_as_get(pfdev, perfcnt->mapping->mmu); if (ret < 0) goto err_vunmap; @@ -173,6 +187,16 @@ static int panfrost_perfcnt_enable_locked(struct panfr= ost_device *pfdev, if (panfrost_has_hw_issue(pfdev, HW_ISSUE_8186)) gpu_write(pfdev, GPU_PRFCNT_TILER_EN, 0xffffffff); =20 + /* If a reset happened, we've no way of knowing whether it was between th= e time we called + * panfrost_mmu_as_get() or before perfcnt_enable(), so clearing this fla= g and going forward + * isn't possible. We must clear the flag and try again in the hopes no r= esets will happen + * between this and the next ioctl invocation. + */ + if (atomic_cmpxchg(&perfcnt->hw_reset_happened, 1, 0)) { + ret =3D EAGAIN; + goto err_disable; + } + /* The BO ref is retained by the mapping. */ drm_gem_object_put(&bo->base); =20 @@ -180,6 +204,8 @@ static int panfrost_perfcnt_enable_locked(struct panfro= st_device *pfdev, =20 return 0; =20 +err_disable: + panfrost_perfcnt_gpu_disable(pfdev); err_vunmap: drm_gem_vunmap(&bo->base, &map); err_put_mapping: @@ -209,7 +235,8 @@ static int panfrost_perfcnt_disable_locked(struct panfr= ost_device *pfdev, drm_gem_vunmap(&perfcnt->mapping->obj->base.base, &map); perfcnt->buf =3D NULL; panfrost_gem_close(&perfcnt->mapping->obj->base.base, file_priv); - panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); + if (!atomic_read(&perfcnt->hw_reset_happened)) + panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); panfrost_gem_mapping_put(perfcnt->mapping); perfcnt->mapping =3D NULL; pm_runtime_put_autosuspend(pfdev->base.dev); @@ -346,3 +373,20 @@ void panfrost_perfcnt_fini(struct panfrost_device *pfd= ev) /* Disable everything before leaving. */ panfrost_perfcnt_gpu_disable(pfdev); } + +void panfrost_perfcnt_reset(struct panfrost_device *pfdev) +{ + struct panfrost_perfcnt *perfcnt =3D pfdev->perfcnt; + + /* Since this function will be called either from a scheduled HW reset + * or a runtime resume, tearing down any perfcnt resources means we're + * doomed to deadlocking with perfcnt_{enable/disable}, since we'd have + * to take the perfecnt lock. On top of that, it'd also violate DMA fence + * signalling rules because GFP_KERNEL allocations are made with the perf= cnt + * lock taken in perfcnt_enable. In light of this, the only thing we can = do + * is disabling perfcnt unconditionally, and notifying the perfcnt user of + * the reset having happpened so that they can take recovery measures. + */ + panfrost_perfcnt_gpu_disable(pfdev); + atomic_set(&perfcnt->hw_reset_happened, 1); +} diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.h b/drivers/gpu/drm/= panfrost/panfrost_perfcnt.h index 8bbcf5f5fb33..8b9bc704b634 100644 --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.h +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.h @@ -14,5 +14,6 @@ int panfrost_ioctl_perfcnt_enable(struct drm_device *dev,= void *data, struct drm_file *file_priv); int panfrost_ioctl_perfcnt_dump(struct drm_device *dev, void *data, struct drm_file *file_priv); +void panfrost_perfcnt_reset(struct panfrost_device *pfdev); =20 #endif --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B29D34D2EC5 for ; Thu, 4 Jun 2026 17:36:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594604; cv=pass; b=MI7SUx0aCfekjhYBX++J/RmvAtxEPpJyV6bFgY+nAOPTrbnJRt9q2UyTgXmGHIBKgdzQiEYH6eli+NIoCm9y5btSkxlpp9xaaoKUM66NtHE4XFbkEImfUOHJNHZyzkjrqZPhcqxgp1Tfql7kvXuBFksJlk9ejjqBqedKvaRRq8w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594604; c=relaxed/simple; bh=XOZYON/h0gjpbCjgbdZ8W9Cc/v4a7uUTt41Tls3kh5U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WJhepyW1gHcAlN65rDZxAfvxhAC18iyDwEGdRj1fdpDZoWHGJVdrLuutRMhLru2ijh6yUI9wQKI5n2lqXUybfJMXc8D0RCQ7J+I8ImfjaEuOEImEzOkJuXEtrPHIiRFy40YboDSej3rfCZEq71Nun0D9u/9e6cR7cR1kVNJ6nVM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=S/E3VCQK; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="S/E3VCQK" ARC-Seal: i=1; a=rsa-sha256; t=1780594586; cv=none; d=zohomail.com; s=zohoarc; b=KLmuyC371ERDtC8Wczkr/p5t89MrfMvUfQr0qaR+GYQ4QOCzz4Jc7imft6ZxXjfBDzUBmFhLBdmnsTBATL7zGxVakx7cSHFOasatXJl+KtEY1U0mJ0c9S1OY3yCvLkomUfL3xIRYH36yIO/eFR2bgP0xx8hlLeg07+5l8ZKqWWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594586; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=iwZcKiyxHwEmbdNy4kCaFfHeOAIucyXq5lbxbdoFBOg=; b=ZtuWXDRJYUKERBaYndjU+UvF14LZKNWRjE3LA2S11eDgv8Av/Jjphvy+LA/miEd/KTa4UVP+hz8zfo+GqtrK9CN6QxkrqAafF1fAfRKeEU+nAB945nAl2DxO4X8vL5L4hKCWYkSTClix0E8ARkPSHMWRjT7BMNYwTDdN2zrZyxE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594586; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=iwZcKiyxHwEmbdNy4kCaFfHeOAIucyXq5lbxbdoFBOg=; b=S/E3VCQKUjJSuxI9QwC4LuAqU1C0c9XX3nNF5zV2mRU+mo2bPBdyf5YyQUpIDg0S +texT6biJKepcc7Z+BuBiaD80vwLgQ1Z2R3ZkNttEHf935w8kpPQ6r3ddtpkCS9jH+r hN3DYXqAp2Xbwfd9aVQpMHJXJbbFL4s2RbZSvsyU= Received: by mx.zohomail.com with SMTPS id 1780594585579182.13885950655424; Thu, 4 Jun 2026 10:36:25 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:25 +0100 Subject: [PATCH v2 6/7] drm/panfrost: Fix PM usage_count mishandling 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: <20260604-claude-fixes-v2-6-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2569; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=XOZYON/h0gjpbCjgbdZ8W9Cc/v4a7uUTt41Tls3kh5U=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8EvcGstm3zaGTXqIh8Jb+vnVGxatCt+Mq4 tA89sCD2KmJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PQURDACnZfXGjdInK3srJRcJTKM5gqH01EKmi2FQKG9sVa/d5YAOSSBQZmxOLuaDkxsFEcysvL9 SX8U58TDl1naXXH6LofqcaZNX0OoX7I5zPxy7kn72lybXI87qq5AUTkVz6WsMpByX0Bps3p0XA3 v/r4UopvvbSZLHvoyG02GPhkxFqJ/4EOLwo2p8SwL3F4OxadS1cN4Y0xrLHx/BvYfsMBhYEoJNi h2j5Sq08DJN79AXSuz1dG3xFoWS2Vr4BJ70Ru96asiDhMLuWqFs4h1nQZkv+dkT9xTjKe7HVjx6 isRu0kxbYR4Pg3eZZzQt1Pl9tbQH/2NiQY39dEv5PneBOg+jcKAyJrFUE6vxof63i3kE/QWTGho vZUswWz48LuIM5v3sZ6cCKBSMi4QlUqQwFlUAw74gUnYtvyDm/FkkW/mFws6QRiv1T2M/4ghE+1 TbRC3bqdM+0LjpR7wCkE+aogkYLqzEJ7AkBlgk44aGf0T8JvGcnPHAMpoKJMbtC7JfGBc= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D During device probe(), failure to do a PM get() will leave the usage_count set to 0, which is the value assigned at device creation time. That means when the autosuspend delay expires, runtime suspend callback won't be invoked, so the device will remain powered on forever. On top of that, failure to call PM put() during device unplug means Panfrost device's PM usage_count increases monotonically for every new module reload. The combined outcome of both of the above was that devfreq OPP transition notifications would be printed all the time, even when no jobs are being submitted. This quickly fills the kernel ring buffer with junk. Even direr than that was the fact MMU interrupts are only enabled when the device is reset, so after device probe() the very first job targeting the tiler heap BO would always time out, because the driver's PM runtime resume callback would not be invoked. Signed-off-by: Adri=C3=A1n Larumbe Fixes: 635430797d3f ("drm/panfrost: Rework runtime PM initialization") Fixes: 876b15d2c88d ("drm/panfrost: Fix module unload") --- drivers/gpu/drm/panfrost/panfrost_drv.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index 2d4b6aa95c66..545fbf2c8d0c 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -989,6 +989,7 @@ static int panfrost_probe(struct platform_device *pdev) pm_runtime_set_active(pfdev->base.dev); pm_runtime_mark_last_busy(pfdev->base.dev); pm_runtime_enable(pfdev->base.dev); + pm_runtime_get_noresume(pfdev->base.dev); pm_runtime_set_autosuspend_delay(pfdev->base.dev, 50); /* ~3 frames */ pm_runtime_use_autosuspend(pfdev->base.dev); =20 @@ -1000,10 +1001,12 @@ static int panfrost_probe(struct platform_device *p= dev) if (err < 0) goto err_out1; =20 + pm_runtime_put_autosuspend(pfdev->base.dev); =20 return 0; =20 err_out1: + pm_runtime_put_noidle(pfdev->base.dev); pm_runtime_disable(pfdev->base.dev); panfrost_device_fini(pfdev); pm_runtime_set_suspended(pfdev->base.dev); @@ -1018,8 +1021,9 @@ static void panfrost_remove(struct platform_device *p= dev) drm_dev_unregister(&pfdev->base); =20 pm_runtime_get_sync(pfdev->base.dev); - pm_runtime_disable(pfdev->base.dev); panfrost_device_fini(pfdev); + pm_runtime_put_noidle(pfdev->base.dev); + pm_runtime_disable(pfdev->base.dev); pm_runtime_set_suspended(pfdev->base.dev); } =20 --=20 2.53.0 From nobody Mon Jun 8 08:29:04 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E51214C9579 for ; Thu, 4 Jun 2026 17:36:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594611; cv=pass; b=hEnPcUnjSFhnwbjOFmwSQ39D1LShfM08B9iNBEaJWOcTtXgP/o6dF4a7riNgqeDi4dRWGil31kHnQnOrRyqRY178bZlYkbGzyc+UIxBivZpGGmJ4Lc+Pl3Oooq8Z9V8kA3YSSyLZc8Kp2qEo9HR/8fKbPo0l6Je3zoY6cHS8KIg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780594611; c=relaxed/simple; bh=dumRWtp4ks0Q+DvO95uLv2aU5B4lPaQ5XXruf50mea0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QIzRHC2vn85Cv8CEo88xNMzUOBvKDJYa/nvO/4PEIYlusVLpLVdX2lixpkQRbMMWvFLezeKOYVxtPCStByZA0yjtMji9kbJVEHuazUDeJgdEzVLnkzfmhfbhOm5GllreTuqcHM/Gxdy02DeB0Lp8Hbnhnf6rjerQSQ0UT2UfzQ4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=Di0y255M; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="Di0y255M" ARC-Seal: i=1; a=rsa-sha256; t=1780594592; cv=none; d=zohomail.com; s=zohoarc; b=OMnNGLGG53U94c7xEB0m3gMLae/8GLdv7UaaFWFWmp0JgBaRKUbWKBr0mSNUy8qhyIvCsfQgTao1d85QbE7oMrM5s86ClAUuuHx+ix7fagUvcMe1nXspEz1dHTSCLXbD4fayiBZffNuwcuSl0qXdRdDqenrSd3pjmddZcLXVv14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780594592; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=j9sHSUi3PmhX9PYpd3gB8oPKmw+NZRiTKgTWp5KmbvY=; b=JUmjweEeyxiq0iBBF27fVcu1pMn0kl6VAm7dgY3qCJqx6v/kjvV2KXZm0i21CWEySpXxV0i5Kd9hip8YC0m5MOwxh1GVopiKvzErHqX3P+kMie0+hLKGOVA2bE1cJdNzbfsyhZhyJtC9cLqM2DQIlNkjmq24otZkqWUhdgjQQrA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780594592; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=j9sHSUi3PmhX9PYpd3gB8oPKmw+NZRiTKgTWp5KmbvY=; b=Di0y255M//6qV35Smt1zgjoUJtsh79i52Kp+OgbqvOdFA6MYuEG2ausbIiiXuBNR CkLfpACoCZ2P3kVF+Io4tfyi5+J1P8mLiOYUKChO5ZxOIpXNLyQyOtW1XmoxpRwtdgv gPz/rFJLqcFlWrTZcF/Y2gwE6sXmILKTvmhexA7E= Received: by mx.zohomail.com with SMTPS id 1780594589499864.5746767377244; Thu, 4 Jun 2026 10:36:29 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Thu, 04 Jun 2026 18:35:26 +0100 Subject: [PATCH v2 7/7] drm/panfrost: Explicitly enable MMU interrupts at device init 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: <20260604-claude-fixes-v2-7-57c6bd4c1655@collabora.com> References: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> In-Reply-To: <20260604-claude-fixes-v2-0-57c6bd4c1655@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Faith Ekstrand , "Marty E. Plummer" , Tomeu Vizoso , Eric Anholt , Alyssa Rosenzweig , Robin Murphy Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= , Neil Armstrong X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2429; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=dumRWtp4ks0Q+DvO95uLv2aU5B4lPaQ5XXruf50mea0=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqIbd8qyzpVeiBvyKn6MXpEAqRsQQX5nUMCyQRg 564/zYNLAWJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCaiG3fAAKCRAOJn5M7lND PSfWC/9Al1Q6ur7ppUBvtcaB8NA6FovK3aFRf3VHVnhXhJsAvU89a9nlIFuF/7R3ualt7/1M1/H rj8Pbsx5R7XDUhUfkWqivODBS9G7DXU5EkV5nbNwYkp0c2eczI282ho1xa/8JE4Ech13MvbcZRX wLUdCoZRwfKRgsKrw5k71u97ohv0j0UhnZp0CJv8i0OPedmONGUKEa1BATIZ271lZINMNrsOfZM uJDyTM+mQBraRCVQLQwMZBPylMZxAQ/lsVbX1XAQBZxJQF8GjFaK48p7DUBVJ1Z8PC7N6e0LC9o /eDI76PwbGjpXIRmqf0Yd6FAy141V2WuLLzBfwIFuPo4cTkRQBhrUdgVQG8xQVqvZflLEErwXqJ EkSsg4vYXOAkXNbSMCB5oklgSeE1H66VBkttvFwUL1IcuE9ih43+5K/P/LniSwKAs/X+JMELaMV ZUYNfreOpESciYPt4Jr/e2uzE86vRWhrmOYWFTlpbQ57c3N4NIgmI0VvL5e5Pg7WjYLuk= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D Because the device must be in a position to accept jobs between the time drm_dev_register() is called and autosuspend first kicks in, there's a very narrow window inbetween during which jobs targeting the tiler buffer object would time out, since the device's PM status is 'Active', but no MMU interrupts were enabled at device initialisation time. Signed-off-by: Adri=C3=A1n Larumbe Fixes: 73e467f60acd ("drm/panfrost: Consolidate reset handling") --- drivers/gpu/drm/panfrost/panfrost_mmu.c | 11 +++++++++-- drivers/gpu/drm/panfrost/panfrost_mmu.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panf= rost/panfrost_mmu.c index 4a3162c3b659..0e1ad6256c2c 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -336,6 +336,12 @@ void panfrost_mmu_as_put(struct panfrost_device *pfdev= , struct panfrost_mmu *mmu WARN_ON(atomic_read(&mmu->as_count) < 0); } =20 +void panfrost_mmu_enable_interrupts(struct panfrost_device *pfdev) +{ + mmu_write(pfdev, MMU_INT_CLEAR, ~0); + mmu_write(pfdev, MMU_INT_MASK, ~0); +} + void panfrost_mmu_reset(struct panfrost_device *pfdev) { struct panfrost_mmu *mmu, *mmu_tmp; @@ -355,8 +361,7 @@ void panfrost_mmu_reset(struct panfrost_device *pfdev) =20 spin_unlock(&pfdev->as_lock); =20 - mmu_write(pfdev, MMU_INT_CLEAR, ~0); - mmu_write(pfdev, MMU_INT_MASK, ~0); + panfrost_mmu_enable_interrupts(pfdev); } =20 static size_t get_pgsize(u64 addr, size_t size, size_t *count) @@ -970,6 +975,8 @@ int panfrost_mmu_init(struct panfrost_device *pfdev) return err; } =20 + panfrost_mmu_enable_interrupts(pfdev); + return 0; } =20 diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.h b/drivers/gpu/drm/panf= rost/panfrost_mmu.h index 27c3c65ed074..3140eb4fea0f 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.h +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.h @@ -12,6 +12,8 @@ struct panfrost_mmu; int panfrost_mmu_map(struct panfrost_gem_mapping *mapping); void panfrost_mmu_unmap(struct panfrost_gem_mapping *mapping); =20 +void panfrost_mmu_enable_interrupts(struct panfrost_device *pfdev); + int panfrost_mmu_init(struct panfrost_device *pfdev); void panfrost_mmu_fini(struct panfrost_device *pfdev); void panfrost_mmu_reset(struct panfrost_device *pfdev); --=20 2.53.0