diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1747-drm-amdgpu-Add-support-for-reporting-VRAM-usage.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/1747-drm-amdgpu-Add-support-for-reporting-VRAM-usage.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1747-drm-amdgpu-Add-support-for-reporting-VRAM-usage.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/1747-drm-amdgpu-Add-support-for-reporting-VRAM-usage.patch new file mode 100644 index 00000000..9b3dfcd5 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/1747-drm-amdgpu-Add-support-for-reporting-VRAM-usage.patch @@ -0,0 +1,114 @@ +From 56a66f0c5be5330c6e5743784474acb68ef112bb Mon Sep 17 00:00:00 2001 +From: Kent Russell <kent.russell@amd.com> +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 <kent.russell@amd.com> +--- + 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 + |