[PATCH 2/2] drm/amdgpu: Pessimistic availability based on rounded up allocations
Felix Kuehling
felix.kuehling at amd.com
Fri Jul 29 14:29:56 UTC 2022
Your patches are missing Signed-off-by lines. If you use "git commit
-s", git should add those automatically for your convenience. Other than
that, the patches look good to me. With Signed-off-by added, the series is
Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>
Am 2022-07-28 um 23:16 schrieb Daniel Phillips:
> Seperately accumulate a statistic of rounded up allocations to use
> to report availability, with a view to increasing the likelihood a
> buffer object can be successfully allocated at exactly the size
> reported by the availability API.
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 +++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> index 73bf8b5f2aa9..781274be5f27 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> @@ -96,6 +96,7 @@ struct amdgpu_amdkfd_fence {
> struct amdgpu_kfd_dev {
> struct kfd_dev *dev;
> uint64_t vram_used;
> + uint64_t vram_used_aligned;
> bool init_complete;
> struct work_struct reset_work;
> };
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 014a594899fb..e5ea897f56bc 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -181,6 +181,7 @@ static int amdgpu_amdkfd_reserve_mem_limit(struct amdgpu_device *adev,
> * memory, TTM memory and GPU memory as computed above
> */
> adev->kfd.vram_used += vram_needed;
> + adev->kfd.vram_used_aligned += ALIGN(vram_needed, VRAM_AVAILABLITY_ALIGN);
> kfd_mem_limit.system_mem_used += system_mem_needed;
> kfd_mem_limit.ttm_mem_used += ttm_mem_needed;
>
> @@ -199,6 +200,7 @@ static void unreserve_mem_limit(struct amdgpu_device *adev,
> kfd_mem_limit.ttm_mem_used -= size;
> } else if (alloc_flag & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) {
> adev->kfd.vram_used -= size;
> + adev->kfd.vram_used_aligned -= ALIGN(size, VRAM_AVAILABLITY_ALIGN);
> } else if (alloc_flag & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR) {
> kfd_mem_limit.system_mem_used -= size;
> } else if (!(alloc_flag &
> @@ -1644,7 +1646,7 @@ size_t amdgpu_amdkfd_get_available_memory(struct amdgpu_device *adev)
> size_t available;
> spin_lock(&kfd_mem_limit.mem_limit_lock);
> available = adev->gmc.real_vram_size
> - - adev->kfd.vram_used
> + - adev->kfd.vram_used_aligned
> - atomic64_read(&adev->vram_pin_size)
> - reserved_for_pt;
> spin_unlock(&kfd_mem_limit.mem_limit_lock);
More information about the amd-gfx
mailing list