diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 82a6f6c86aaf..44430c4820cc 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -2580,13 +2580,22 @@ static uint32_t amdgpu_vm_get_block_size(uint64_t vm_size) | |||
2580 | * @vm_size: the default vm size if it's set auto | 2580 | * @vm_size: the default vm size if it's set auto |
2581 | */ | 2581 | */ |
2582 | void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size, | 2582 | void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size, |
2583 | uint32_t fragment_size_default, unsigned max_level) | 2583 | uint32_t fragment_size_default, unsigned max_level, |
2584 | unsigned max_bits) | ||
2584 | { | 2585 | { |
2585 | uint64_t tmp; | 2586 | uint64_t tmp; |
2586 | 2587 | ||
2587 | /* adjust vm size first */ | 2588 | /* adjust vm size first */ |
2588 | if (amdgpu_vm_size != -1) | 2589 | if (amdgpu_vm_size != -1) { |
2590 | unsigned max_size = 1 << (max_bits - 30); | ||
2591 | |||
2589 | vm_size = amdgpu_vm_size; | 2592 | vm_size = amdgpu_vm_size; |
2593 | if (vm_size > max_size) { | ||
2594 | dev_warn(adev->dev, "VM size (%d) too large, max is %u GB\n", | ||
2595 | amdgpu_vm_size, max_size); | ||
2596 | vm_size = max_size; | ||
2597 | } | ||
2598 | } | ||
2590 | 2599 | ||
2591 | adev->vm_manager.max_pfn = (uint64_t)vm_size << 18; | 2600 | adev->vm_manager.max_pfn = (uint64_t)vm_size << 18; |
2592 | 2601 | ||