Lines Matching refs:perf

52 static int wait_sample(struct msm_perf_state *perf)  in wait_sample()  argument
56 if (time_after(perf->next_jiffies, start_jiffies)) { in wait_sample()
58 perf->next_jiffies - start_jiffies; in wait_sample()
65 perf->next_jiffies += SAMPLE_TIME; in wait_sample()
69 static int refill_buf(struct msm_perf_state *perf) in refill_buf() argument
71 struct msm_drm_private *priv = perf->dev->dev_private; in refill_buf()
73 char *ptr = perf->buf; in refill_buf()
74 int rem = sizeof(perf->buf); in refill_buf()
77 if ((perf->cnt++ % 32) == 0) { in refill_buf()
97 ret = wait_sample(perf); in refill_buf()
125 perf->bufpos = 0; in refill_buf()
126 perf->buftot = ptr - perf->buf; in refill_buf()
134 struct msm_perf_state *perf = file->private_data; in perf_read() local
137 mutex_lock(&perf->read_lock); in perf_read()
139 if (perf->bufpos >= perf->buftot) { in perf_read()
140 ret = refill_buf(perf); in perf_read()
145 n = min((int)sz, perf->buftot - perf->bufpos); in perf_read()
146 ret = copy_to_user(buf, &perf->buf[perf->bufpos], n); in perf_read()
150 perf->bufpos += n; in perf_read()
154 mutex_unlock(&perf->read_lock); in perf_read()
162 struct msm_perf_state *perf = inode->i_private; in perf_open() local
163 struct drm_device *dev = perf->dev; in perf_open()
170 if (perf->open || !gpu) { in perf_open()
175 file->private_data = perf; in perf_open()
176 perf->open = true; in perf_open()
177 perf->cnt = 0; in perf_open()
178 perf->buftot = 0; in perf_open()
179 perf->bufpos = 0; in perf_open()
181 perf->next_jiffies = jiffies + SAMPLE_TIME; in perf_open()
190 struct msm_perf_state *perf = inode->i_private; in perf_release() local
191 struct msm_drm_private *priv = perf->dev->dev_private; in perf_release()
193 perf->open = false; in perf_release()
209 struct msm_perf_state *perf; in msm_perf_debugfs_init() local
212 if (priv->perf) in msm_perf_debugfs_init()
215 perf = kzalloc(sizeof(*perf), GFP_KERNEL); in msm_perf_debugfs_init()
216 if (!perf) in msm_perf_debugfs_init()
219 perf->dev = minor->dev; in msm_perf_debugfs_init()
221 mutex_init(&perf->read_lock); in msm_perf_debugfs_init()
222 priv->perf = perf; in msm_perf_debugfs_init()
224 perf->node = kzalloc(sizeof(*perf->node), GFP_KERNEL); in msm_perf_debugfs_init()
225 if (!perf->node) in msm_perf_debugfs_init()
228 perf->ent = debugfs_create_file("perf", S_IFREG | S_IRUGO, in msm_perf_debugfs_init()
229 minor->debugfs_root, perf, &perf_debugfs_fops); in msm_perf_debugfs_init()
230 if (!perf->ent) { in msm_perf_debugfs_init()
236 perf->node->minor = minor; in msm_perf_debugfs_init()
237 perf->node->dent = perf->ent; in msm_perf_debugfs_init()
238 perf->node->info_ent = NULL; in msm_perf_debugfs_init()
241 list_add(&perf->node->list, &minor->debugfs_list); in msm_perf_debugfs_init()
254 struct msm_perf_state *perf = priv->perf; in msm_perf_debugfs_cleanup() local
256 if (!perf) in msm_perf_debugfs_cleanup()
259 priv->perf = NULL; in msm_perf_debugfs_cleanup()
261 debugfs_remove(perf->ent); in msm_perf_debugfs_cleanup()
263 if (perf->node) { in msm_perf_debugfs_cleanup()
265 list_del(&perf->node->list); in msm_perf_debugfs_cleanup()
267 kfree(perf->node); in msm_perf_debugfs_cleanup()
270 mutex_destroy(&perf->read_lock); in msm_perf_debugfs_cleanup()
272 kfree(perf); in msm_perf_debugfs_cleanup()