[PATCH 1/2] drm/v3d: Ensure job pointer is set to NULL after job completion
Maíra Canal
mcanal at igalia.com
Tue Jan 14 20:55:44 UTC 2025
Hi Chema,
Thanks for the review!
On 13/01/25 16:26, Chema Casanova wrote:
> El 13/1/25 a las 16:47, Maíra Canal escribió:
>> 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 and signaling
>> the fence, indicating the job has finished.
>>
>> Fixes: 14d1d1908696 ("drm/v3d: Remove the bad signaled() implementation")
>
> Just a question, should we add next commit to the Fixes tag:
>
> Fixes: 79d94360d50f ("drm/v3d: wait for all jobs to finish before
> unregistering")
I believe it is better to have the older reference, as it will ease the
backport to kernels older than 79d94360d50f.
I just applied the patch to misc/kernel.git (drm-misc-fixes).
Best Regards,
- Maíra
>
>> Signed-off-by: Maíra Canal <mcanal at igalia.com>
>> ---
>> drivers/gpu/drm/v3d/v3d_irq.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/
>> v3d_irq.c
>> index 20bf33702c3c..da203045df9b 100644
>> --- a/drivers/gpu/drm/v3d/v3d_irq.c
>> +++ b/drivers/gpu/drm/v3d/v3d_irq.c
>> @@ -108,6 +108,7 @@ v3d_irq(int irq, void *arg)
>> v3d_job_update_stats(&v3d->bin_job->base, V3D_BIN);
>> trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
>> dma_fence_signal(&fence->base);
>> + v3d->bin_job = NULL;
>> status = IRQ_HANDLED;
>> }
>> @@ -118,6 +119,7 @@ v3d_irq(int irq, void *arg)
>> v3d_job_update_stats(&v3d->render_job->base, V3D_RENDER);
>> trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
>> dma_fence_signal(&fence->base);
>> + v3d->render_job = NULL;
>> status = IRQ_HANDLED;
>> }
>> @@ -128,6 +130,7 @@ v3d_irq(int irq, void *arg)
>> v3d_job_update_stats(&v3d->csd_job->base, V3D_CSD);
>> trace_v3d_csd_irq(&v3d->drm, fence->seqno);
>> dma_fence_signal(&fence->base);
>> + v3d->csd_job = NULL;
>> status = IRQ_HANDLED;
>> }
>> @@ -165,6 +168,7 @@ v3d_hub_irq(int irq, void *arg)
>> v3d_job_update_stats(&v3d->tfu_job->base, V3D_TFU);
>> trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
>> dma_fence_signal(&fence->base);
>> + v3d->tfu_job = NULL;
>> status = IRQ_HANDLED;
>> }
>
> With or without my previous comment this is:
>
> Reviewed-by: Jose Maria Casanova Crespo <jmcasanova at igalia.com>
>
> Thanks for fixing this so fast.
>
> Regards,
>
> Chema
>
More information about the dri-devel
mailing list