diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 0ffdf847cad0..9f868cf3b832 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -25,6 +25,7 @@   *          Alex Deucher   *          Jerome Glisse   */ +  #include <linux/dma-fence-array.h>  #include <linux/interval_tree_generic.h>  #include <linux/idr.h> @@ -1717,6 +1718,50 @@ error_unlock:  	return r;  } +void amdgpu_vm_get_memory(struct amdgpu_vm *vm, uint64_t *vram_mem, +				uint64_t *gtt_mem, uint64_t *cpu_mem) +{ +	struct amdgpu_bo_va *bo_va, *tmp; + +	list_for_each_entry_safe(bo_va, tmp, &vm->idle, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	list_for_each_entry_safe(bo_va, tmp, &vm->evicted, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	list_for_each_entry_safe(bo_va, tmp, &vm->relocated, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	list_for_each_entry_safe(bo_va, tmp, &vm->moved, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	spin_lock(&vm->invalidated_lock); +	list_for_each_entry_safe(bo_va, tmp, &vm->invalidated, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	list_for_each_entry_safe(bo_va, tmp, &vm->done, base.vm_status) { +		if (!bo_va->base.bo) +			continue; +		amdgpu_bo_get_memory(bo_va->base.bo, vram_mem, +				gtt_mem, cpu_mem); +	} +	spin_unlock(&vm->invalidated_lock); +}  /**   * amdgpu_vm_bo_update - update all BO mappings in the vm page table   * | 
