drm/v3d: Ensure job pointer is set to NULL after job completion
After a job completes, the corresponding pointer in the device must
be set to NULL. Failing to do so triggers a warning when unloading
the driver, as it appears the job is still active. To prevent this,
assign the job pointer to NULL after completing the job, indicating
the job has finished.
Fixes: 14d1d19086
("drm/v3d: Remove the bad signaled() implementation.")
Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250113154741.67520-1-mcanal@igalia.com
This commit is contained in:
parent
b7d4062781
commit
e4b5ccd392
1 changed files with 4 additions and 0 deletions
|
@ -108,6 +108,7 @@ v3d_irq(int irq, void *arg)
|
||||||
v3d_job_update_stats(&v3d->bin_job->base, V3D_BIN);
|
v3d_job_update_stats(&v3d->bin_job->base, V3D_BIN);
|
||||||
trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
|
trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
|
||||||
dma_fence_signal(&fence->base);
|
dma_fence_signal(&fence->base);
|
||||||
|
v3d->bin_job = NULL;
|
||||||
status = IRQ_HANDLED;
|
status = IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,6 +119,7 @@ v3d_irq(int irq, void *arg)
|
||||||
v3d_job_update_stats(&v3d->render_job->base, V3D_RENDER);
|
v3d_job_update_stats(&v3d->render_job->base, V3D_RENDER);
|
||||||
trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
|
trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
|
||||||
dma_fence_signal(&fence->base);
|
dma_fence_signal(&fence->base);
|
||||||
|
v3d->render_job = NULL;
|
||||||
status = IRQ_HANDLED;
|
status = IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +130,7 @@ v3d_irq(int irq, void *arg)
|
||||||
v3d_job_update_stats(&v3d->csd_job->base, V3D_CSD);
|
v3d_job_update_stats(&v3d->csd_job->base, V3D_CSD);
|
||||||
trace_v3d_csd_irq(&v3d->drm, fence->seqno);
|
trace_v3d_csd_irq(&v3d->drm, fence->seqno);
|
||||||
dma_fence_signal(&fence->base);
|
dma_fence_signal(&fence->base);
|
||||||
|
v3d->csd_job = NULL;
|
||||||
status = IRQ_HANDLED;
|
status = IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,6 +168,7 @@ v3d_hub_irq(int irq, void *arg)
|
||||||
v3d_job_update_stats(&v3d->tfu_job->base, V3D_TFU);
|
v3d_job_update_stats(&v3d->tfu_job->base, V3D_TFU);
|
||||||
trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
|
trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
|
||||||
dma_fence_signal(&fence->base);
|
dma_fence_signal(&fence->base);
|
||||||
|
v3d->tfu_job = NULL;
|
||||||
status = IRQ_HANDLED;
|
status = IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue