You really need to hold the reservation here or all kinds of funny
things can happen between grabbing the dependencies and inserting the
new fences.

v2: Fix commit summary (Christian)

Acked-by: Melissa Wen <[email protected]>
Reviewed-by: "Christian König" <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Cc: "Christian König" <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Luben Tuikov <[email protected]>
Cc: Andrey Grodzovsky <[email protected]>
Cc: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/scheduler/sched_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/scheduler/sched_main.c 
b/drivers/gpu/drm/scheduler/sched_main.c
index 157d4cf360f8..ba121f87cd2e 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -708,6 +708,8 @@ int drm_sched_job_add_implicit_dependencies(struct 
drm_sched_job *job,
        struct dma_fence *fence;
        int ret;
 
+       dma_resv_assert_held(obj->resv);
+
        dma_resv_for_each_fence(&cursor, obj->resv, write, fence) {
                /* Make sure to grab an additional ref on the added fence */
                dma_fence_get(fence);
-- 
2.34.1

Reply via email to