Lines Matching refs:rd

9  *   tail -f /sys/kernel/debug/dri/<minor>/rd > logfile.rd
18 * tail -f /sys/kernel/debug/dri/<minor>/hangrd > logfile.rd
45 MODULE_PARM_DESC(rd_full, "If true, $debugfs/.../rd will snapshot all buffer contents");
97 static void rd_write(struct msm_rd_state *rd, const void *buf, int sz)
99 struct circ_buf *fifo = &rd->fifo;
106 wait_event(rd->fifo_event, circ_space(&rd->fifo) > 0 || !rd->open);
107 if (!rd->open)
114 n = min(sz, circ_space_to_end(&rd->fifo));
121 wake_up_all(&rd->fifo_event);
125 static void rd_write_section(struct msm_rd_state *rd,
128 rd_write(rd, &type, 4);
129 rd_write(rd, &sz, 4);
130 rd_write(rd, buf, sz);
136 struct msm_rd_state *rd = file->private_data;
137 struct circ_buf *fifo = &rd->fifo;
141 mutex_lock(&rd->read_lock);
143 ret = wait_event_interruptible(rd->fifo_event,
144 circ_count(&rd->fifo) > 0);
152 n = min_t(int, sz, circ_count_to_end(&rd->fifo));
161 wake_up_all(&rd->fifo_event);
164 mutex_unlock(&rd->read_lock);
172 struct msm_rd_state *rd = inode->i_private;
173 struct drm_device *dev = rd->dev;
186 if (rd->open) {
191 file->private_data = rd;
192 rd->open = true;
195 rd->fifo.head = rd->fifo.tail = 0;
205 rd_write_section(rd, RD_GPU_ID, &gpu_id, sizeof(gpu_id));
208 rd_write_section(rd, RD_CHIP_ID, &val, sizeof(val));
217 struct msm_rd_state *rd = inode->i_private;
219 rd->open = false;
220 wake_up_all(&rd->fifo_event);
235 static void rd_cleanup(struct msm_rd_state *rd)
237 if (!rd)
240 mutex_destroy(&rd->read_lock);
241 mutex_destroy(&rd->write_lock);
242 kfree(rd);
247 struct msm_rd_state *rd;
249 rd = kzalloc(sizeof(*rd), GFP_KERNEL);
250 if (!rd)
253 rd->dev = minor->dev;
254 rd->fifo.buf = rd->buf;
256 mutex_init(&rd->read_lock);
257 mutex_init(&rd->write_lock);
259 init_waitqueue_head(&rd->fifo_event);
261 debugfs_create_file(name, S_IFREG | S_IRUGO, minor->debugfs_root, rd,
264 return rd;
270 struct msm_rd_state *rd;
277 if (priv->rd)
280 rd = rd_init(minor, "rd");
281 if (IS_ERR(rd)) {
282 ret = PTR_ERR(rd);
286 priv->rd = rd;
288 rd = rd_init(minor, "hangrd");
289 if (IS_ERR(rd)) {
290 ret = PTR_ERR(rd);
294 priv->hangrd = rd;
305 rd_cleanup(priv->rd);
306 priv->rd = NULL;
312 static void snapshot_buf(struct msm_rd_state *rd,
331 rd_write_section(rd, RD_GPUADDR,
347 rd_write_section(rd, RD_BUFFER_CONTENTS, buf, size);
353 void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit,
360 if (!rd->open)
363 mutex_lock(&rd->write_lock);
372 rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4));
387 rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4));
390 snapshot_buf(rd, submit, i, 0, 0, should_dump(submit, i));
397 snapshot_buf(rd, submit, submit->cmd[i].idx,
415 rd_write_section(rd, RD_CMDSTREAM_ADDR,
421 mutex_unlock(&rd->write_lock);