]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/amdgpu: fix amdgpu_vm_num_entries
authorChristian König <christian.koenig@amd.com>
Mon, 20 Nov 2017 13:29:01 +0000 (14:29 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Dec 2017 17:48:29 +0000 (12:48 -0500)
The block size only affects the leave nodes, everything else is fixed.

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>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index f1e541e9b514c61c053636de333eecc255c78750..771995093cac77e5cddeac26ae179f044ac71b2c 100644 (file)
@@ -166,17 +166,17 @@ static unsigned amdgpu_vm_level_shift(struct amdgpu_device *adev,
 static unsigned amdgpu_vm_num_entries(struct amdgpu_device *adev,
                                      unsigned level)
 {
+       unsigned shift = amdgpu_vm_level_shift(adev, 0);
+
        if (level == 0)
                /* For the root directory */
-               return adev->vm_manager.max_pfn >>
-                       (adev->vm_manager.block_size *
-                        adev->vm_manager.num_level);
-       else if (level == adev->vm_manager.num_level)
+               return round_up(adev->vm_manager.max_pfn, 1 << shift) >> shift;
+       else if (level != adev->vm_manager.num_level)
+               /* Everything in between */
+               return 512;
+       else
                /* For the page tables on the leaves */
                return AMDGPU_VM_PTE_COUNT(adev);
-       else
-               /* Everything in between */
-               return 1 << adev->vm_manager.block_size;
 }
 
 /**