From 56a66f0c5be5330c6e5743784474acb68ef112bb Mon Sep 17 00:00:00 2001 From: Kent Russell Date: Thu, 20 Jul 2017 12:45:03 -0400 Subject: [PATCH 1747/4131] drm/amdgpu: Add support for reporting VRAM usage Add functions to report the vram_usage from the amdgpu_device Change-Id: Iae954a967505454b69b9632f59ddcbef73593077 Signed-off-by: Kent Russell --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 7 +++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 3 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 3 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 3 ++- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 +++ 6 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c index a5d494a..f022cec 100755 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c @@ -479,6 +479,13 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, return r; } +uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)kgd; + uint64_t usage = (u64)atomic64_read(&adev->vram_usage); + return usage; +} + bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid) { diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index 924e28a..77a7bd7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -175,6 +175,7 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, uint64_t *bo_size, void *metadata_buffer, size_t buffer_size, uint32_t *metadata_size, uint32_t *flags); +uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd); #define read_user_wptr(mmptr, wptr, dst) \ ({ \ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c index ddf1f3c..66c79d7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c @@ -238,7 +238,8 @@ static const struct kfd2kgd_calls kfd2kgd = { .submit_ib = amdgpu_amdkfd_submit_ib, .get_tile_config = amdgpu_amdkfd_get_tile_config, .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos, - .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem + .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem, + .get_vram_usage = amdgpu_amdkfd_get_vram_usage }; struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions() diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c index ca03dde..9d9965d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c @@ -211,7 +211,8 @@ static const struct kfd2kgd_calls kfd2kgd = { .submit_ib = amdgpu_amdkfd_submit_ib, .get_tile_config = amdgpu_amdkfd_get_tile_config, .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos, - .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem + .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem, + .get_vram_usage = amdgpu_amdkfd_get_vram_usage }; struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions() diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c index dd3499a..8af8d6c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -256,7 +256,8 @@ static const struct kfd2kgd_calls kfd2kgd = { .submit_ib = amdgpu_amdkfd_submit_ib, .get_tile_config = amdgpu_amdkfd_get_tile_config, .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos, - .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem + .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem, + .get_vram_usage = amdgpu_amdkfd_get_vram_usage }; struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions() diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h index 79f2562..71c50f9 100644 --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h @@ -242,6 +242,8 @@ struct tile_config { * * @copy_mem_to_mem: Copies size bytes from source BO to destination BO * + * @get_vram_usage: Returns current VRAM usage + * * This structure contains function pointers to services that the kgd driver * provides to amdkfd driver. * @@ -396,6 +398,7 @@ struct kfd2kgd_calls { uint64_t src_offset, struct kgd_mem *dst_mem, uint64_t dest_offset, uint64_t size, struct dma_fence **f, uint64_t *actual_size); + uint64_t (*get_vram_usage)(struct kgd_dev *kgd); }; /** -- 2.7.4