[PATCH libdrm 2/2] amdgpu: don't track handles for non-memory allocations

Marek Olšák maraeo at gmail.com
Tue Oct 23 19:07:33 UTC 2018


From: Marek Olšák <marek.olsak at amd.com>

---
 amdgpu/amdgpu_bo.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c
index 81f8a5f7..00b9b54a 100644
--- a/amdgpu/amdgpu_bo.c
+++ b/amdgpu/amdgpu_bo.c
@@ -91,26 +91,29 @@ drm_public int amdgpu_bo_alloc(amdgpu_device_handle dev,
 	if (r)
 		goto out;
 
 	r = amdgpu_bo_create(dev, alloc_buffer->alloc_size, args.out.handle,
 			     buf_handle);
 	if (r) {
 		amdgpu_close_kms_handle(dev, args.out.handle);
 		goto out;
 	}
 
-	pthread_mutex_lock(&dev->bo_table_mutex);
-	r = handle_table_insert(&dev->bo_handles, (*buf_handle)->handle,
-				*buf_handle);
-	pthread_mutex_unlock(&dev->bo_table_mutex);
-	if (r)
-		amdgpu_bo_free(*buf_handle);
+	if (alloc_buffer->preferred_heap &
+	    (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) {
+		pthread_mutex_lock(&dev->bo_table_mutex);
+		r = handle_table_insert(&dev->bo_handles, (*buf_handle)->handle,
+					*buf_handle);
+		pthread_mutex_unlock(&dev->bo_table_mutex);
+		if (r)
+			amdgpu_bo_free(*buf_handle);
+	}
 out:
 	return r;
 }
 
 drm_public int amdgpu_bo_set_metadata(amdgpu_bo_handle bo,
 				      struct amdgpu_bo_metadata *info)
 {
 	struct drm_amdgpu_gem_metadata args = {};
 
 	args.handle = bo->handle;
-- 
2.17.1



More information about the amd-gfx mailing list