Add amdgpu driver as user for the drm buddy
defragmentation.

Signed-off-by: Arunpravin Paneer Selvam <arunpravin.paneersel...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 17 +++++++++++++++--
 drivers/gpu/drm/drm_buddy.c                  |  1 +
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index e494f5bf136a..cff8a526c622 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -533,8 +533,21 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager 
*man,
                                           min_block_size,
                                           &vres->blocks,
                                           vres->flags);
-               if (unlikely(r))
-                       goto error_free_blocks;
+               if (unlikely(r)) {
+                       if (r == -ENOSPC) {
+                               drm_buddy_defrag(mm, min_block_size);
+                               r = drm_buddy_alloc_blocks(mm, fpfn,
+                                                          lpfn,
+                                                          size,
+                                                          min_block_size,
+                                                          &vres->blocks,
+                                                          vres->flags);
+                               if (unlikely(r))
+                                       goto error_free_blocks;
+                       } else {
+                               goto error_free_blocks;
+                       }
+               }
 
                if (size > remaining_size)
                        remaining_size = 0;
diff --git a/drivers/gpu/drm/drm_buddy.c b/drivers/gpu/drm/drm_buddy.c
index 40131ed9b0cd..19440f8caec0 100644
--- a/drivers/gpu/drm/drm_buddy.c
+++ b/drivers/gpu/drm/drm_buddy.c
@@ -396,6 +396,7 @@ void drm_buddy_defrag(struct drm_buddy *mm,
                }
        }
 }
+EXPORT_SYMBOL(drm_buddy_defrag);
 
 /**
  * drm_buddy_free_block - free a block
-- 
2.25.1

Reply via email to