Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 998b9a58 authored by Rob Clark's avatar Rob Clark
Browse files

drm/msm/rd: allow adding addition msg to top of dump



For faults or hangs, it is nice to be able to include a bit more
information.

Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 2165e2b9
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -299,7 +299,8 @@ void msm_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m);
int msm_debugfs_late_init(struct drm_device *dev);
int msm_rd_debugfs_init(struct drm_minor *minor);
void msm_rd_debugfs_cleanup(struct msm_drm_private *priv);
void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit);
void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit,
		const char *fmt, ...);
int msm_perf_debugfs_init(struct drm_minor *minor);
void msm_perf_debugfs_cleanup(struct msm_drm_private *priv);
#else
+1 −1
Original line number Diff line number Diff line
@@ -557,7 +557,7 @@ void msm_gpu_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit,

	list_add_tail(&submit->node, &ring->submits);

	msm_rd_dump_submit(priv->rd, submit);
	msm_rd_dump_submit(priv->rd, submit, NULL);

	update_sw_cntrs(gpu);

+13 −2
Original line number Diff line number Diff line
@@ -338,11 +338,12 @@ static void snapshot_buf(struct msm_rd_state *rd,
}

/* called under struct_mutex */
void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit)
void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit,
		const char *fmt, ...)
{
	struct drm_device *dev = submit->dev;
	struct task_struct *task;
	char msg[128];
	char msg[256];
	int i, n;

	if (!rd->open)
@@ -353,6 +354,16 @@ void msm_rd_dump_submit(struct msm_rd_state *rd, struct msm_gem_submit *submit)
	 */
	WARN_ON(!mutex_is_locked(&dev->struct_mutex));

	if (fmt) {
		va_list args;

		va_start(args, fmt);
		n = vsnprintf(msg, sizeof(msg), fmt, args);
		va_end(args);

		rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4));
	}

	rcu_read_lock();
	task = pid_task(submit->pid, PIDTYPE_PID);
	if (task) {