On Tue, Mar 18, 2025 at 01:03:12PM +0100, Christian König wrote:
>  /**
>   * drm_sched_job_add_dependency - adds the fence as a job dependency
>   * @job: scheduler job to add the dependencies to
> @@ -878,10 +910,12 @@ int drm_sched_job_add_dependency(struct drm_sched_job 
> *job,
>        * engines involved, rather than the number of BOs.
>        */
>       xa_for_each(&job->dependencies, index, entry) {
> -             if (entry->context != fence->context)
> +             bool signaled = dma_fence_is_signaled(entry);
> +
> +             if (!signaled && entry->context != fence->context)
>                       continue;
>  
> -             if (dma_fence_is_later(fence, entry)) {
> +             if (signaled || dma_fence_is_later(fence, entry)) {
>                       dma_fence_put(entry);
>                       xa_store(&job->dependencies, index, fence, GFP_KERNEL);
>               } else {
> @@ -890,7 +924,8 @@ int drm_sched_job_add_dependency(struct drm_sched_job 
> *job,
>               return 0;
>       }
>  
> -     ret = xa_alloc(&job->dependencies, &id, fence, xa_limit_32b, 
> GFP_KERNEL);
> +     ret = xa_alloc(&job->dependencies, &id, fence, xa_limit_32b,
> +                    GFP_KERNEL);
>       if (ret != 0)
>               dma_fence_put(fence);

Those changes seem unrelated, aren't they?

Reply via email to