Lines Matching refs:adev

74 static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)  in amdgpu_gart_dummy_page_init()  argument
78 if (adev->dummy_page_addr) in amdgpu_gart_dummy_page_init()
80 adev->dummy_page_addr = dma_map_page(&adev->pdev->dev, dummy_page, 0, in amdgpu_gart_dummy_page_init()
82 if (dma_mapping_error(&adev->pdev->dev, adev->dummy_page_addr)) { in amdgpu_gart_dummy_page_init()
83 dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n"); in amdgpu_gart_dummy_page_init()
84 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_init()
97 void amdgpu_gart_dummy_page_fini(struct amdgpu_device *adev) in amdgpu_gart_dummy_page_fini() argument
99 if (!adev->dummy_page_addr) in amdgpu_gart_dummy_page_fini()
101 dma_unmap_page(&adev->pdev->dev, adev->dummy_page_addr, PAGE_SIZE, in amdgpu_gart_dummy_page_fini()
103 adev->dummy_page_addr = 0; in amdgpu_gart_dummy_page_fini()
115 int amdgpu_gart_table_ram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_ram_alloc() argument
117 unsigned int order = get_order(adev->gart.table_size); in amdgpu_gart_table_ram_alloc()
126 if (adev->gart.bo != NULL) in amdgpu_gart_table_ram_alloc()
137 dma_addr = dma_map_page(&adev->pdev->dev, p, 0, adev->gart.table_size, in amdgpu_gart_table_ram_alloc()
139 if (dma_mapping_error(&adev->pdev->dev, dma_addr)) { in amdgpu_gart_table_ram_alloc()
140 dev_err(&adev->pdev->dev, "Failed to DMA MAP the GART BO page\n"); in amdgpu_gart_table_ram_alloc()
146 dev_info(adev->dev, "%s dma_addr:%pad\n", __func__, &dma_addr); in amdgpu_gart_table_ram_alloc()
158 sg->sgl->length = adev->gart.table_size; in amdgpu_gart_table_ram_alloc()
160 sg->sgl->dma_length = adev->gart.table_size; in amdgpu_gart_table_ram_alloc()
164 bp.size = adev->gart.table_size; in amdgpu_gart_table_ram_alloc()
171 ret = amdgpu_bo_create(adev, &bp, &bo); in amdgpu_gart_table_ram_alloc()
182 dev_err(adev->dev, "(%d) failed to reserve bo for GART system bo\n", ret); in amdgpu_gart_table_ram_alloc()
191 adev->gart.bo = bo; in amdgpu_gart_table_ram_alloc()
192 adev->gart.ptr = page_to_virt(p); in amdgpu_gart_table_ram_alloc()
194 ret = amdgpu_ttm_alloc_gart(&adev->gart.bo->tbo); in amdgpu_gart_table_ram_alloc()
196 amdgpu_gart_table_ram_free(adev); in amdgpu_gart_table_ram_alloc()
221 void amdgpu_gart_table_ram_free(struct amdgpu_device *adev) in amdgpu_gart_table_ram_free() argument
223 unsigned int order = get_order(adev->gart.table_size); in amdgpu_gart_table_ram_free()
224 struct sg_table *sg = adev->gart.bo->tbo.sg; in amdgpu_gart_table_ram_free()
228 ret = amdgpu_bo_reserve(adev->gart.bo, false); in amdgpu_gart_table_ram_free()
230 amdgpu_bo_unpin(adev->gart.bo); in amdgpu_gart_table_ram_free()
231 amdgpu_bo_unreserve(adev->gart.bo); in amdgpu_gart_table_ram_free()
233 amdgpu_bo_unref(&adev->gart.bo); in amdgpu_gart_table_ram_free()
236 p = virt_to_page(adev->gart.ptr); in amdgpu_gart_table_ram_free()
239 adev->gart.ptr = NULL; in amdgpu_gart_table_ram_free()
252 int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_vram_alloc() argument
254 if (adev->gart.bo != NULL) in amdgpu_gart_table_vram_alloc()
257 return amdgpu_bo_create_kernel(adev, adev->gart.table_size, PAGE_SIZE, in amdgpu_gart_table_vram_alloc()
258 AMDGPU_GEM_DOMAIN_VRAM, &adev->gart.bo, in amdgpu_gart_table_vram_alloc()
259 NULL, (void *)&adev->gart.ptr); in amdgpu_gart_table_vram_alloc()
271 void amdgpu_gart_table_vram_free(struct amdgpu_device *adev) in amdgpu_gart_table_vram_free() argument
273 amdgpu_bo_free_kernel(&adev->gart.bo, NULL, (void *)&adev->gart.ptr); in amdgpu_gart_table_vram_free()
290 void amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_unbind() argument
301 if (!adev->gart.ptr) in amdgpu_gart_unbind()
304 if (!drm_dev_enter(adev_to_drm(adev), &idx)) in amdgpu_gart_unbind()
310 page_base = adev->dummy_page_addr; in amdgpu_gart_unbind()
311 if (!adev->gart.ptr) in amdgpu_gart_unbind()
315 amdgpu_gmc_set_pte_pde(adev, adev->gart.ptr, in amdgpu_gart_unbind()
321 amdgpu_device_flush_hdp(adev, NULL); in amdgpu_gart_unbind()
322 for_each_set_bit(i, adev->vmhubs_mask, AMDGPU_MAX_VMHUBS) in amdgpu_gart_unbind()
323 amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); in amdgpu_gart_unbind()
341 void amdgpu_gart_map(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_map() argument
349 if (!drm_dev_enter(adev_to_drm(adev), &idx)) in amdgpu_gart_map()
357 amdgpu_gmc_set_pte_pde(adev, dst, t, page_base, flags); in amdgpu_gart_map()
377 void amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset, in amdgpu_gart_bind() argument
381 if (!adev->gart.ptr) in amdgpu_gart_bind()
384 amdgpu_gart_map(adev, offset, pages, dma_addr, flags, adev->gart.ptr); in amdgpu_gart_bind()
395 void amdgpu_gart_invalidate_tlb(struct amdgpu_device *adev) in amdgpu_gart_invalidate_tlb() argument
399 if (!adev->gart.ptr) in amdgpu_gart_invalidate_tlb()
403 amdgpu_device_flush_hdp(adev, NULL); in amdgpu_gart_invalidate_tlb()
404 for_each_set_bit(i, adev->vmhubs_mask, AMDGPU_MAX_VMHUBS) in amdgpu_gart_invalidate_tlb()
405 amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); in amdgpu_gart_invalidate_tlb()
416 int amdgpu_gart_init(struct amdgpu_device *adev) in amdgpu_gart_init() argument
420 if (adev->dummy_page_addr) in amdgpu_gart_init()
428 r = amdgpu_gart_dummy_page_init(adev); in amdgpu_gart_init()
432 adev->gart.num_cpu_pages = adev->gmc.gart_size / PAGE_SIZE; in amdgpu_gart_init()
433 adev->gart.num_gpu_pages = adev->gmc.gart_size / AMDGPU_GPU_PAGE_SIZE; in amdgpu_gart_init()
435 adev->gart.num_cpu_pages, adev->gart.num_gpu_pages); in amdgpu_gart_init()