summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
authorChristian König2017-11-23 12:57:18 +0100
committerAlex Deucher2017-12-06 18:48:30 +0100
commitf3368128bacece315aa0384b54b7da9e6f0909cd (patch)
tree7b2654fc54b4847362c5b3281bb7512f155fe73f /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
parentdrm/amdgpu: allow non pot VM size values (diff)
downloadkernel-qcow2-linux-f3368128bacece315aa0384b54b7da9e6f0909cd.tar.gz
kernel-qcow2-linux-f3368128bacece315aa0384b54b7da9e6f0909cd.tar.xz
kernel-qcow2-linux-f3368128bacece315aa0384b54b7da9e6f0909cd.zip
drm/amdgpu: move validation of the VM size into the VM code
This moves validation of the VM size parameter into amdgpu_vm_adjust_size(). Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
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)
* @vm_size: the default vm size if it's set auto
*/
void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size,
- uint32_t fragment_size_default, unsigned max_level)
+ uint32_t fragment_size_default, unsigned max_level,
+ unsigned max_bits)
{
uint64_t tmp;
/* adjust vm size first */
- if (amdgpu_vm_size != -1)
+ if (amdgpu_vm_size != -1) {
+ unsigned max_size = 1 << (max_bits - 30);
+
vm_size = amdgpu_vm_size;
+ if (vm_size > max_size) {
+ dev_warn(adev->dev, "VM size (%d) too large, max is %u GB\n",
+ amdgpu_vm_size, max_size);
+ vm_size = max_size;
+ }
+ }
adev->vm_manager.max_pfn = (uint64_t)vm_size << 18;