Skip to content

Commit 3e79c56

Browse files
pelwellmairacanal
andauthored
drm/v3d: Fix race-condition between DRM scheduler and IRQs
Link: #6624 Fixes: e4b5ccd ("drm/v3d: Ensure job pointer is set to NULL after job completion") Signed-off-by: Maíra Canal <mcanal@igalia.com> Co-authored-by: Maíra Canal <mcanal@igalia.com>
1 parent d53a520 commit 3e79c56

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

drivers/gpu/drm/v3d/v3d_irq.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ v3d_irq(int irq, void *arg)
107107

108108
v3d_job_update_stats(&v3d->bin_job->base, V3D_BIN);
109109
trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
110-
dma_fence_signal(&fence->base);
110+
111111
v3d->bin_job = NULL;
112+
dma_fence_signal(&fence->base);
113+
112114
status = IRQ_HANDLED;
113115
}
114116

@@ -118,8 +120,10 @@ v3d_irq(int irq, void *arg)
118120

119121
v3d_job_update_stats(&v3d->render_job->base, V3D_RENDER);
120122
trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
121-
dma_fence_signal(&fence->base);
123+
122124
v3d->render_job = NULL;
125+
dma_fence_signal(&fence->base);
126+
123127
status = IRQ_HANDLED;
124128
}
125129

@@ -129,8 +133,10 @@ v3d_irq(int irq, void *arg)
129133

130134
v3d_job_update_stats(&v3d->csd_job->base, V3D_CSD);
131135
trace_v3d_csd_irq(&v3d->drm, fence->seqno);
132-
dma_fence_signal(&fence->base);
136+
133137
v3d->csd_job = NULL;
138+
dma_fence_signal(&fence->base);
139+
134140
status = IRQ_HANDLED;
135141
}
136142

@@ -167,8 +173,10 @@ v3d_hub_irq(int irq, void *arg)
167173

168174
v3d_job_update_stats(&v3d->tfu_job->base, V3D_TFU);
169175
trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
170-
dma_fence_signal(&fence->base);
176+
171177
v3d->tfu_job = NULL;
178+
dma_fence_signal(&fence->base);
179+
172180
status = IRQ_HANDLED;
173181
}
174182

0 commit comments

Comments
 (0)