Commit 49a5fb16 authored by Mikko Perttunen's avatar Mikko Perttunen Committed by Thierry Reding
Browse files

gpu: host1x: Show number of pending waiters in debugfs



Show the number of pending waiters in the debugfs status file.
This is useful for testing to verify that waiters do not leak
or accumulate incorrectly.

Signed-off-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 86cec7ec
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo)

static void show_syncpts(struct host1x *m, struct output *o)
{
	struct list_head *pos;
	unsigned int i;

	host1x_debug_output(o, "---- syncpts ----\n");
@@ -76,12 +77,19 @@ static void show_syncpts(struct host1x *m, struct output *o)
	for (i = 0; i < host1x_syncpt_nb_pts(m); i++) {
		u32 max = host1x_syncpt_read_max(m->syncpt + i);
		u32 min = host1x_syncpt_load(m->syncpt + i);
		unsigned int waiters = 0;

		if (!min && !max)
		spin_lock(&m->syncpt[i].intr.lock);
		list_for_each(pos, &m->syncpt[i].intr.wait_head)
			waiters++;
		spin_unlock(&m->syncpt[i].intr.lock);

		if (!min && !max && !waiters)
			continue;

		host1x_debug_output(o, "id %u (%s) min %d max %d\n",
				    i, m->syncpt[i].name, min, max);
		host1x_debug_output(o,
				    "id %u (%s) min %d max %d (%d waiters)\n",
				    i, m->syncpt[i].name, min, max, waiters);
	}

	for (i = 0; i < host1x_syncpt_nb_bases(m); i++) {