Lines Matching refs:ttm

50 	struct ttm_tt ttm;  member
189 struct ttm_tt *ttm, in i915_ttm_tt_shmem_populate() argument
194 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_shmem_populate()
196 const size_t size = (size_t)ttm->num_pages << PAGE_SHIFT; in i915_ttm_tt_shmem_populate()
234 ttm->pages[i++] = page; in i915_ttm_tt_shmem_populate()
236 if (ttm->page_flags & TTM_TT_FLAG_SWAPPED) in i915_ttm_tt_shmem_populate()
237 ttm->page_flags &= ~TTM_TT_FLAG_SWAPPED; in i915_ttm_tt_shmem_populate()
247 static void i915_ttm_tt_shmem_unpopulate(struct ttm_tt *ttm) in i915_ttm_tt_shmem_unpopulate() argument
249 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_shmem_unpopulate()
250 bool backup = ttm->page_flags & TTM_TT_FLAG_SWAPPED; in i915_ttm_tt_shmem_unpopulate()
306 ret = ttm_tt_init(&i915_tt->ttm, bo, page_flags, caching, ccs_pages); in i915_ttm_tt_create()
315 return &i915_tt->ttm; in i915_ttm_tt_create()
323 struct ttm_tt *ttm, in i915_ttm_tt_populate() argument
326 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_populate()
329 return i915_ttm_tt_shmem_populate(bdev, ttm, ctx); in i915_ttm_tt_populate()
331 return ttm_pool_alloc(&bdev->pool, ttm, ctx); in i915_ttm_tt_populate()
334 static void i915_ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm) in i915_ttm_tt_unpopulate() argument
336 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_unpopulate()
343 i915_ttm_tt_shmem_unpopulate(ttm); in i915_ttm_tt_unpopulate()
346 ttm_pool_free(&bdev->pool, ttm); in i915_ttm_tt_unpopulate()
350 static void i915_ttm_tt_destroy(struct ttm_device *bdev, struct ttm_tt *ttm) in i915_ttm_tt_destroy() argument
352 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_destroy()
357 ttm_tt_fini(ttm); in i915_ttm_tt_destroy()
374 if (bo->ttm && bo->ttm->page_flags & TTM_TT_FLAG_EXTERNAL) in i915_ttm_eviction_valuable()
402 if (!obj->ttm.cached_io_rsgt) in i915_ttm_free_cached_io_rsgt()
406 radix_tree_for_each_slot(slot, &obj->ttm.get_io_page.radix, &iter, 0) in i915_ttm_free_cached_io_rsgt()
407 radix_tree_delete(&obj->ttm.get_io_page.radix, iter.index); in i915_ttm_free_cached_io_rsgt()
410 i915_refct_sgt_put(obj->ttm.cached_io_rsgt); in i915_ttm_free_cached_io_rsgt()
411 obj->ttm.cached_io_rsgt = NULL; in i915_ttm_free_cached_io_rsgt()
427 container_of(bo->ttm, typeof(*i915_tt), ttm); in i915_ttm_purge()
442 if (bo->ttm && i915_tt->filp) { in i915_ttm_purge()
467 container_of(bo->ttm, typeof(*i915_tt), ttm); in i915_ttm_shrink()
475 if (!bo->ttm || bo->resource->mem_type != TTM_PL_SYSTEM) in i915_ttm_shrink()
494 if (bo->ttm->page_flags & TTM_TT_FLAG_SWAPPED) in i915_ttm_shrink()
497 bo->ttm->page_flags |= TTM_TT_FLAG_SWAPPED; in i915_ttm_shrink()
500 bo->ttm->page_flags &= ~TTM_TT_FLAG_SWAPPED; in i915_ttm_shrink()
520 static struct i915_refct_sgt *i915_ttm_tt_get_st(struct ttm_tt *ttm) in i915_ttm_tt_get_st() argument
522 struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm); in i915_ttm_tt_get_st()
531 ttm->pages, ttm->num_pages, in i915_ttm_tt_get_st()
532 0, (unsigned long)ttm->num_pages << PAGE_SHIFT, in i915_ttm_tt_get_st()
570 return i915_ttm_tt_get_st(bo->ttm); in i915_ttm_resource_get_st()
582 if (!obj->ttm.cached_io_rsgt) { in i915_ttm_resource_get_st()
591 obj->ttm.cached_io_rsgt = rsgt; in i915_ttm_resource_get_st()
593 return i915_refct_sgt_get(obj->ttm.cached_io_rsgt); in i915_ttm_resource_get_st()
631 GEM_WARN_ON(obj->ttm.cached_io_rsgt); in i915_ttm_swap_notify()
693 GEM_WARN_ON(bo->ttm); in i915_ttm_io_mem_pfn()
696 sg = i915_gem_object_page_iter_get_sg(obj, &obj->ttm.get_io_page, page_offset, &ofs); in i915_ttm_io_mem_pfn()
808 if (bo->ttm && !ttm_tt_is_populated(bo->ttm)) { in __i915_ttm_get_pages()
809 ret = ttm_tt_populate(bo->bdev, bo->ttm, &ctx); in __i915_ttm_get_pages()
829 GEM_BUG_ON(bo->ttm && ((obj->base.size >> PAGE_SHIFT) < bo->ttm->num_pages)); in __i915_ttm_get_pages()
927 container_of(bo->ttm, typeof(*i915_tt), ttm); in i915_ttm_adjust_lru()
929 bo->ttm && i915_tt->filp && ttm_tt_is_populated(bo->ttm); in i915_ttm_adjust_lru()
1030 GEM_BUG_ON(!obj->ttm.created); in i915_ttm_delayed_free()
1071 GEM_BUG_ON(!bo->ttm || !(bo->ttm->page_flags & TTM_TT_FLAG_SWAPPED)); in vm_fault_ttm()
1244 mutex_destroy(&obj->ttm.get_io_page.lock); in i915_ttm_bo_destroy()
1246 if (obj->ttm.created) { in i915_ttm_bo_destroy()
1304 INIT_RADIX_TREE(&obj->ttm.get_io_page.radix, GFP_KERNEL | __GFP_NOWARN); in __i915_gem_ttm_object_init()
1305 mutex_init(&obj->ttm.get_io_page.lock); in __i915_gem_ttm_object_init()
1346 obj->ttm.created = true; in __i915_gem_ttm_object_init()