aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
diff options
context:
space:
mode:
authorGravatar Alex Deucher <alexander.deucher@amd.com> 2023-05-16 17:16:30 -0400
committerGravatar Alex Deucher <alexander.deucher@amd.com> 2023-06-09 10:37:52 -0400
commit45b3a914d40e63d2c9e3a3e02fb2014be975b9b0 (patch)
tree66bdb4126a5d312e3c19bb14d163d90d305114ea /drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
parentdrm/amdgpu: initialize RAS for gfx_v9_4_3 (diff)
downloadlinux-45b3a914d40e63d2c9e3a3e02fb2014be975b9b0.tar.gz
linux-45b3a914d40e63d2c9e3a3e02fb2014be975b9b0.tar.bz2
linux-45b3a914d40e63d2c9e3a3e02fb2014be975b9b0.zip
drm/amdgpu/gmc9: fix 64 bit division in partition code
Rework logic or use do_div() to avoid problems on 32 bit. v2: add a missing case for XCP macro v3: fix out of bounds array access v4: fix xcp handling harder Acked-by: Guchun Chen <guchun.chen@amd.com> (v1) Reviewed-by: Mukul Joshi <mukul.joshi@amd.com> (v3) Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index 739eb7c0d133..5de92c9ab18f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -794,3 +794,18 @@ void amdgpu_amdkfd_unlock_kfd(struct amdgpu_device *adev)
{
kgd2kfd_unlock_kfd();
}
+
+
+u64 amdgpu_amdkfd_xcp_memory_size(struct amdgpu_device *adev, int xcp_id)
+{
+ u64 tmp;
+ s8 mem_id = KFD_XCP_MEM_ID(adev, xcp_id);
+
+ if (adev->gmc.num_mem_partitions && xcp_id >= 0 && mem_id >= 0) {
+ tmp = adev->gmc.mem_partitions[mem_id].size;
+ do_div(tmp, adev->xcp_mgr->num_xcp_per_mem_partition);
+ return tmp;
+ } else {
+ return adev->gmc.real_vram_size;
+ }
+}