Lines Matching refs:ttm
1028 ttm_pool_unpopulate_helper(struct ttm_tt *ttm, unsigned mem_count_update) in ttm_pool_unpopulate_helper() argument
1030 struct ttm_mem_global *mem_glob = ttm->bdev->glob->mem_glob; in ttm_pool_unpopulate_helper()
1037 if (!ttm->pages[i]) in ttm_pool_unpopulate_helper()
1040 ttm_mem_global_free_page(mem_glob, ttm->pages[i], PAGE_SIZE); in ttm_pool_unpopulate_helper()
1044 ttm_put_pages(ttm->pages, ttm->num_pages, ttm->page_flags, in ttm_pool_unpopulate_helper()
1045 ttm->caching_state); in ttm_pool_unpopulate_helper()
1046 ttm->state = tt_unpopulated; in ttm_pool_unpopulate_helper()
1049 int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx) in ttm_pool_populate() argument
1051 struct ttm_mem_global *mem_glob = ttm->bdev->glob->mem_glob; in ttm_pool_populate()
1055 if (ttm->state != tt_unpopulated) in ttm_pool_populate()
1058 if (ttm_check_under_lowerlimit(mem_glob, ttm->num_pages, ctx)) in ttm_pool_populate()
1061 ret = ttm_get_pages(ttm->pages, ttm->num_pages, ttm->page_flags, in ttm_pool_populate()
1062 ttm->caching_state); in ttm_pool_populate()
1064 ttm_pool_unpopulate_helper(ttm, 0); in ttm_pool_populate()
1068 for (i = 0; i < ttm->num_pages; ++i) { in ttm_pool_populate()
1069 ret = ttm_mem_global_alloc_page(mem_glob, ttm->pages[i], in ttm_pool_populate()
1072 ttm_pool_unpopulate_helper(ttm, i); in ttm_pool_populate()
1077 if (unlikely(ttm->page_flags & TTM_PAGE_FLAG_SWAPPED)) { in ttm_pool_populate()
1078 ret = ttm_tt_swapin(ttm); in ttm_pool_populate()
1080 ttm_pool_unpopulate(ttm); in ttm_pool_populate()
1085 ttm->state = tt_unbound; in ttm_pool_populate()
1090 void ttm_pool_unpopulate(struct ttm_tt *ttm) in ttm_pool_unpopulate() argument
1092 ttm_pool_unpopulate_helper(ttm, ttm->num_pages); in ttm_pool_unpopulate()
1102 r = ttm_pool_populate(&tt->ttm, ctx); in ttm_populate_and_map_pages()
1106 for (i = 0; i < tt->ttm.num_pages; ++i) { in ttm_populate_and_map_pages()
1107 struct page *p = tt->ttm.pages[i]; in ttm_populate_and_map_pages()
1110 for (j = i + 1; j < tt->ttm.num_pages; ++j) { in ttm_populate_and_map_pages()
1111 if (++p != tt->ttm.pages[j]) in ttm_populate_and_map_pages()
1117 tt->dma_address[i] = dma_map_page(dev, tt->ttm.pages[i], in ttm_populate_and_map_pages()
1126 ttm_pool_unpopulate(&tt->ttm); in ttm_populate_and_map_pages()
1143 for (i = 0; i < tt->ttm.num_pages;) { in ttm_unmap_and_unpopulate_pages()
1144 struct page *p = tt->ttm.pages[i]; in ttm_unmap_and_unpopulate_pages()
1147 if (!tt->dma_address[i] || !tt->ttm.pages[i]) { in ttm_unmap_and_unpopulate_pages()
1152 for (j = i + 1; j < tt->ttm.num_pages; ++j) { in ttm_unmap_and_unpopulate_pages()
1153 if (++p != tt->ttm.pages[j]) in ttm_unmap_and_unpopulate_pages()
1164 ttm_pool_unpopulate(&tt->ttm); in ttm_unmap_and_unpopulate_pages()