Lines Matching refs:perfcnt

38 	complete(&pfdev->perfcnt->dump_comp);  in panfrost_perfcnt_clean_cache_done()
51 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_dump_locked()
52 gpuva = pfdev->perfcnt->bo->node.start << PAGE_SHIFT; in panfrost_perfcnt_dump_locked()
59 ret = wait_for_completion_interruptible_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_dump_locked()
73 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_enable_locked() local
78 if (user == perfcnt->user) in panfrost_perfcnt_enable_locked()
80 else if (perfcnt->user) in panfrost_perfcnt_enable_locked()
87 bo = drm_gem_shmem_create(pfdev->ddev, perfcnt->bosize); in panfrost_perfcnt_enable_locked()
91 perfcnt->bo = to_panfrost_bo(&bo->base); in panfrost_perfcnt_enable_locked()
94 ret = panfrost_mmu_map(perfcnt->bo); in panfrost_perfcnt_enable_locked()
98 perfcnt->buf = drm_gem_shmem_vmap(&bo->base); in panfrost_perfcnt_enable_locked()
99 if (IS_ERR(perfcnt->buf)) { in panfrost_perfcnt_enable_locked()
100 ret = PTR_ERR(perfcnt->buf); in panfrost_perfcnt_enable_locked()
108 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_enable_locked()
114 ret = wait_for_completion_timeout(&pfdev->perfcnt->dump_comp, in panfrost_perfcnt_enable_locked()
121 perfcnt->user = user; in panfrost_perfcnt_enable_locked()
159 drm_gem_shmem_vunmap(&perfcnt->bo->base.base, perfcnt->buf); in panfrost_perfcnt_enable_locked()
168 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_disable_locked() local
170 if (user != perfcnt->user) in panfrost_perfcnt_disable_locked()
180 perfcnt->user = NULL; in panfrost_perfcnt_disable_locked()
181 drm_gem_shmem_vunmap(&perfcnt->bo->base.base, perfcnt->buf); in panfrost_perfcnt_disable_locked()
182 perfcnt->buf = NULL; in panfrost_perfcnt_disable_locked()
183 drm_gem_object_put_unlocked(&perfcnt->bo->base.base); in panfrost_perfcnt_disable_locked()
184 perfcnt->bo = NULL; in panfrost_perfcnt_disable_locked()
196 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_enable() local
208 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
214 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_enable()
223 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_ioctl_perfcnt_dump() local
232 mutex_lock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
233 if (perfcnt->user != file_priv->driver_priv) { in panfrost_ioctl_perfcnt_dump()
242 if (copy_to_user(user_ptr, perfcnt->buf, perfcnt->bosize)) in panfrost_ioctl_perfcnt_dump()
246 mutex_unlock(&perfcnt->lock); in panfrost_ioctl_perfcnt_dump()
254 struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; in panfrost_perfcnt_close() local
257 mutex_lock(&perfcnt->lock); in panfrost_perfcnt_close()
258 if (perfcnt->user == pfile) in panfrost_perfcnt_close()
260 mutex_unlock(&perfcnt->lock); in panfrost_perfcnt_close()
267 struct panfrost_perfcnt *perfcnt; in panfrost_perfcnt_init() local
300 perfcnt = devm_kzalloc(pfdev->dev, sizeof(*perfcnt), GFP_KERNEL); in panfrost_perfcnt_init()
301 if (!perfcnt) in panfrost_perfcnt_init()
304 perfcnt->bosize = size; in panfrost_perfcnt_init()
314 init_completion(&perfcnt->dump_comp); in panfrost_perfcnt_init()
315 mutex_init(&perfcnt->lock); in panfrost_perfcnt_init()
316 pfdev->perfcnt = perfcnt; in panfrost_perfcnt_init()