Lines Matching refs:adev

69 static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)  in amdgpu_gart_dummy_page_init()  argument
71 struct page *dummy_page = adev->mman.bdev.glob->dummy_read_page; in amdgpu_gart_dummy_page_init()
73 if (adev->dummy_page_addr) in amdgpu_gart_dummy_page_init()
75 adev->dummy_page_addr = pci_map_page(adev->pdev, dummy_page, 0, in amdgpu_gart_dummy_page_init()
77 if (pci_dma_mapping_error(adev->pdev, adev->dummy_page_addr)) { in amdgpu_gart_dummy_page_init()
78 dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n"); in amdgpu_gart_dummy_page_init()
79 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_init()
92 static void amdgpu_gart_dummy_page_fini(struct amdgpu_device *adev) in amdgpu_gart_dummy_page_fini() argument
94 if (!adev->dummy_page_addr) in amdgpu_gart_dummy_page_fini()
96 pci_unmap_page(adev->pdev, adev->dummy_page_addr, in amdgpu_gart_dummy_page_fini()
98 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_fini()
111 int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_vram_alloc() argument
115 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_alloc()
119 bp.size = adev->gart.table_size; in amdgpu_gart_table_vram_alloc()
126 r = amdgpu_bo_create(adev, &bp, &adev->gart.robj); in amdgpu_gart_table_vram_alloc()
144 int amdgpu_gart_table_vram_pin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_pin() argument
148 r = amdgpu_bo_reserve(adev->gart.robj, false); in amdgpu_gart_table_vram_pin()
151 r = amdgpu_bo_pin(adev->gart.robj, AMDGPU_GEM_DOMAIN_VRAM); in amdgpu_gart_table_vram_pin()
153 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_pin()
156 r = amdgpu_bo_kmap(adev->gart.robj, &adev->gart.ptr); in amdgpu_gart_table_vram_pin()
158 amdgpu_bo_unpin(adev->gart.robj); in amdgpu_gart_table_vram_pin()
159 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_pin()
160 adev->gart.table_addr = amdgpu_bo_gpu_offset(adev->gart.robj); in amdgpu_gart_table_vram_pin()
172 void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_unpin() argument
176 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_unpin()
179 r = amdgpu_bo_reserve(adev->gart.robj, true); in amdgpu_gart_table_vram_unpin()
181 amdgpu_bo_kunmap(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
182 amdgpu_bo_unpin(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
183 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
184 adev->gart.ptr = NULL; in amdgpu_gart_table_vram_unpin()
197 void amdgpu_gart_table_vram_free(struct amdgpu_device *adev) in amdgpu_gart_table_vram_free() argument
199 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_free()
202 amdgpu_bo_unref(&adev->gart.robj); in amdgpu_gart_table_vram_free()
219 int amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_unbind() argument
229 if (!adev->gart.ready) { in amdgpu_gart_unbind()
238 adev->gart.pages[p] = NULL; in amdgpu_gart_unbind()
240 page_base = adev->dummy_page_addr; in amdgpu_gart_unbind()
241 if (!adev->gart.ptr) in amdgpu_gart_unbind()
245 amdgpu_gmc_set_pte_pde(adev, adev->gart.ptr, in amdgpu_gart_unbind()
251 amdgpu_asic_flush_hdp(adev, NULL); in amdgpu_gart_unbind()
252 amdgpu_gmc_flush_gpu_tlb(adev, 0); in amdgpu_gart_unbind()
267 int amdgpu_gart_map(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_map() argument
274 if (!adev->gart.ready) { in amdgpu_gart_map()
284 amdgpu_gmc_set_pte_pde(adev, dst, t, page_base, flags); in amdgpu_gart_map()
304 int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_bind() argument
313 if (!adev->gart.ready) { in amdgpu_gart_bind()
322 adev->gart.pages[p] = pagelist ? pagelist[i] : NULL; in amdgpu_gart_bind()
325 if (!adev->gart.ptr) in amdgpu_gart_bind()
328 r = amdgpu_gart_map(adev, offset, pages, dma_addr, flags, in amdgpu_gart_bind()
329 adev->gart.ptr); in amdgpu_gart_bind()
334 amdgpu_asic_flush_hdp(adev, NULL); in amdgpu_gart_bind()
335 amdgpu_gmc_flush_gpu_tlb(adev, 0); in amdgpu_gart_bind()
347 int amdgpu_gart_init(struct amdgpu_device *adev) in amdgpu_gart_init() argument
351 if (adev->dummy_page_addr) in amdgpu_gart_init()
359 r = amdgpu_gart_dummy_page_init(adev); in amdgpu_gart_init()
363 adev->gart.num_cpu_pages = adev->gmc.gart_size / PAGE_SIZE; in amdgpu_gart_init()
364 adev->gart.num_gpu_pages = adev->gmc.gart_size / AMDGPU_GPU_PAGE_SIZE; in amdgpu_gart_init()
366 adev->gart.num_cpu_pages, adev->gart.num_gpu_pages); in amdgpu_gart_init()
370 adev->gart.pages = vzalloc(array_size(sizeof(void *), in amdgpu_gart_init()
371 adev->gart.num_cpu_pages)); in amdgpu_gart_init()
372 if (adev->gart.pages == NULL) in amdgpu_gart_init()
386 void amdgpu_gart_fini(struct amdgpu_device *adev) in amdgpu_gart_fini() argument
389 vfree(adev->gart.pages); in amdgpu_gart_fini()
390 adev->gart.pages = NULL; in amdgpu_gart_fini()
392 amdgpu_gart_dummy_page_fini(adev); in amdgpu_gart_fini()