Message ID | 20250203-init-done-fences-once-v1-1-a2d62406564b@imgtec.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/imagination: only init job done fences once | expand |
On 03/02/2025 15:31, Brendan King via B4 Relay wrote: > From: Brendan King <Brendan.King@imgtec.com> > > Ensure job done fences are only initialised once. > > This fixes a memory manager not clean warning from drm_mm_takedown > on module unload. > > Signed-off-by: Brendan King <brendan.king@imgtec.com> Hi Brendan, Reviewed-by: Matt Coster <matt.coster@imgtec.com> Would you mind sending a V2 with "Cc: stable@vger.kernel.org" so this fix will get picked up for stable backporting? Cheers, Matt > --- > drivers/gpu/drm/imagination/pvr_queue.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c > index c4f08432882b12f5cdfeb7fc991fd941f0946676..9a67e646f1eae709859f664c796e1940f0b45300 100644 > --- a/drivers/gpu/drm/imagination/pvr_queue.c > +++ b/drivers/gpu/drm/imagination/pvr_queue.c > @@ -304,8 +304,9 @@ pvr_queue_cccb_fence_init(struct dma_fence *fence, struct pvr_queue *queue) > static void > pvr_queue_job_fence_init(struct dma_fence *fence, struct pvr_queue *queue) > { > - pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops, > - &queue->job_fence_ctx); > + if (!fence->ops) > + pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops, > + &queue->job_fence_ctx); > } > > /** > > --- > base-commit: 3ab334814dc7dff39075e055e12847d51878916e > change-id: 20250131-init-done-fences-once-c55c5d0f4d8c > > Best regards,
diff --git a/drivers/gpu/drm/imagination/pvr_queue.c b/drivers/gpu/drm/imagination/pvr_queue.c index c4f08432882b12f5cdfeb7fc991fd941f0946676..9a67e646f1eae709859f664c796e1940f0b45300 100644 --- a/drivers/gpu/drm/imagination/pvr_queue.c +++ b/drivers/gpu/drm/imagination/pvr_queue.c @@ -304,8 +304,9 @@ pvr_queue_cccb_fence_init(struct dma_fence *fence, struct pvr_queue *queue) static void pvr_queue_job_fence_init(struct dma_fence *fence, struct pvr_queue *queue) { - pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops, - &queue->job_fence_ctx); + if (!fence->ops) + pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops, + &queue->job_fence_ctx); } /**