Lines Matching refs:adev

72 static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)  in amdgpu_gart_dummy_page_init()  argument
74 struct page *dummy_page = adev->mman.bdev.glob->dummy_read_page; in amdgpu_gart_dummy_page_init()
76 if (adev->dummy_page_addr) in amdgpu_gart_dummy_page_init()
78 adev->dummy_page_addr = pci_map_page(adev->pdev, dummy_page, 0, in amdgpu_gart_dummy_page_init()
80 if (pci_dma_mapping_error(adev->pdev, adev->dummy_page_addr)) { in amdgpu_gart_dummy_page_init()
81 dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n"); in amdgpu_gart_dummy_page_init()
82 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_init()
95 static void amdgpu_gart_dummy_page_fini(struct amdgpu_device *adev) in amdgpu_gart_dummy_page_fini() argument
97 if (!adev->dummy_page_addr) in amdgpu_gart_dummy_page_fini()
99 pci_unmap_page(adev->pdev, adev->dummy_page_addr, in amdgpu_gart_dummy_page_fini()
101 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_fini()
114 int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_vram_alloc() argument
118 if (adev->gart.bo == NULL) { in amdgpu_gart_table_vram_alloc()
122 bp.size = adev->gart.table_size; in amdgpu_gart_table_vram_alloc()
129 r = amdgpu_bo_create(adev, &bp, &adev->gart.bo); in amdgpu_gart_table_vram_alloc()
147 int amdgpu_gart_table_vram_pin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_pin() argument
151 r = amdgpu_bo_reserve(adev->gart.bo, false); in amdgpu_gart_table_vram_pin()
154 r = amdgpu_bo_pin(adev->gart.bo, AMDGPU_GEM_DOMAIN_VRAM); in amdgpu_gart_table_vram_pin()
156 amdgpu_bo_unreserve(adev->gart.bo); in amdgpu_gart_table_vram_pin()
159 r = amdgpu_bo_kmap(adev->gart.bo, &adev->gart.ptr); in amdgpu_gart_table_vram_pin()
161 amdgpu_bo_unpin(adev->gart.bo); in amdgpu_gart_table_vram_pin()
162 amdgpu_bo_unreserve(adev->gart.bo); in amdgpu_gart_table_vram_pin()
174 void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_unpin() argument
178 if (adev->gart.bo == NULL) { in amdgpu_gart_table_vram_unpin()
181 r = amdgpu_bo_reserve(adev->gart.bo, true); in amdgpu_gart_table_vram_unpin()
183 amdgpu_bo_kunmap(adev->gart.bo); in amdgpu_gart_table_vram_unpin()
184 amdgpu_bo_unpin(adev->gart.bo); in amdgpu_gart_table_vram_unpin()
185 amdgpu_bo_unreserve(adev->gart.bo); in amdgpu_gart_table_vram_unpin()
186 adev->gart.ptr = NULL; in amdgpu_gart_table_vram_unpin()
199 void amdgpu_gart_table_vram_free(struct amdgpu_device *adev) in amdgpu_gart_table_vram_free() argument
201 if (adev->gart.bo == NULL) { in amdgpu_gart_table_vram_free()
204 amdgpu_bo_unref(&adev->gart.bo); in amdgpu_gart_table_vram_free()
221 int amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_unbind() argument
231 if (!adev->gart.ready) { in amdgpu_gart_unbind()
240 adev->gart.pages[p] = NULL; in amdgpu_gart_unbind()
242 page_base = adev->dummy_page_addr; in amdgpu_gart_unbind()
243 if (!adev->gart.ptr) in amdgpu_gart_unbind()
247 amdgpu_gmc_set_pte_pde(adev, adev->gart.ptr, in amdgpu_gart_unbind()
253 amdgpu_asic_flush_hdp(adev, NULL); in amdgpu_gart_unbind()
254 for (i = 0; i < adev->num_vmhubs; i++) in amdgpu_gart_unbind()
255 amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); in amdgpu_gart_unbind()
273 int amdgpu_gart_map(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_map() argument
280 if (!adev->gart.ready) { in amdgpu_gart_map()
290 amdgpu_gmc_set_pte_pde(adev, dst, t, page_base, flags); in amdgpu_gart_map()
310 int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_bind() argument
319 if (!adev->gart.ready) { in amdgpu_gart_bind()
328 adev->gart.pages[p] = pagelist ? pagelist[i] : NULL; in amdgpu_gart_bind()
331 if (!adev->gart.ptr) in amdgpu_gart_bind()
334 r = amdgpu_gart_map(adev, offset, pages, dma_addr, flags, in amdgpu_gart_bind()
335 adev->gart.ptr); in amdgpu_gart_bind()
340 amdgpu_asic_flush_hdp(adev, NULL); in amdgpu_gart_bind()
341 for (i = 0; i < adev->num_vmhubs; i++) in amdgpu_gart_bind()
342 amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); in amdgpu_gart_bind()
354 int amdgpu_gart_init(struct amdgpu_device *adev) in amdgpu_gart_init() argument
358 if (adev->dummy_page_addr) in amdgpu_gart_init()
366 r = amdgpu_gart_dummy_page_init(adev); in amdgpu_gart_init()
370 adev->gart.num_cpu_pages = adev->gmc.gart_size / PAGE_SIZE; in amdgpu_gart_init()
371 adev->gart.num_gpu_pages = adev->gmc.gart_size / AMDGPU_GPU_PAGE_SIZE; in amdgpu_gart_init()
373 adev->gart.num_cpu_pages, adev->gart.num_gpu_pages); in amdgpu_gart_init()
377 adev->gart.pages = vzalloc(array_size(sizeof(void *), in amdgpu_gart_init()
378 adev->gart.num_cpu_pages)); in amdgpu_gart_init()
379 if (adev->gart.pages == NULL) in amdgpu_gart_init()
393 void amdgpu_gart_fini(struct amdgpu_device *adev) in amdgpu_gart_fini() argument
396 vfree(adev->gart.pages); in amdgpu_gart_fini()
397 adev->gart.pages = NULL; in amdgpu_gart_fini()
399 amdgpu_gart_dummy_page_fini(adev); in amdgpu_gart_fini()