Lines Matching refs:adev

41 int amdgpu_ttm_init(struct amdgpu_device *adev);
42 void amdgpu_ttm_fini(struct amdgpu_device *adev);
44 static u64 amdgpu_get_vis_part_size(struct amdgpu_device *adev, in amdgpu_get_vis_part_size() argument
48 if (mem->start << PAGE_SHIFT < adev->mc.visible_vram_size) { in amdgpu_get_vis_part_size()
50 adev->mc.visible_vram_size ? in amdgpu_get_vis_part_size()
51 adev->mc.visible_vram_size - (mem->start << PAGE_SHIFT) : in amdgpu_get_vis_part_size()
57 static void amdgpu_update_memory_usage(struct amdgpu_device *adev, in amdgpu_update_memory_usage() argument
62 if (!adev) in amdgpu_update_memory_usage()
68 atomic64_add(new_mem->size, &adev->gtt_usage); in amdgpu_update_memory_usage()
71 atomic64_add(new_mem->size, &adev->vram_usage); in amdgpu_update_memory_usage()
72 vis_size = amdgpu_get_vis_part_size(adev, new_mem); in amdgpu_update_memory_usage()
73 atomic64_add(vis_size, &adev->vram_vis_usage); in amdgpu_update_memory_usage()
81 atomic64_sub(old_mem->size, &adev->gtt_usage); in amdgpu_update_memory_usage()
84 atomic64_sub(old_mem->size, &adev->vram_usage); in amdgpu_update_memory_usage()
85 vis_size = amdgpu_get_vis_part_size(adev, old_mem); in amdgpu_update_memory_usage()
86 atomic64_sub(vis_size, &adev->vram_vis_usage); in amdgpu_update_memory_usage()
98 amdgpu_update_memory_usage(bo->adev, &bo->tbo.mem, NULL); in amdgpu_ttm_bo_destroy()
100 mutex_lock(&bo->adev->gem.mutex); in amdgpu_ttm_bo_destroy()
102 mutex_unlock(&bo->adev->gem.mutex); in amdgpu_ttm_bo_destroy()
116 static void amdgpu_ttm_placement_init(struct amdgpu_device *adev, in amdgpu_ttm_placement_init() argument
128 adev->mc.visible_vram_size < adev->mc.real_vram_size) { in amdgpu_ttm_placement_init()
130 adev->mc.visible_vram_size >> PAGE_SHIFT; in amdgpu_ttm_placement_init()
192 adev->mc.visible_vram_size >> PAGE_SHIFT; in amdgpu_ttm_placement_init()
200 amdgpu_ttm_placement_init(rbo->adev, &rbo->placement, in amdgpu_ttm_placement_from_domain()
217 int amdgpu_bo_create_restricted(struct amdgpu_device *adev, in amdgpu_bo_create_restricted() argument
243 acc_size = ttm_bo_dma_acc_size(&adev->mman.bdev, size, in amdgpu_bo_create_restricted()
249 r = drm_gem_object_init(adev->ddev, &bo->gem_base, size); in amdgpu_bo_create_restricted()
254 bo->adev = adev; in amdgpu_bo_create_restricted()
274 r = ttm_bo_init(&adev->mman.bdev, &bo->tbo, size, type, in amdgpu_bo_create_restricted()
287 int amdgpu_bo_create(struct amdgpu_device *adev, in amdgpu_bo_create() argument
300 amdgpu_ttm_placement_init(adev, &placement, in amdgpu_bo_create()
303 return amdgpu_bo_create_restricted(adev, size, byte_align, kernel, in amdgpu_bo_create()
384 domain_start = bo->adev->mc.vram_start; in amdgpu_bo_pin_restricted()
386 domain_start = bo->adev->mc.gtt_start; in amdgpu_bo_pin_restricted()
398 (!max_offset || max_offset > bo->adev->mc.visible_vram_size)) { in amdgpu_bo_pin_restricted()
400 bo->adev->mc.visible_vram_size)) in amdgpu_bo_pin_restricted()
403 lpfn = bo->adev->mc.visible_vram_size >> PAGE_SHIFT; in amdgpu_bo_pin_restricted()
422 bo->adev->vram_pin_size += amdgpu_bo_size(bo); in amdgpu_bo_pin_restricted()
424 bo->adev->gart_pin_size += amdgpu_bo_size(bo); in amdgpu_bo_pin_restricted()
426 dev_err(bo->adev->dev, "%p pin failed\n", bo); in amdgpu_bo_pin_restricted()
441 dev_warn(bo->adev->dev, "%p unpin not necessary\n", bo); in amdgpu_bo_unpin()
454 bo->adev->vram_pin_size -= amdgpu_bo_size(bo); in amdgpu_bo_unpin()
456 bo->adev->gart_pin_size -= amdgpu_bo_size(bo); in amdgpu_bo_unpin()
458 dev_err(bo->adev->dev, "%p validate failed for unpin\n", bo); in amdgpu_bo_unpin()
463 int amdgpu_bo_evict_vram(struct amdgpu_device *adev) in amdgpu_bo_evict_vram() argument
466 if (0 && (adev->flags & AMD_IS_APU)) { in amdgpu_bo_evict_vram()
470 return ttm_bo_evict_mm(&adev->mman.bdev, TTM_PL_VRAM); in amdgpu_bo_evict_vram()
473 void amdgpu_bo_force_delete(struct amdgpu_device *adev) in amdgpu_bo_force_delete() argument
477 if (list_empty(&adev->gem.objects)) { in amdgpu_bo_force_delete()
480 dev_err(adev->dev, "Userspace still has active objects !\n"); in amdgpu_bo_force_delete()
481 list_for_each_entry_safe(bo, n, &adev->gem.objects, list) { in amdgpu_bo_force_delete()
482 dev_err(adev->dev, "%p %p %lu %lu force free\n", in amdgpu_bo_force_delete()
485 mutex_lock(&bo->adev->gem.mutex); in amdgpu_bo_force_delete()
487 mutex_unlock(&bo->adev->gem.mutex); in amdgpu_bo_force_delete()
493 int amdgpu_bo_init(struct amdgpu_device *adev) in amdgpu_bo_init() argument
496 adev->mc.vram_mtrr = arch_phys_wc_add(adev->mc.aper_base, in amdgpu_bo_init()
497 adev->mc.aper_size); in amdgpu_bo_init()
499 adev->mc.mc_vram_size >> 20, in amdgpu_bo_init()
500 (unsigned long long)adev->mc.aper_size >> 20); in amdgpu_bo_init()
502 adev->mc.vram_width); in amdgpu_bo_init()
503 return amdgpu_ttm_init(adev); in amdgpu_bo_init()
506 void amdgpu_bo_fini(struct amdgpu_device *adev) in amdgpu_bo_fini() argument
508 amdgpu_ttm_fini(adev); in amdgpu_bo_fini()
509 arch_phys_wc_del(adev->mc.vram_mtrr); in amdgpu_bo_fini()
596 amdgpu_vm_bo_invalidate(rbo->adev, rbo); in amdgpu_bo_move_notify()
603 amdgpu_update_memory_usage(rbo->adev, &bo->mem, new_mem); in amdgpu_bo_move_notify()
608 struct amdgpu_device *adev; in amdgpu_bo_fault_reserve_notify() local
617 adev = abo->adev; in amdgpu_bo_fault_reserve_notify()
623 if ((offset + size) <= adev->mc.visible_vram_size) in amdgpu_bo_fault_reserve_notify()
628 lpfn = adev->mc.visible_vram_size >> PAGE_SHIFT; in amdgpu_bo_fault_reserve_notify()
645 if ((offset + size) > adev->mc.visible_vram_size) in amdgpu_bo_fault_reserve_notify()