Skip to content

Commit 14d1d19

Browse files
committed
drm/v3d: Remove the bad signaled() implementation.
Since our seqno value comes from a counter associated with the GPU ring, not the entity (aka client), they'll be completed out of order. There's actually no need for this code at all, since we don't have enable_signaling() and thus DMA_FENCE_SIGNALED_BIT will be set before we could be called. Signed-off-by: Eric Anholt <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Lucas Stach <[email protected]>
1 parent 7122b68 commit 14d1d19

File tree

4 files changed

+6
-18
lines changed

4 files changed

+6
-18
lines changed

drivers/gpu/drm/v3d/v3d_drv.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ struct v3d_queue_state {
2525

2626
u64 fence_context;
2727
u64 emit_seqno;
28-
u64 finished_seqno;
2928
};
3029

3130
struct v3d_dev {

drivers/gpu/drm/v3d/v3d_fence.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,14 @@ static bool v3d_fence_enable_signaling(struct dma_fence *fence)
4040
return true;
4141
}
4242

43-
static bool v3d_fence_signaled(struct dma_fence *fence)
44-
{
45-
struct v3d_fence *f = to_v3d_fence(fence);
46-
struct v3d_dev *v3d = to_v3d_dev(f->dev);
47-
48-
return v3d->queue[f->queue].finished_seqno >= f->seqno;
49-
}
50-
5143
const struct dma_fence_ops v3d_fence_ops = {
5244
.get_driver_name = v3d_fence_get_driver_name,
5345
.get_timeline_name = v3d_fence_get_timeline_name,
5446
.enable_signaling = v3d_fence_enable_signaling,
55-
.signaled = v3d_fence_signaled,
47+
/* Each of our fences gets signaled as complete by the IRQ
48+
* handler, so we rely on the core's tracking of signaling.
49+
*/
50+
.signaled = NULL,
5651
.wait = dma_fence_default_wait,
5752
.release = dma_fence_free,
5853
};

drivers/gpu/drm/v3d/v3d_gem.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -654,17 +654,14 @@ void
654654
v3d_gem_destroy(struct drm_device *dev)
655655
{
656656
struct v3d_dev *v3d = to_v3d_dev(dev);
657-
enum v3d_queue q;
658657

659658
v3d_sched_fini(v3d);
660659

661660
/* Waiting for exec to finish would need to be done before
662661
* unregistering V3D.
663662
*/
664-
for (q = 0; q < V3D_MAX_QUEUES; q++) {
665-
WARN_ON(v3d->queue[q].emit_seqno !=
666-
v3d->queue[q].finished_seqno);
667-
}
663+
WARN_ON(v3d->bin_job);
664+
WARN_ON(v3d->render_job);
668665

669666
drm_mm_takedown(&v3d->mm);
670667

drivers/gpu/drm/v3d/v3d_irq.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,12 @@ v3d_irq(int irq, void *arg)
8787
}
8888

8989
if (intsts & V3D_INT_FLDONE) {
90-
v3d->queue[V3D_BIN].finished_seqno++;
9190
dma_fence_signal(v3d->bin_job->bin.done_fence);
9291
status = IRQ_HANDLED;
9392
}
9493

9594
if (intsts & V3D_INT_FRDONE) {
96-
v3d->queue[V3D_RENDER].finished_seqno++;
9795
dma_fence_signal(v3d->render_job->render.done_fence);
98-
9996
status = IRQ_HANDLED;
10097
}
10198

0 commit comments

Comments
 (0)