turnip: msm: clean up iova on error path

Fixes: e23c4fbd9b ("tu: Switch to userspace iova allocations if kernel supports it")
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29173>
This commit is contained in:
Yiwei Zhang
2024-05-08 21:38:52 +00:00
committed by Marge Bot
parent 80b8bbf0c5
commit 3909803849
+8
View File
@@ -387,6 +387,9 @@ msm_allocate_userspace_iova(struct tu_device *dev,
int ret =
drmCommandWriteRead(dev->fd, DRM_MSM_GEM_INFO, &req, sizeof(req));
if (ret < 0) {
mtx_lock(&dev->vma_mutex);
util_vma_heap_free(&dev->vma, *iova, size);
mtx_unlock(&dev->vma_mutex);
mesa_loge("MSM_INFO_SET_IOVA failed! %d (%s)", ret, strerror(errno));
return VK_ERROR_OUT_OF_HOST_MEMORY;
}
@@ -446,6 +449,11 @@ tu_bo_init(struct tu_device *dev,
if (!new_ptr) {
dev->bo_count--;
mtx_unlock(&dev->bo_mutex);
if (dev->physical_device->has_set_iova) {
mtx_lock(&dev->vma_mutex);
util_vma_heap_free(&dev->vma, iova, size);
mtx_unlock(&dev->vma_mutex);
}
tu_gem_close(dev, gem_handle);
return VK_ERROR_OUT_OF_HOST_MEMORY;
}