On Sat, 12 Sep 2026 00:28:13 +0100
Adrián Larumbe <[email protected]> wrote:

> The GPU cache flush/invalidate operation is unnecessary. First off, the
> GPU doesn't read off the perfcnt sample buffer, only writes into it, so
> an invalidate doesn't make a difference. Then flushing GPU caches after
> each sample has been written is enough for the CPU to see updated values.
> 
> Signed-off-by: Adrián Larumbe <[email protected]>

Reviewed-by: Boris Brezillon <[email protected]>

> ---
>  drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 15 ++-------------
>  1 file changed, 2 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c 
> b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> index f71534e741b6..ffc77121070e 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c
> @@ -124,21 +124,10 @@ static int panfrost_perfcnt_enable_locked(struct 
> panfrost_device *pfdev,
>       panfrost_gem_internal_set_label(&bo->base, "Perfcnt sample buffer");
>  
>       /*
> -      * Invalidate the cache and clear the counters to start from a fresh
> -      * state.
> +      * Clear the counters to start from a fresh state.
>        */
> -     reinit_completion(&pfdev->perfcnt->dump_comp);
> -     gpu_write(pfdev, GPU_INT_CLEAR,
> -               GPU_IRQ_CLEAN_CACHES_COMPLETED |
> -               GPU_IRQ_PERFCNT_SAMPLE_COMPLETED);
> +     gpu_write(pfdev, GPU_INT_CLEAR, GPU_IRQ_PERFCNT_SAMPLE_COMPLETED);
>       gpu_write(pfdev, GPU_CMD, GPU_CMD_PERFCNT_CLEAR);
> -     gpu_write(pfdev, GPU_CMD, GPU_CMD_CLEAN_INV_CACHES);
> -     ret = wait_for_completion_timeout(&pfdev->perfcnt->dump_comp,
> -                                       msecs_to_jiffies(1000));
> -     if (!ret) {
> -             ret = -ETIMEDOUT;
> -             goto err_vunmap;
> -     }
>  
>       ret = panfrost_mmu_as_get(pfdev, perfcnt->mapping->mmu);
>       if (ret < 0)
> 

Reply via email to