diff options
author | Mikko Perttunen <mperttunen@nvidia.com> | 2023-01-19 14:09:20 +0100 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2023-01-26 15:55:38 +0100 |
commit | 625d4ffb438cacc9b1ebaa48748cdc7171587cdc (patch) | |
tree | e1e5f33e3241ee143ac50fa67377d45dd8d4f9be /drivers/gpu/host1x/debug.c | |
parent | gpu: host1x: Implement job tracking using DMA fences (diff) | |
download | linux-625d4ffb438cacc9b1ebaa48748cdc7171587cdc.tar.xz linux-625d4ffb438cacc9b1ebaa48748cdc7171587cdc.zip |
gpu: host1x: Rewrite syncpoint interrupt handling
Move from the old, complex intr handling code to a new implementation
based on dma_fences. While there is a fair bit of churn to get there,
the new implementation is much simpler and likely faster as well due
to allowing signaling directly from interrupt context.
Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers/gpu/host1x/debug.c')
-rw-r--r-- | drivers/gpu/host1x/debug.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/host1x/debug.c b/drivers/gpu/host1x/debug.c index 6649b04b7131..a18cc8d8caf5 100644 --- a/drivers/gpu/host1x/debug.c +++ b/drivers/gpu/host1x/debug.c @@ -77,6 +77,7 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo) static void show_syncpts(struct host1x *m, struct output *o, bool show_all) { + unsigned long irqflags; struct list_head *pos; unsigned int i; int err; @@ -92,10 +93,10 @@ static void show_syncpts(struct host1x *m, struct output *o, bool show_all) u32 min = host1x_syncpt_load(m->syncpt + i); unsigned int waiters = 0; - spin_lock(&m->syncpt[i].intr.lock); - list_for_each(pos, &m->syncpt[i].intr.wait_head) + spin_lock_irqsave(&m->syncpt[i].fences.lock, irqflags); + list_for_each(pos, &m->syncpt[i].fences.list) waiters++; - spin_unlock(&m->syncpt[i].intr.lock); + spin_unlock_irqrestore(&m->syncpt[i].fences.lock, irqflags); if (!kref_read(&m->syncpt[i].ref)) continue; |