From nobody Mon Jun 8 22:53:03 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 DFD652DC762 for ; Mon, 25 May 2026 23:04:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750251; cv=pass; b=cgI7T1P+0tQ2wGBHJhQonRdkN+rjh351VBIRVHSlxm6jnC7ce4sfQA6D/N4Xb4D1BGDt7fjXVFKRD6VdSFOB/0biOMtVDptIyy23+E+P93wETYDbnG/VT1jgsITi6ZcfOzCjt6FySYg6bZIOMchvbotbWi07ix3kcK3SCDmzWLU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750251; c=relaxed/simple; bh=bm9lqklRAv3Dn0/PiCpu6hKG1+O8k4ImTYn/4XLjDGg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bfdvQ5d+Rd/dG9+9kv6S82zW3vjqmpsnYSGkT1Moe7WosuAG8WU1G5LMW1dxcr1cVuAuE1KCquR+EMAtbZ9TkYcIjfGyzZuBGH8W07q4H7wfzPj9aLxmu1Ee4hRy1deUXJXBp5jIqnK8fLel9rrJ9HluhjgJwTE1UyPVs2903JE= 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=Jk7i1cGK; arc=pass smtp.client-ip=136.143.188.112 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="Jk7i1cGK" ARC-Seal: i=1; a=rsa-sha256; t=1779750234; cv=none; d=zohomail.com; s=zohoarc; b=KBA/KvSqxiQb/euCMZ/U8AciuCCS4UE3O9NJR4JiSutI/gG38EEEGkXlpIkKGKJ/i9nMs3NX5hHBrV5t5MwI6OcxyPBpVUX/NzORgdzqGYbNU1j6p1s4gQ6Bdel595OOKtXV8a6SqDcC8C3BY69EY9LrKaD4Jx7xCqhJOoiSeBQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779750234; 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=TgLiIrP0ZeVttAYyL5JbYAbFvBp9FWT+lDONDEbXRn4=; b=kLHuPZPVYQ1/WFksQf7Itk/ZsDHvY7YewzkwLcnXdmmCsHwUhwCDGORT920I3zE+gWDfaefu/PbvIU6+ebZ/tRDkNLPgEYKXbFER7WD7OMw9C0rgkJlAR4rfpCvGuvRAUQO/PaH+2YGYhynP9PWCG94rXKDq6gR7DD4LTguitQE= 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=1779750234; 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=TgLiIrP0ZeVttAYyL5JbYAbFvBp9FWT+lDONDEbXRn4=; b=Jk7i1cGKZdct8Sm57LDb0JCE32p72fZVKvVF8mJCQYc04LlOTaWE9BzpXLuKzSm0 bvqJYjiDen4wWG1bjbZTtZAgVK6PlKqeZUJotwqjMOTsbF7RO80QexdL6V0zlAfxJ7D BoRUcsFW8AIvpO2rGRFBJmxH/b14tfFhma8ZA/F4= Received: by mx.zohomail.com with SMTPS id 1779750233707754.7578117236782; Mon, 25 May 2026 16:03:53 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Tue, 26 May 2026 00:03:35 +0100 Subject: [PATCH 1/4] 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: <20260526-claude-fixes-v1-1-16e92eaa4949@collabora.com> References: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> In-Reply-To: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=844; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=bm9lqklRAv3Dn0/PiCpu6hKG1+O8k4ImTYn/4XLjDGg=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqFNVUr2hE8oABP2wY6WO45ZiW6MxnRIe2aKwFc /w+5kFCg8CJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCahTVVAAKCRAOJn5M7lND PbVuDACbJyXisz2wG0ZK/ITTGyO3fj0IlI7DKatrcd4C69P0l2+7yiK35nYRnn17p6XKRmLmYM3 Mrb9baWg/rmxb5yT47M/0bZFICFVxDqr8aE0EhqeaCL+CuYq8UlrUUxDZoTWVCyGf77jN7jTkwz lVAN5AaDPMcoEpqZTvri2X9dfx06Jck7IdvRP5oN0eun9z02KMSQB8WlB8qJGkPfMmHp5VMHmUv zovF6s4iqxJGPwt8//B8hDyJmFBkNWgBYZ7KhiHxoP5z2tdavjeHMVpmURn+Sbiw0guc7uG85hG pVVr2L0/azbAJXLt0saTv5af9yklWo+a14beJXU5+ip+R4OMBgnnLwH8g/kcZiaWraJILOepg+L hfvjJVpRHi6zJN4zxYFsX9Ie2E20QFOUgsQNLJPiUnLio19e052VaXPBx7wKoc12Hxcu+oyBxY0 EPKQqCTI1KsHWbHzeX3lr/S9uJqU9d4JoQlMduNmkx5lCuViZBsmiyWLZy8kPC5w2jtLc= 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. Signed-off-by: Adri=C3=A1n Larumbe --- 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 22:53:03 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 09CF3357D03 for ; Mon, 25 May 2026 23:04:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750254; cv=pass; b=Volv7GtNdAXosvwb+3qirjrgXey22iwJ6ES3t+Uuls57z+gFNKtL4aMR+Wq/JeccZBTcdnSYjzzLy0x3ruTPRqA3ZV6VO6PVy8q5ioH7sIt+A9fp8zb54evI4YAdwW+RJqGppdROL0/2U4VAzO8IeBCngumKQ8hc8k5YerCjDfk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750254; c=relaxed/simple; bh=8r5vOGvj18w3GEXNY0DJX4f83gteHWkpGVKL0p6ej0c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dsobZR8yfRSKfITEBXOSfL1gETemO8ACZ1cmZjfGSp5QJRNnPfFYKTHYFtNc8W9oqJqmyLZOJvsup1/I315a8Hz651kPuaivSQGJ8eT4EYpxwhMAC1BroGMJEpdT4dJFmOgIxS9x0bjz6TfHSO6W5shzJEiyCLDA/Y35JJR8oGA= 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=WQueOBcv; arc=pass smtp.client-ip=136.143.188.112 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="WQueOBcv" ARC-Seal: i=1; a=rsa-sha256; t=1779750238; cv=none; d=zohomail.com; s=zohoarc; b=SQi6buz5FVmGcs9wqGc4KawUzKJTEIcrY2R9gGqU5un2dHR8+jg0U1ttcTms5QsW1giprO83vbQDQHqfUInzWeTLxDF3QlCAdr+VyM8BXd1ahXkhPvVLDrRLWWgQJ4vzMZDPWBcu0c+zGQtzTS9OAVV8hfi/0OGJ5ph53CP1ooI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779750238; 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=cE0WAZETd4bXQP6F1gEItawSuCDE/IK7BkdH9mtvDLE=; b=jCz462ZGQ/vOiCZRsY2XJws0LZjLfqIQEipSXxewlYAIEE4j38XimlXK8odQSZ1orNFKYB0y/ug9dee7Me8UQKuR7i4XjLc1kkD/SMvo8Vdy6z0ZoQMEKI37caVF2J2gR4CxI8TgvsHbIVXN51OXsVAdII4CMBSS4411LSfZ2ew= 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=1779750238; 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=cE0WAZETd4bXQP6F1gEItawSuCDE/IK7BkdH9mtvDLE=; b=WQueOBcvf09ruMduuDQwDEaHjCRa+cov1TfDH+Ywx54WKagxSK8stEU6W4sqjVPP 26PRIna3xQoOD7akVcLRgigwkff4NVCQKmEjG9h3YZJoR7EPLxx3KoFlPC0bga+fs5a YKP6LOuKw5LktoaazloXCecs2GzNhF3W2b/Q6MVw= Received: by mx.zohomail.com with SMTPS id 1779750236263626.1047340932973; Mon, 25 May 2026 16:03:56 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Tue, 26 May 2026 00:03:36 +0100 Subject: [PATCH 2/4] 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: <20260526-claude-fixes-v1-2-16e92eaa4949@collabora.com> References: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> In-Reply-To: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5960; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=8r5vOGvj18w3GEXNY0DJX4f83gteHWkpGVKL0p6ej0c=; b=kA0DAAoBDiZ+TO5TQz0ByyZiAGoU1VShCd1i5fmMIZU+yrD9Al1irlgmFP3nRGeX4m6NUpT48 okBswQAAQoAHRYhBDJAMOjABRdd+TcHpA4mfkzuU0M9BQJqFNVUAAoJEA4mfkzuU0M9WfgL/1JX 1mGBo9ju8aTn7MOKiSvLFv8+NHps5kX9kVBdB6jKP4SIkiRqzmbCKwXTWNAxo1+9ZGGQB7CBmWE qDcR7MQSllgyJkc4ECBGABBXUQf7/QHoBXaIMZZnuL7YED8nUAj1O1e3ncDukc4+T6b3cVJmAge hjOBNKcXFiCHMK+JcJL8+XxS+6o5FRbyzVoBEKfGdK0WWzd79Qch8AC1n8cZ/TzEfYJYoOCvQcF BuBiVPRN9HCMCsd5ffpkjj9WzvtoFMiQFuZpyrTcK+htIEveuvzGBUrQkn7xc3ZxUNXoYxRdt75 JDL5pVJyQq78xS8nDReN8lT7cOk/gJFi8bEAauMCCMbrYi2NJPFFYcIZL2DLquzICwtkBpC8/io 4j3c6Ahqu46eMCQ5VMae9mGl8gRuwJpce5Iye0582+b6MNT+Dr/spAlLpfRiIMQuYornz9VDWdy gztWlc6l6krCvd3ENxj6V4vKFR7WY3XNbN/aazM6SISn4SRjDBPKN+PcbB3A== 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 mmu structs for all all open files to have zero users and their HW address space assignment. 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. Signed-off-by: Adri=C3=A1n Larumbe --- drivers/gpu/drm/panfrost/panfrost_device.c | 1 + drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 58 +++++++++++++++++++------= ---- drivers/gpu/drm/panfrost/panfrost_perfcnt.h | 1 + 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/p= anfrost/panfrost_device.c index 7fed22d555a5..2a4417bc4065 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.c +++ b/drivers/gpu/drm/panfrost/panfrost_device.c @@ -421,6 +421,7 @@ void panfrost_device_reset(struct panfrost_device *pfde= v, bool enable_job_int) { panfrost_gpu_soft_reset(pfdev); =20 + panfrost_perfcnt_reset(pfdev); panfrost_gpu_power_on(pfdev); panfrost_mmu_reset(pfdev); =20 diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/= panfrost/panfrost_perfcnt.c index 7020c0192e18..d6a6fbe35578 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; + bool hw_reset_happened; }; =20 void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev) @@ -166,6 +167,7 @@ static int panfrost_perfcnt_enable_locked(struct panfro= st_device *pfdev, /* The BO ref is retained by the mapping. */ drm_gem_object_put(&bo->base); =20 + perfcnt->hw_reset_happened =3D false; perfcnt->user =3D user; =20 return 0; @@ -183,6 +185,16 @@ static int panfrost_perfcnt_enable_locked(struct panfr= ost_device *pfdev, return ret; } =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); +} + static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, struct drm_file *file_priv) { @@ -193,18 +205,14 @@ static int panfrost_perfcnt_disable_locked(struct pan= frost_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); perfcnt->buf =3D NULL; panfrost_gem_close(&perfcnt->mapping->obj->base.base, file_priv); - panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); + if (!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); @@ -258,6 +266,15 @@ int panfrost_ioctl_perfcnt_dump(struct drm_device *dev= , void *data, goto out; } =20 + /* + * A HW reset when HWPerf was active mean user should go through + * a disable/enable sequence before requesting more frame dumps. + */ + if (perfcnt->hw_reset_happened) { + ret =3D -EAGAIN; + goto out; + } + ret =3D panfrost_perfcnt_dump_locked(pfdev); if (ret) goto out; @@ -327,12 +344,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 +356,18 @@ int panfrost_perfcnt_init(struct panfrost_device *pfd= ev) 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); +} + +void panfrost_perfcnt_reset(struct panfrost_device *pfdev) +{ + struct panfrost_perfcnt *perfcnt =3D pfdev->perfcnt; + + mutex_lock(&perfcnt->lock); + if (perfcnt->user) { + panfrost_perfcnt_gpu_disable(pfdev); + panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); + perfcnt->hw_reset_happened =3D true; + } + mutex_unlock(&perfcnt->lock); } 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 22:53:03 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 4E3E933FE06 for ; Mon, 25 May 2026 23:04:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750257; cv=pass; b=WsskkGVNbY+8AYl45Nr6BcbujjcieV+Yd3i9JP5G2Ii34+P8xlQ/xuQ+S6/dEVDudyMS4d6gu9OOgtZW6L1+1TB2sljivQI8vtlt/g07hyfeqabmH3LTZ0tcLrkQi8b24KaTRlxijm6gzYg6Oo7ABGjr9xBdhWTk0vvZtu2p5Fk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750257; c=relaxed/simple; bh=xsd08LtPc0/EMJNc0Fv0h3QtagcBmQSR6fsB72RpkJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JX2gTG3lBZNamRlQOzYR7PPsQCEK2poiMKaIFmwgb+sqjO7SOcTgIQbVSd8RkJXunVPHXqhrw+fGL2oy7xmsx1o+spN5nIMh1Z+mR3Kohpk8P4XIGpCgYTt9WvjdTNLKOuBrQFr23vIdD1hGPy+2luAP67ln2jGUnScuY63snn0= 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=Qi4UNYI8; arc=pass smtp.client-ip=136.143.188.112 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="Qi4UNYI8" ARC-Seal: i=1; a=rsa-sha256; t=1779750240; cv=none; d=zohomail.com; s=zohoarc; b=NOfRVL4Gy7pzycBnR3mFPIH1LQA5t5vr/ZLMTEeZH01cSOZpexpobgJ/M0YnJ6l5z1rS2mwG2ANexcLK9BmQciAZQc67PLllbWZkGxXtGoNwwVlyfwcuw/4JxJVxD0r4jGxgGDmxQV/+AFIj5e3SkFpCrIeIPIOzLn+MagR9LYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779750240; 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=byLWRWpKtmZfLm7sCoM/7sa3fr4SBpkyeCUAwpWaub0=; b=eEBuu55m8y5vXFSdEwj4VlKHkvccFrbxMdLi22hy3at/3dsr83FAVkZREEKEuK6LnlTmaIdivg+CIgJJ8wbtVbHySBewBKa23lWHLCgzODmIfSqLz3EteaXtRnt6jH2BgcbefOAFjlhNc6L8Yw6x4E+PFcL6yTZSgXwajQ0jzms= 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=1779750240; 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=byLWRWpKtmZfLm7sCoM/7sa3fr4SBpkyeCUAwpWaub0=; b=Qi4UNYI86NWmnb+3K8tjr7gO5rp+m5pb5DMqmsrxTLjQwiRkh4eh1HGP8iLBNG46 xvsV9PXxFMOlyPc0tF8RE1JQWaXQWZ9oKDU6b4oat3auXBVoSyb9gb1N+Z0kOEAtHiC 8nj4IaiJ9pfiMdc/+P0Qaslpfgfj8LMn9h/9TpDk= Received: by mx.zohomail.com with SMTPS id 1779750239098790.8531391101913; Mon, 25 May 2026 16:03:59 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Tue, 26 May 2026 00:03:37 +0100 Subject: [PATCH 3/4] 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: <20260526-claude-fixes-v1-3-16e92eaa4949@collabora.com> References: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> In-Reply-To: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1004; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=xsd08LtPc0/EMJNc0Fv0h3QtagcBmQSR6fsB72RpkJM=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqFNVUGo9pSKL5PJpiReVxUvrRF6LV/jEfOL4OC DQbRV0LcFyJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCahTVVAAKCRAOJn5M7lND PTidC/9Ca8/3VjFMNBo7MxREjgjRWNLCgY/eHPCLXthxkWE+UCC98lgVIahZxIyUlw8ntj3SCIv h80mDYQ5WzyiPi3Gq+9B+Yx9ifKmQgmFYNh2MxxeVMF0vjEbR8pjLhwYEeR7jBvJeouTluwtNb2 dAs7bGyAUIwcwVgknZA9paVK71YM9/dKkP3go7QkSWp3HGiXmnmto7KHOHP6e7UbWUU50K+XEHo bk1070XpWjKY+OE/a0BXZyoJ1FWsojqmbj8fEaw+jGTSmc7rJWextfjnT73r7SqAh0PzAN3jJMu 6IOX7xnyZ7AzyEE9atoFlHknnSKhEAdUSFS31wMzSKpB670p7Ae85B5Rxb+5CBgM/P5+8cbVbxz dyth5TlNdH2CIrF23pIAz8uLI2M9/dmqo+TzlMNNY7drCS3OVQ6YnZRAYl3loQ+EpKlSVw8DDKv arIRFcw36RuHgbah66lw2iFVlgJuT85eW2ebxkkQphrAKi6WN8TuKgXaYSWIxJjTm2jD0= 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. Signed-off-by: Adri=C3=A1n Larumbe --- 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 22:53:03 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 4E36F305677 for ; Mon, 25 May 2026 23:04:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750257; cv=pass; b=ugWEYtd8j81gNA8z+VXwms3vqM21KitRayLoTidXp1WRjt/Mv07MdlP0fYjhSc4NtFsxcgtvaD/T90OqpNIuDsjm/fbBT3h7KNwZMVteVFRf9UFwLLOxWbXvvKh4UctUDdkxtI0LrWgJ+IRsG883Gm9uffWp8C9y7in0luMQcyc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779750257; c=relaxed/simple; bh=izv85PNFMeLtWKhKwSBpU+rJAP155QAMwLKf4ltC0WA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p1k8ZWID7K95lw7PXoh3BfWG0JJUI5T72AH2SjlFp8mKaQIZzEQiF4wOL1Mtn5s9WtREqKxD62fmynyzeakWBqaIAKJuWkckpYzX7LwowHyaBKV1UIcViwIyydMPJbUmZKzQrR19QwCryfizAO+tMJpNMI3FLTUqg088jVWYmi8= 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=JBoyNN02; arc=pass smtp.client-ip=136.143.188.112 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="JBoyNN02" ARC-Seal: i=1; a=rsa-sha256; t=1779750242; cv=none; d=zohomail.com; s=zohoarc; b=l5r/MxAlqaQXDOibfw8Zin5iV7fjs+jEKqvE0L8EY2Lwt0S0nvmTmcWrFdl+SoBTHnRfYQXt275wjdS8T5G82CsTocuH8wo4quz1VpGHNXPCH//Z/u9Ijh6Feq4ydiKhx3tsjiXUc88OTOAB6HHufr7GJI9qqTXhPCW9mZpQ9zs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779750242; 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=3uMmtZrZVnNyNjElE0Imw5xihVKdfytgiAvGx9AV5Z4=; b=TDpoJ51itp5ERAzCkCCRUKD4rka4erAV8Xsr3gqPucF/h2o+qtqbhjKQff950h0n7Q3c+xSlMTuuphYCBJF/OL6/rq8vsLx729hHQOYNjgVwUiA9bV4kRmrsJuQfFFF5afpba/Be0yMs0kWy0m5uBs/gObOnwxQJfJLbGOqlfyg= 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=1779750242; 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=3uMmtZrZVnNyNjElE0Imw5xihVKdfytgiAvGx9AV5Z4=; b=JBoyNN021DJI9jwZ7evGC6UMEdnuM+uNzwXUmWyMDfk8h0q63Mx+sNCVcdnasyLg rE9xRiCGSeoU3toGdtooaZt52NRNAe1aPlbkp36679cVMW+UENHTbLHjdAsw6DZHRye mqman0gcMbNtbQrfrBxHAxS/e2DwbRqIrY2Xlxhs= Received: by mx.zohomail.com with SMTPS id 1779750241929857.2187873046425; Mon, 25 May 2026 16:04:01 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Tue, 26 May 2026 00:03:38 +0100 Subject: [PATCH 4/4] drm/panfrost: Fix RPM so device suspends when no jobs are in flight 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: <20260526-claude-fixes-v1-4-16e92eaa4949@collabora.com> References: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> In-Reply-To: <20260526-claude-fixes-v1-0-16e92eaa4949@collabora.com> To: Boris Brezillon , Rob Herring , Steven Price , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Collabora Kernel Team , =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1960; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=izv85PNFMeLtWKhKwSBpU+rJAP155QAMwLKf4ltC0WA=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqFNVUxp2+zhJQjklUg8NhrHgHksT6d4hHxh3W7 HgdTobBBFGJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCahTVVAAKCRAOJn5M7lND PaIyC/41kv+5gXNp3reqJxfvPafthIPiVGzU9WGZZUrALaqw7R7artNkECChnqcBUeFDd51RAM1 oQ1a6bUycTSBfIWjL4FK5aTPuewtJ/FLmhCtI2SJ+kUUZw5ChVKTHxgP41S/Z6ALC1uYVLmGKOG LHUYWbYbYhOTWSZdbA2zIgPeTEZVYg4uBOMcg0yJ1sb2AlysrA7geH1650jj1K+FCZnXbii/4N5 BbZ42IMKxYoSB2K9wOuFNwr1jyGvsWhKtIiI3xGEJnWugY8i/csuR52udYB3OPH/r2fjOuXBTwJ /ELL1N+htnnoGj6xyPg8+jxIqZR9T/4nt9zWXMnGSnXO3QSA0ZmqtCFBoeFZaEG1Keg9LnGSlwo mdbjcXFLd7KzK30TnoRETBQ+8tuhGlzxe9POMu2X1bs/tujZ1G87lwQNGug4cyo5+L3DJXvhdNR 2zIz3dDRULLNY5m9l0hrlNvYOeXVtDbxCZcuRXF0SrFBC2w+Qln1kXTAB2RNmYItxy+KI= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D Right now, because of an apparent bug in the management of runtime PM, the device remains powered on at all times. This was causing three different issues: - Because MMU interrupts are only enabled when the device resets, the very first job targeting the tiler heap would always time out, as a device reset is only performed during a runtime resume operation. - Devfreq OPP transition notifications would be printed all the time, even when the device is meant to be idle, which polute the kernel ring buffer. - PM refcnt would eventually underflow. Signed-off-by: Adri=C3=A1n Larumbe --- drivers/gpu/drm/panfrost/panfrost_drv.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index cb8e5015847f..68b831add0bb 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -986,9 +986,8 @@ static int panfrost_probe(struct platform_device *pdev) goto err_out0; } =20 - pm_runtime_set_active(pfdev->base.dev); - pm_runtime_mark_last_busy(pfdev->base.dev); pm_runtime_enable(pfdev->base.dev); + pm_runtime_resume_and_get(pfdev->base.dev); pm_runtime_set_autosuspend_delay(pfdev->base.dev, 50); /* ~3 frames */ pm_runtime_use_autosuspend(pfdev->base.dev); =20 @@ -1004,6 +1003,8 @@ static int panfrost_probe(struct platform_device *pde= v) if (err) goto err_out2; =20 + pm_runtime_put_sync_suspend(pfdev->base.dev); + return 0; =20 err_out2: @@ -1024,8 +1025,9 @@ static void panfrost_remove(struct platform_device *p= dev) panfrost_gem_shrinker_cleanup(&pfdev->base); =20 pm_runtime_get_sync(pfdev->base.dev); - pm_runtime_disable(pfdev->base.dev); panfrost_device_fini(pfdev); + pm_runtime_put_sync(pfdev->base.dev); + pm_runtime_disable(pfdev->base.dev); pm_runtime_set_suspended(pfdev->base.dev); } =20 --=20 2.53.0