aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c13
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 */
2582void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size, 2582void 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