On 09/10/2026 13:33, Adrián Larumbe wrote: > The GPU cache flush/invalidate operation is unnecessary. In the usual case, > before a perfcnt dump is requested, there will be no stale lines in GPU > caches for the sample BO's physmem pages, since their memory had not > recently been addressed by the GPU. > > However, in the off-chance that the sample BO reuses memory that the GPU > had recently addressed and for which it contains stale lines in its caches, > there already was a FLUSH_PT command being issued as part of the buffer GPU > mapping procedure, so by the time panfrost_gem_open() comes back at perfcnt > session enable, stale GPU cache lines should've already been evicted. > > In either case, forcing a GPU cache clean when enabling a new session makes > no difference, and removing it simplifies handling of the error path.
Thanks, that commit message explains what's going on and why it's safe. Reviewed-by: Steven Price <[email protected]> > > Reviewed-by: Boris Brezillon <[email protected]> > Signed-off-by: Adrián Larumbe <[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) >
