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>
diff --git a/amdgpu/amdgpu_vamgr.c b/amdgpu/amdgpu_vamgr.c
index 2335912..070ecc4 100644
--- a/amdgpu/amdgpu_vamgr.c
+++ b/amdgpu/amdgpu_vamgr.c
@@ -33,6 +33,7 @@
 	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 @@
         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;