diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index f1e541e9b514..771995093cac 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -166,17 +166,17 @@ static unsigned amdgpu_vm_level_shift(struct amdgpu_device *adev, | |||
166 | static unsigned amdgpu_vm_num_entries(struct amdgpu_device *adev, | 166 | static unsigned amdgpu_vm_num_entries(struct amdgpu_device *adev, |
167 | unsigned level) | 167 | unsigned level) |
168 | { | 168 | { |
169 | unsigned shift = amdgpu_vm_level_shift(adev, 0); | ||
170 | |||
169 | if (level == 0) | 171 | if (level == 0) |
170 | /* For the root directory */ | 172 | /* For the root directory */ |
171 | return adev->vm_manager.max_pfn >> | 173 | return round_up(adev->vm_manager.max_pfn, 1 << shift) >> shift; |
172 | (adev->vm_manager.block_size * | 174 | else if (level != adev->vm_manager.num_level) |
173 | adev->vm_manager.num_level); | 175 | /* Everything in between */ |
174 | else if (level == adev->vm_manager.num_level) | 176 | return 512; |
177 | else | ||
175 | /* For the page tables on the leaves */ | 178 | /* For the page tables on the leaves */ |
176 | return AMDGPU_VM_PTE_COUNT(adev); | 179 | return AMDGPU_VM_PTE_COUNT(adev); |
177 | else | ||
178 | /* Everything in between */ | ||
179 | return 1 << adev->vm_manager.block_size; | ||
180 | } | 180 | } |
181 | 181 | ||
182 | /** | 182 | /** |