OSDN Git Service

amdgpu: always add all BOs to handle table
authorChristian König <christian.koenig@amd.com>
Thu, 2 Aug 2018 08:45:19 +0000 (10:45 +0200)
committerChristian König <christian.koenig@amd.com>
Tue, 7 Aug 2018 11:27:39 +0000 (13:27 +0200)
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>
amdgpu/amdgpu_bo.c

index 0259237..422c7c9 100644 (file)
@@ -87,6 +87,10 @@ int amdgpu_bo_alloc(amdgpu_device_handle dev,
 
        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);
 
        if (r)
@@ -171,13 +175,6 @@ int amdgpu_bo_query_info(amdgpu_bo_handle bo,
        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)
 {
        struct drm_gem_flink flink;
@@ -240,14 +237,11 @@ int amdgpu_bo_export(amdgpu_bo_handle bo,
                return 0;
 
        case amdgpu_bo_handle_type_kms:
-               amdgpu_add_handle_to_table(bo);
-               /* fall through */
        case amdgpu_bo_handle_type_kms_noimport:
                *shared_handle = bo->handle;
                return 0;
 
        case amdgpu_bo_handle_type_dma_buf_fd:
-               amdgpu_add_handle_to_table(bo);
                return drmPrimeHandleToFD(bo->dev->fd, bo->handle,
                                          DRM_CLOEXEC | DRM_RDWR,
                                          (int*)shared_handle);