[PATCH 1/2] drm/sched: add drm_sched_prealloc_dependency_slots
Christian König
ckoenig.leichtzumerken at gmail.com
Wed Mar 19 11:14:29 UTC 2025
Am 18.03.25 um 13:39 schrieb Danilo Krummrich:
> 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?
Ah, yes that was just a leftover from a previous try to fix this.
Thanks,
Christian.
More information about the dri-devel
mailing list