Lines Matching refs:perfcnt
40 complete(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_clean_cache_done()
53 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_dump_locked()
54 gpuva = pfdev->perfcnt->mapping->mmnode.start << PAGE_SHIFT; in panfrost_perfcnt_dump_locked()
61 ret = wait_for_completion_interruptible_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_dump_locked()
76 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_enable_locked() local
82 if (user == perfcnt->user) in panfrost_perfcnt_enable_locked()
84 else if (perfcnt->user) in panfrost_perfcnt_enable_locked()
91 bo = drm_gem_shmem_create(pfdev->ddev, perfcnt->bosize); in panfrost_perfcnt_enable_locked()
102 perfcnt->mapping = panfrost_gem_mapping_get(to_panfrost_bo(&bo->base), in panfrost_perfcnt_enable_locked()
104 if (!perfcnt->mapping) { in panfrost_perfcnt_enable_locked()
112 perfcnt->buf = map.vaddr; in panfrost_perfcnt_enable_locked()
118 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_enable_locked()
124 ret = wait_for_completion_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_enable_locked()
131 perfcnt->user = user; in panfrost_perfcnt_enable_locked()
133 as = panfrost_mmu_as_get(pfdev, perfcnt->mapping->mmu); in panfrost_perfcnt_enable_locked()
170 panfrost_gem_mapping_put(perfcnt->mapping); in panfrost_perfcnt_enable_locked()
184 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_disable_locked() local
185 struct iosys_map map = IOSYS_MAP_INIT_VADDR(perfcnt->buf); in panfrost_perfcnt_disable_locked()
187 if (user != perfcnt->user) in panfrost_perfcnt_disable_locked()
197 perfcnt->user = NULL; in panfrost_perfcnt_disable_locked()
198 drm_gem_vunmap_unlocked(&perfcnt->mapping->obj->base.base, &map); in panfrost_perfcnt_disable_locked()
199 perfcnt->buf = NULL; in panfrost_perfcnt_disable_locked()
200 panfrost_gem_close(&perfcnt->mapping->obj->base.base, file_priv); in panfrost_perfcnt_disable_locked()
201 panfrost_mmu_as_put(pfdev, perfcnt->mapping->mmu); in panfrost_perfcnt_disable_locked()
202 panfrost_gem_mapping_put(perfcnt->mapping); in panfrost_perfcnt_disable_locked()
203 perfcnt->mapping = NULL; in panfrost_perfcnt_disable_locked()
214 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_enable() local
226 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
232 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
241 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_dump() local
250 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
251 if (perfcnt->user != file_priv->driver_priv) { in panfrost_ioctl_perfcnt_dump()
260 if (copy_to_user(user_ptr, perfcnt->buf, perfcnt->bosize)) in panfrost_ioctl_perfcnt_dump()
264 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
273 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_close() local
276 mutex_lock(&perfcnt->lock); in panfrost_perfcnt_close()
277 if (perfcnt->user == pfile) in panfrost_perfcnt_close()
279 mutex_unlock(&perfcnt->lock); in panfrost_perfcnt_close()
286 struct panfrost_perfcnt *perfcnt; in panfrost_perfcnt_init() local
319 perfcnt = devm_kzalloc(pfdev->dev, sizeof(*perfcnt), GFP_KERNEL); in panfrost_perfcnt_init()
320 if (!perfcnt) in panfrost_perfcnt_init()
323 perfcnt->bosize = size; in panfrost_perfcnt_init()
333 init_completion(&perfcnt->dump_comp); in panfrost_perfcnt_init()
334 mutex_init(&perfcnt->lock); in panfrost_perfcnt_init()
335 pfdev->perfcnt = perfcnt; in panfrost_perfcnt_init()