Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "Revert "drm/amdgpu: Add table_freed parameter to amdgpu_vm_bo_update""

This reverts commit 024d8811c90ed56d8b90cdcf71e51c9fedeff460.

Revert reason: The issue has been resolved.

Signed-off-by: Eric Huang <jinhuieric.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Eric Huang and committed by
Alex Deucher
cc6152ff 4a134261

+10 -10
+3 -3
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
··· 799 799 if (r) 800 800 return r; 801 801 802 - r = amdgpu_vm_bo_update(adev, fpriv->prt_va, false); 802 + r = amdgpu_vm_bo_update(adev, fpriv->prt_va, false, NULL); 803 803 if (r) 804 804 return r; 805 805 ··· 810 810 if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) { 811 811 bo_va = fpriv->csa_va; 812 812 BUG_ON(!bo_va); 813 - r = amdgpu_vm_bo_update(adev, bo_va, false); 813 + r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); 814 814 if (r) 815 815 return r; 816 816 ··· 829 829 if (bo_va == NULL) 830 830 continue; 831 831 832 - r = amdgpu_vm_bo_update(adev, bo_va, false); 832 + r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); 833 833 if (r) 834 834 return r; 835 835
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
··· 621 621 622 622 if (operation == AMDGPU_VA_OP_MAP || 623 623 operation == AMDGPU_VA_OP_REPLACE) { 624 - r = amdgpu_vm_bo_update(adev, bo_va, false); 624 + r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); 625 625 if (r) 626 626 goto error; 627 627 }
+5 -5
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
··· 1798 1798 r = vm->update_funcs->commit(&params, fence); 1799 1799 1800 1800 if (table_freed) 1801 - *table_freed = params.table_freed; 1801 + *table_freed = *table_freed || params.table_freed; 1802 1802 1803 1803 error_unlock: 1804 1804 amdgpu_vm_eviction_unlock(vm); ··· 1863 1863 * 0 for success, -EINVAL for failure. 1864 1864 */ 1865 1865 int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, 1866 - bool clear) 1866 + bool clear, bool *table_freed) 1867 1867 { 1868 1868 struct amdgpu_bo *bo = bo_va->base.bo; 1869 1869 struct amdgpu_vm *vm = bo_va->base.vm; ··· 1942 1942 resv, mapping->start, 1943 1943 mapping->last, update_flags, 1944 1944 mapping->offset, mem, 1945 - pages_addr, last_update, NULL); 1945 + pages_addr, last_update, table_freed); 1946 1946 if (r) 1947 1947 return r; 1948 1948 } ··· 2194 2194 2195 2195 list_for_each_entry_safe(bo_va, tmp, &vm->moved, base.vm_status) { 2196 2196 /* Per VM BOs never need to bo cleared in the page tables */ 2197 - r = amdgpu_vm_bo_update(adev, bo_va, false); 2197 + r = amdgpu_vm_bo_update(adev, bo_va, false, NULL); 2198 2198 if (r) 2199 2199 return r; 2200 2200 } ··· 2213 2213 else 2214 2214 clear = true; 2215 2215 2216 - r = amdgpu_vm_bo_update(adev, bo_va, clear); 2216 + r = amdgpu_vm_bo_update(adev, bo_va, clear, NULL); 2217 2217 if (r) 2218 2218 return r; 2219 2219
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
··· 408 408 struct dma_fence **fence, bool *free_table); 409 409 int amdgpu_vm_bo_update(struct amdgpu_device *adev, 410 410 struct amdgpu_bo_va *bo_va, 411 - bool clear); 411 + bool clear, bool *table_freed); 412 412 bool amdgpu_vm_evictable(struct amdgpu_bo *bo); 413 413 void amdgpu_vm_bo_invalidate(struct amdgpu_device *adev, 414 414 struct amdgpu_bo *bo, bool evicted);