diff options
author | Jammy Zhou <Jammy.Zhou@amd.com> | 2015-05-13 01:14:11 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-08-05 13:47:49 -0400 |
commit | 241cf6d1051718a481c61b469171a34c0ca718a4 (patch) | |
tree | c48cadc94b9b0286e859ba38068a408abc689fe3 /amdgpu/amdgpu_vamgr.c | |
parent | db126d1d8a764b9d3ad322779b13904867b14e5c (diff) | |
download | external_libdrm-241cf6d1051718a481c61b469171a34c0ca718a4.tar.gz external_libdrm-241cf6d1051718a481c61b469171a34c0ca718a4.tar.bz2 external_libdrm-241cf6d1051718a481c61b469171a34c0ca718a4.zip |
amdgpu: validate the upper limit of virtual address v2
Only 8GB virtual address space is used by default now
v2: use -ENOSPC for the error case
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Diffstat (limited to 'amdgpu/amdgpu_vamgr.c')
-rw-r--r-- | amdgpu/amdgpu_vamgr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/amdgpu/amdgpu_vamgr.c b/amdgpu/amdgpu_vamgr.c index 23359122..070ecc47 100644 --- a/amdgpu/amdgpu_vamgr.c +++ b/amdgpu/amdgpu_vamgr.c @@ -33,6 +33,7 @@ void amdgpu_vamgr_init(struct amdgpu_device *dev) struct amdgpu_bo_va_mgr *vamgr = &dev->vamgr; vamgr->va_offset = dev->dev_info.virtual_address_offset; + vamgr->va_max = dev->dev_info.virtual_address_max; vamgr->va_alignment = dev->dev_info.virtual_address_alignment; list_inithead(&vamgr->va_holes); @@ -89,6 +90,12 @@ uint64_t amdgpu_vamgr_find_va(struct amdgpu_bo_va_mgr *mgr, offset = mgr->va_offset; waste = offset % alignment; waste = waste ? alignment - waste : 0; + + if (offset + waste + size > mgr->va_max) { + pthread_mutex_unlock(&mgr->bo_va_mutex); + return AMDGPU_INVALID_VA_ADDRESS; + } + if (waste) { n = calloc(1, sizeof(struct amdgpu_bo_va_hole)); n->size = waste; |