drm/amdgpu/gpuvm: add some additional comments in amdgpu_vm_update_ptes
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 30 Oct 2019 17:53:27 +0000 (13:53 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Nov 2019 21:27:47 +0000 (16:27 -0500)
To better clarify what is happening in this function.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

index e775f271f1edfbb60fff3f52cae9be81bdb9b6bd..598c24505c73b0161abf83928d8d4bc77c17ef55 100644 (file)
@@ -1418,6 +1418,9 @@ static int amdgpu_vm_update_ptes(struct amdgpu_vm_update_params *params,
                uint64_t incr, entry_end, pe_start;
                struct amdgpu_bo *pt;
 
+               /* make sure that the page tables covering the address range are
+                * actually allocated
+                */
                r = amdgpu_vm_alloc_pts(params->adev, params->vm, &cursor,
                                        params->direct);
                if (r)
@@ -1491,7 +1494,12 @@ static int amdgpu_vm_update_ptes(struct amdgpu_vm_update_params *params,
                } while (frag_start < entry_end);
 
                if (amdgpu_vm_pt_descendant(adev, &cursor)) {
-                       /* Free all child entries */
+                       /* Free all child entries.
+                        * Update the tables with the flags and addresses and free up subsequent
+                        * tables in the case of huge pages or freed up areas.
+                        * This is the maximum you can free, because all other page tables are not
+                        * completely covered by the range and so potentially still in use.
+                        */
                        while (cursor.pfn < frag_start) {
                                amdgpu_vm_free_pts(adev, params->vm, &cursor);
                                amdgpu_vm_pt_next(adev, &cursor);