Lines Matching refs:perfcnt
39 complete(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_clean_cache_done()
52 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_dump_locked()
53 gpuva = pfdev->perfcnt->mapping->mmnode.start << PAGE_SHIFT; in panfrost_perfcnt_dump_locked()
60 ret = wait_for_completion_interruptible_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_dump_locked()
75 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_enable_locked() local
81 if (user == perfcnt->user) in panfrost_perfcnt_enable_locked()
83 else if (perfcnt->user) in panfrost_perfcnt_enable_locked()
90 bo = drm_gem_shmem_create(pfdev->ddev, perfcnt->bosize); in panfrost_perfcnt_enable_locked()
101 perfcnt->mapping = panfrost_gem_mapping_get(to_panfrost_bo(&bo->base), in panfrost_perfcnt_enable_locked()
103 if (!perfcnt->mapping) { in panfrost_perfcnt_enable_locked()
111 perfcnt->buf = map.vaddr; in panfrost_perfcnt_enable_locked()
117 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_enable_locked()
123 ret = wait_for_completion_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_enable_locked()
130 perfcnt->user = user; in panfrost_perfcnt_enable_locked()
132 as = panfrost_mmu_as_get(pfdev, perfcnt->mapping->mmu); in panfrost_perfcnt_enable_locked()
169 panfrost_gem_mapping_put(perfcnt->mapping); in panfrost_perfcnt_enable_locked()
183 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_disable_locked() local
184 struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(perfcnt->buf); in panfrost_perfcnt_disable_locked()
186 if (user != perfcnt->user) in panfrost_perfcnt_disable_locked()
196 perfcnt->user = NULL; in panfrost_perfcnt_disable_locked()
197 drm_gem_shmem_vunmap(&perfcnt->mapping->obj->base.base, &map); in panfrost_perfcnt_disable_locked()
198 perfcnt->buf = NULL; in panfrost_perfcnt_disable_locked()
199 panfrost_gem_close(&perfcnt->mapping->obj->base.base, file_priv); in panfrost_perfcnt_disable_locked()
200 panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); in panfrost_perfcnt_disable_locked()
201 panfrost_gem_mapping_put(perfcnt->mapping); in panfrost_perfcnt_disable_locked()
202 perfcnt->mapping = NULL; in panfrost_perfcnt_disable_locked()
213 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_enable() local
225 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
231 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
240 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_dump() local
249 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
250 if (perfcnt->user != file_priv->driver_priv) { in panfrost_ioctl_perfcnt_dump()
259 if (copy_to_user(user_ptr, perfcnt->buf, perfcnt->bosize)) in panfrost_ioctl_perfcnt_dump()
263 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
272 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_close() local
275 mutex_lock(&perfcnt->lock); in panfrost_perfcnt_close()
276 if (perfcnt->user == pfile) in panfrost_perfcnt_close()
278 mutex_unlock(&perfcnt->lock); in panfrost_perfcnt_close()
285 struct panfrost_perfcnt *perfcnt; in panfrost_perfcnt_init() local
318 perfcnt = devm_kzalloc(pfdev->dev, sizeof(*perfcnt), GFP_KERNEL); in panfrost_perfcnt_init()
319 if (!perfcnt) in panfrost_perfcnt_init()
322 perfcnt->bosize = size; in panfrost_perfcnt_init()
332 init_completion(&perfcnt->dump_comp); in panfrost_perfcnt_init()
333 mutex_init(&perfcnt->lock); in panfrost_perfcnt_init()
334 pfdev->perfcnt = perfcnt; in panfrost_perfcnt_init()