amdgpu: always add all BOs to handle table
This way we can always find a BO structure by its handle. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-and-Tested-by: Junwei Zhang <Jerry.Zhang@amd.com>main
parent
d6cb0ee408
commit
cbf0bb7f19
|
@ -87,6 +87,10 @@ int amdgpu_bo_alloc(amdgpu_device_handle dev,
|
||||||
|
|
||||||
bo->handle = args.out.handle;
|
bo->handle = args.out.handle;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&bo->dev->bo_table_mutex);
|
||||||
|
r = handle_table_insert(&bo->dev->bo_handles, bo->handle, bo);
|
||||||
|
pthread_mutex_unlock(&bo->dev->bo_table_mutex);
|
||||||
|
|
||||||
pthread_mutex_init(&bo->cpu_access_mutex, NULL);
|
pthread_mutex_init(&bo->cpu_access_mutex, NULL);
|
||||||
|
|
||||||
if (r)
|
if (r)
|
||||||
|
@ -171,13 +175,6 @@ int amdgpu_bo_query_info(amdgpu_bo_handle bo,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amdgpu_add_handle_to_table(amdgpu_bo_handle bo)
|
|
||||||
{
|
|
||||||
pthread_mutex_lock(&bo->dev->bo_table_mutex);
|
|
||||||
handle_table_insert(&bo->dev->bo_handles, bo->handle, bo);
|
|
||||||
pthread_mutex_unlock(&bo->dev->bo_table_mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int amdgpu_bo_export_flink(amdgpu_bo_handle bo)
|
static int amdgpu_bo_export_flink(amdgpu_bo_handle bo)
|
||||||
{
|
{
|
||||||
struct drm_gem_flink flink;
|
struct drm_gem_flink flink;
|
||||||
|
@ -240,14 +237,11 @@ int amdgpu_bo_export(amdgpu_bo_handle bo,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case amdgpu_bo_handle_type_kms:
|
case amdgpu_bo_handle_type_kms:
|
||||||
amdgpu_add_handle_to_table(bo);
|
|
||||||
/* fall through */
|
|
||||||
case amdgpu_bo_handle_type_kms_noimport:
|
case amdgpu_bo_handle_type_kms_noimport:
|
||||||
*shared_handle = bo->handle;
|
*shared_handle = bo->handle;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case amdgpu_bo_handle_type_dma_buf_fd:
|
case amdgpu_bo_handle_type_dma_buf_fd:
|
||||||
amdgpu_add_handle_to_table(bo);
|
|
||||||
return drmPrimeHandleToFD(bo->dev->fd, bo->handle,
|
return drmPrimeHandleToFD(bo->dev->fd, bo->handle,
|
||||||
DRM_CLOEXEC | DRM_RDWR,
|
DRM_CLOEXEC | DRM_RDWR,
|
||||||
(int*)shared_handle);
|
(int*)shared_handle);
|
||||||
|
|
Loading…
Reference in New Issue