Re: [PATCH] drm/panfrost: Enable cycle counting when perfcnt is enabled
From: Boris Brezillon
Date: Wed Jun 17 2026 - 11:22:23 EST
On Wed, 17 Jun 2026 16:29:46 +0200
Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> wrote:
> If we don't do that, we end up with invalid timestamps in the
> block headers.
>
> Fixes: 7786fd108777 ("drm/panfrost: Expose performance counters through unstable ioctls")
> Signed-off-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
> ---
> Found while reworking the userside of the perfcnt logic.
> Up until now, we were not using the GPU timestamps in the dumps,
> but this is going to change, so we need that fix in, and
> backported to all stable releases, ideally.
> ---
> drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> index 7020c0192e18..63861b4c7d95 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> @@ -15,6 +15,7 @@
> #include "panfrost_device.h"
> #include "panfrost_features.h"
> #include "panfrost_gem.h"
> +#include "panfrost_gpu.h"
> #include "panfrost_issues.h"
> #include "panfrost_job.h"
> #include "panfrost_mmu.h"
> @@ -166,6 +167,7 @@ static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev,
> /* The BO ref is retained by the mapping. */
> drm_gem_object_put(&bo->base);
>
> + panfrost_cycle_counter_get(pfdev);
As shashiko pointed out, the reset logic messes up with the
cycle_counter refcounting. Adrian, I believe this is something we can
address as part of the perfcnt fixes series you're working on (pre/post
reset hooks for perfcnt so we can release/reacquire resources properly).
> perfcnt->user = user;
>
> return 0;
> @@ -207,6 +209,7 @@ static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev,
> panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu);
> panfrost_gem_mapping_put(perfcnt->mapping);
> perfcnt->mapping = NULL;
> + panfrost_cycle_counter_put(pfdev);
> pm_runtime_put_autosuspend(pfdev->base.dev);
>
> return 0;
>
> ---
> base-commit: 7caf2a2351d4053075670ff3e26a6815da0a9e1e
> change-id: 20260617-panfrost-perfcnt-timestamp-fix-51e04002f494
>
> Best regards,