diff options
| author | Marek Olšák <marek.olsak@amd.com> | 2023-01-30 01:52:40 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2023-03-13 17:27:48 -0400 | 
| commit | d6530c33a978c6d170125b3a2ca1d218b1863e52 (patch) | |
| tree | 62a6f1bfb28a30486fb3b51592647482224bb90e /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
| parent | 28f7e8971846519720a83b85004ddfe33680be92 (diff) | |
drm/amdgpu: expose more memory stats in fdinfo
This will be used for performance investigations.
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 27 | 
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 6c7d672412b2..7c9b788ae0a9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -1265,24 +1265,41 @@ void amdgpu_bo_move_notify(struct ttm_buffer_object *bo,  	trace_amdgpu_bo_move(abo, new_mem->mem_type, old_mem->mem_type);  } -void amdgpu_bo_get_memory(struct amdgpu_bo *bo, uint64_t *vram_mem, -				uint64_t *gtt_mem, uint64_t *cpu_mem) +void amdgpu_bo_get_memory(struct amdgpu_bo *bo, +			  struct amdgpu_mem_stats *stats)  {  	unsigned int domain; +	uint64_t size = amdgpu_bo_size(bo);  	domain = amdgpu_mem_type_to_domain(bo->tbo.resource->mem_type);  	switch (domain) {  	case AMDGPU_GEM_DOMAIN_VRAM: -		*vram_mem += amdgpu_bo_size(bo); +		stats->vram += size; +		if (amdgpu_bo_in_cpu_visible_vram(bo)) +			stats->visible_vram += size;  		break;  	case AMDGPU_GEM_DOMAIN_GTT: -		*gtt_mem += amdgpu_bo_size(bo); +		stats->gtt += size;  		break;  	case AMDGPU_GEM_DOMAIN_CPU:  	default: -		*cpu_mem += amdgpu_bo_size(bo); +		stats->cpu += size;  		break;  	} + +	if (bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) { +		stats->requested_vram += size; +		if (bo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) +			stats->requested_visible_vram += size; + +		if (domain != AMDGPU_GEM_DOMAIN_VRAM) { +			stats->evicted_vram += size; +			if (bo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) +				stats->evicted_visible_vram += size; +		} +	} else if (bo->preferred_domains & AMDGPU_GEM_DOMAIN_GTT) { +		stats->requested_gtt += size; +	}  }  /**  | 
