Commit ba5f33cc authored by Christian König's avatar Christian König

drm/amdgpu: use dma_resv_get_singleton in amdgpu_pasid_free_cb

Makes the code a bit more simpler.
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Cc: amd-gfx@lists.freedesktop.org
Link: https://patchwork.freedesktop.org/patch/msgid/20220321135856.1331-15-christian.koenig@amd.com
parent c382df71
...@@ -107,36 +107,19 @@ static void amdgpu_pasid_free_cb(struct dma_fence *fence, ...@@ -107,36 +107,19 @@ static void amdgpu_pasid_free_cb(struct dma_fence *fence,
void amdgpu_pasid_free_delayed(struct dma_resv *resv, void amdgpu_pasid_free_delayed(struct dma_resv *resv,
u32 pasid) u32 pasid)
{ {
struct dma_fence *fence, **fences;
struct amdgpu_pasid_cb *cb; struct amdgpu_pasid_cb *cb;
unsigned count; struct dma_fence *fence;
int r; int r;
r = dma_resv_get_fences(resv, true, &count, &fences); r = dma_resv_get_singleton(resv, true, &fence);
if (r) if (r)
goto fallback; goto fallback;
if (count == 0) { if (!fence) {
amdgpu_pasid_free(pasid); amdgpu_pasid_free(pasid);
return; return;
} }
if (count == 1) {
fence = fences[0];
kfree(fences);
} else {
uint64_t context = dma_fence_context_alloc(1);
struct dma_fence_array *array;
array = dma_fence_array_create(count, fences, context,
1, false);
if (!array) {
kfree(fences);
goto fallback;
}
fence = &array->base;
}
cb = kmalloc(sizeof(*cb), GFP_KERNEL); cb = kmalloc(sizeof(*cb), GFP_KERNEL);
if (!cb) { if (!cb) {
/* Last resort when we are OOM */ /* Last resort when we are OOM */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment