Lines Matching refs:perf
41 static int wait_sample(struct msm_perf_state *perf)
45 if (time_after(perf->next_jiffies, start_jiffies)) {
47 perf->next_jiffies - start_jiffies;
54 perf->next_jiffies += SAMPLE_TIME;
58 static int refill_buf(struct msm_perf_state *perf)
60 struct msm_drm_private *priv = perf->dev->dev_private;
62 char *ptr = perf->buf;
63 int rem = sizeof(perf->buf);
66 if ((perf->cnt++ % 32) == 0) {
86 ret = wait_sample(perf);
114 perf->bufpos = 0;
115 perf->buftot = ptr - perf->buf;
123 struct msm_perf_state *perf = file->private_data;
126 mutex_lock(&perf->read_lock);
128 if (perf->bufpos >= perf->buftot) {
129 ret = refill_buf(perf);
134 n = min((int)sz, perf->buftot - perf->bufpos);
135 if (copy_to_user(buf, &perf->buf[perf->bufpos], n)) {
140 perf->bufpos += n;
144 mutex_unlock(&perf->read_lock);
152 struct msm_perf_state *perf = inode->i_private;
153 struct drm_device *dev = perf->dev;
160 if (perf->open || !gpu) {
165 file->private_data = perf;
166 perf->open = true;
167 perf->cnt = 0;
168 perf->buftot = 0;
169 perf->bufpos = 0;
171 perf->next_jiffies = jiffies + SAMPLE_TIME;
180 struct msm_perf_state *perf = inode->i_private;
181 struct msm_drm_private *priv = perf->dev->dev_private;
183 perf->open = false;
199 struct msm_perf_state *perf;
202 if (priv->perf)
205 perf = kzalloc(sizeof(*perf), GFP_KERNEL);
206 if (!perf)
209 perf->dev = minor->dev;
211 mutex_init(&perf->read_lock);
212 priv->perf = perf;
214 debugfs_create_file("perf", S_IFREG | S_IRUGO, minor->debugfs_root,
215 perf, &perf_debugfs_fops);
221 struct msm_perf_state *perf = priv->perf;
223 if (!perf)
226 priv->perf = NULL;
228 mutex_destroy(&perf->read_lock);
230 kfree(perf);