OSDN Git Service

drm/ttm: only free pages rather than update global memory count together
authorRoger He <Hongbo.He@amd.com>
Thu, 11 Jan 2018 09:00:14 +0000 (17:00 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 16 Jan 2018 20:35:27 +0000 (15:35 -0500)
if ttm_get_pages or ttm_mem_global_alloc_page fail, should not update
global memory count.

Signed-off-by: Roger He <Hongbo.He@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Tested-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Acked-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/ttm/ttm_page_alloc.c

index e48e387..6288389 100644 (file)
@@ -1073,7 +1073,8 @@ int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
        ret = ttm_get_pages(ttm->pages, ttm->num_pages, ttm->page_flags,
                            ttm->caching_state);
        if (unlikely(ret != 0)) {
-               ttm_pool_unpopulate(ttm);
+               ttm_put_pages(ttm->pages, ttm->num_pages, ttm->page_flags,
+                             ttm->caching_state);
                return ret;
        }
 
@@ -1081,7 +1082,8 @@ int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
                ret = ttm_mem_global_alloc_page(mem_glob, ttm->pages[i],
                                                PAGE_SIZE, ctx);
                if (unlikely(ret != 0)) {
-                       ttm_pool_unpopulate(ttm);
+                       ttm_put_pages(ttm->pages, ttm->num_pages,
+                                     ttm->page_flags, ttm->caching_state);
                        return -ENOMEM;
                }
        }