Since we already iterated over the xarray we know at which index the new entry should be stored. So instead of using xa_alloc use xa_store and write into the index directly.
Signed-off-by: Christian König <christian.koe...@amd.com> --- drivers/gpu/drm/scheduler/sched_main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index f7118497e47a..d2d64bf17c96 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -871,10 +871,8 @@ EXPORT_SYMBOL(drm_sched_job_arm); int drm_sched_job_add_dependency(struct drm_sched_job *job, struct dma_fence *fence) { + unsigned long index = -1; struct dma_fence *entry; - unsigned long index; - u32 id = 0; - int ret; if (!fence) return 0; @@ -896,11 +894,13 @@ 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); - if (ret != 0) + entry = xa_store(&job->dependencies, index + 1, fence, GFP_KERNEL); + if (xa_is_err(entry)) dma_fence_put(fence); + else + WARN_ON(entry); - return ret; + return xa_err(entry); } EXPORT_SYMBOL(drm_sched_job_add_dependency); -- 2.34.1