Reserve VA space at the top for older generations as well.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
                        dev_info.ids_flags |= AMDGPU_IDS_FLAGS_PREEMPTION;
 
                vm_size = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE;
+               vm_size -= AMDGPU_VA_RESERVED_SIZE;
                dev_info.virtual_address_offset = AMDGPU_VA_RESERVED_SIZE;
                dev_info.virtual_address_max =
                        min(vm_size, AMDGPU_VA_HOLE_START);
 
-               vm_size -= AMDGPU_VA_RESERVED_SIZE;
                if (vm_size > AMDGPU_VA_HOLE_START) {
                        dev_info.high_va_offset = AMDGPU_VA_HOLE_END;
                        dev_info.high_va_max = AMDGPU_VA_HOLE_END | vm_size;
 
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);
 
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);
 
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);