[PATCH] drm/amdgpu: restrict bo mapping within gpu address limits
Christian König
christian.koenig at amd.com
Tue Jun 2 19:51:08 UTC 2020
Hi Rajneesh,
I think we have reviewed the patch multiple times now, you can push it
to the amd-staging-drm-next branch.
Regards,
Christian.
Am 02.06.20 um 20:27 schrieb Rajneesh Bhardwaj:
> Have strict check on bo mapping since on some systems, such as A+A or
> hybrid, the cpu might support 5 level paging or can address memory above
> 48 bits but gpu might be limited by hardware to just use 48 bits. In
> general, this applies to all asics where this limitation can be checked
> against their max_pfn range. This restricts the range to map bo within
> pratical limits of cpu and gpu for shared virtual memory access.
>
> Reviewed-by: Oak Zeng <oak.zeng at amd.com>
> Reviewed-by: Christian König <christian.koenig at amd.com>
> Reviewed-by: Hawking Zhang <Hawking.Zhang at amd.com>
> Acked-by: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 7417754e9141..71e005cf2952 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -2208,7 +2208,8 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
> /* make sure object fit at this offset */
> eaddr = saddr + size - 1;
> if (saddr >= eaddr ||
> - (bo && offset + size > amdgpu_bo_size(bo)))
> + (bo && offset + size > amdgpu_bo_size(bo)) ||
> + (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))
> return -EINVAL;
>
> saddr /= AMDGPU_GPU_PAGE_SIZE;
> @@ -2273,7 +2274,8 @@ int amdgpu_vm_bo_replace_map(struct amdgpu_device *adev,
> /* make sure object fit at this offset */
> eaddr = saddr + size - 1;
> if (saddr >= eaddr ||
> - (bo && offset + size > amdgpu_bo_size(bo)))
> + (bo && offset + size > amdgpu_bo_size(bo)) ||
> + (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))
> return -EINVAL;
>
> /* Allocate all the needed memory */
More information about the amd-gfx
mailing list