Lines Matching refs:adev
65 int amdgpu_gart_table_ram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_ram_alloc() argument
69 ptr = pci_alloc_consistent(adev->pdev, adev->gart.table_size, in amdgpu_gart_table_ram_alloc()
70 &adev->gart.table_addr); in amdgpu_gart_table_ram_alloc()
77 adev->gart.table_size >> PAGE_SHIFT); in amdgpu_gart_table_ram_alloc()
80 adev->gart.ptr = ptr; in amdgpu_gart_table_ram_alloc()
81 memset((void *)adev->gart.ptr, 0, adev->gart.table_size); in amdgpu_gart_table_ram_alloc()
94 void amdgpu_gart_table_ram_free(struct amdgpu_device *adev) in amdgpu_gart_table_ram_free() argument
96 if (adev->gart.ptr == NULL) { in amdgpu_gart_table_ram_free()
101 set_memory_wb((unsigned long)adev->gart.ptr, in amdgpu_gart_table_ram_free()
102 adev->gart.table_size >> PAGE_SHIFT); in amdgpu_gart_table_ram_free()
105 pci_free_consistent(adev->pdev, adev->gart.table_size, in amdgpu_gart_table_ram_free()
106 (void *)adev->gart.ptr, in amdgpu_gart_table_ram_free()
107 adev->gart.table_addr); in amdgpu_gart_table_ram_free()
108 adev->gart.ptr = NULL; in amdgpu_gart_table_ram_free()
109 adev->gart.table_addr = 0; in amdgpu_gart_table_ram_free()
122 int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev) in amdgpu_gart_table_vram_alloc() argument
126 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_alloc()
127 r = amdgpu_bo_create(adev, adev->gart.table_size, in amdgpu_gart_table_vram_alloc()
130 NULL, NULL, &adev->gart.robj); in amdgpu_gart_table_vram_alloc()
148 int amdgpu_gart_table_vram_pin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_pin() argument
153 r = amdgpu_bo_reserve(adev->gart.robj, false); in amdgpu_gart_table_vram_pin()
156 r = amdgpu_bo_pin(adev->gart.robj, in amdgpu_gart_table_vram_pin()
159 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_pin()
162 r = amdgpu_bo_kmap(adev->gart.robj, &adev->gart.ptr); in amdgpu_gart_table_vram_pin()
164 amdgpu_bo_unpin(adev->gart.robj); in amdgpu_gart_table_vram_pin()
165 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_pin()
166 adev->gart.table_addr = gpu_addr; in amdgpu_gart_table_vram_pin()
178 void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev) in amdgpu_gart_table_vram_unpin() argument
182 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_unpin()
185 r = amdgpu_bo_reserve(adev->gart.robj, false); in amdgpu_gart_table_vram_unpin()
187 amdgpu_bo_kunmap(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
188 amdgpu_bo_unpin(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
189 amdgpu_bo_unreserve(adev->gart.robj); in amdgpu_gart_table_vram_unpin()
190 adev->gart.ptr = NULL; in amdgpu_gart_table_vram_unpin()
203 void amdgpu_gart_table_vram_free(struct amdgpu_device *adev) in amdgpu_gart_table_vram_free() argument
205 if (adev->gart.robj == NULL) { in amdgpu_gart_table_vram_free()
208 amdgpu_bo_unref(&adev->gart.robj); in amdgpu_gart_table_vram_free()
224 void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset, in amdgpu_gart_unbind() argument
233 if (!adev->gart.ready) { in amdgpu_gart_unbind()
241 if (adev->gart.pages[p]) { in amdgpu_gart_unbind()
242 adev->gart.pages[p] = NULL; in amdgpu_gart_unbind()
243 adev->gart.pages_addr[p] = adev->dummy_page.addr; in amdgpu_gart_unbind()
244 page_base = adev->gart.pages_addr[p]; in amdgpu_gart_unbind()
245 if (!adev->gart.ptr) in amdgpu_gart_unbind()
249 amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, in amdgpu_gart_unbind()
256 amdgpu_gart_flush_gpu_tlb(adev, 0); in amdgpu_gart_unbind()
272 int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset, in amdgpu_gart_bind() argument
281 if (!adev->gart.ready) { in amdgpu_gart_bind()
290 adev->gart.pages_addr[p] = dma_addr[i]; in amdgpu_gart_bind()
291 adev->gart.pages[p] = pagelist[i]; in amdgpu_gart_bind()
292 if (adev->gart.ptr) { in amdgpu_gart_bind()
293 page_base = adev->gart.pages_addr[p]; in amdgpu_gart_bind()
295 amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, t, page_base, flags); in amdgpu_gart_bind()
301 amdgpu_gart_flush_gpu_tlb(adev, 0); in amdgpu_gart_bind()
313 int amdgpu_gart_init(struct amdgpu_device *adev) in amdgpu_gart_init() argument
317 if (adev->gart.pages) { in amdgpu_gart_init()
325 r = amdgpu_dummy_page_init(adev); in amdgpu_gart_init()
329 adev->gart.num_cpu_pages = adev->mc.gtt_size / PAGE_SIZE; in amdgpu_gart_init()
330 adev->gart.num_gpu_pages = adev->mc.gtt_size / AMDGPU_GPU_PAGE_SIZE; in amdgpu_gart_init()
332 adev->gart.num_cpu_pages, adev->gart.num_gpu_pages); in amdgpu_gart_init()
334 adev->gart.pages = vzalloc(sizeof(void *) * adev->gart.num_cpu_pages); in amdgpu_gart_init()
335 if (adev->gart.pages == NULL) { in amdgpu_gart_init()
336 amdgpu_gart_fini(adev); in amdgpu_gart_init()
339 adev->gart.pages_addr = vzalloc(sizeof(dma_addr_t) * in amdgpu_gart_init()
340 adev->gart.num_cpu_pages); in amdgpu_gart_init()
341 if (adev->gart.pages_addr == NULL) { in amdgpu_gart_init()
342 amdgpu_gart_fini(adev); in amdgpu_gart_init()
346 for (i = 0; i < adev->gart.num_cpu_pages; i++) { in amdgpu_gart_init()
347 adev->gart.pages_addr[i] = adev->dummy_page.addr; in amdgpu_gart_init()
359 void amdgpu_gart_fini(struct amdgpu_device *adev) in amdgpu_gart_fini() argument
361 if (adev->gart.pages && adev->gart.pages_addr && adev->gart.ready) { in amdgpu_gart_fini()
363 amdgpu_gart_unbind(adev, 0, adev->gart.num_cpu_pages); in amdgpu_gart_fini()
365 adev->gart.ready = false; in amdgpu_gart_fini()
366 vfree(adev->gart.pages); in amdgpu_gart_fini()
367 vfree(adev->gart.pages_addr); in amdgpu_gart_fini()
368 adev->gart.pages = NULL; in amdgpu_gart_fini()
369 adev->gart.pages_addr = NULL; in amdgpu_gart_fini()
371 amdgpu_dummy_page_fini(adev); in amdgpu_gart_fini()