Re: [PATCH v2 1/3] drm/amdgpu: Correct unlocked update fence handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2022-03-28 9:14 a.m., Christian König wrote:
Am 28.03.22 um 15:06 schrieb Philip Yang:
To fix two issues with unlocked update fence:

1. vm->last_unlocked store the latest fence without taking refcount.
2. amdgpu_vm_bo_update_mapping returns old fence, not the latest fence.

NAK, that code here is perfectly correct.

vm->last_unlocked gets a reference to the last unlocked operation.

Otherwise the last locked operation is added directly to the root resv object.

Regards,
Christian.


Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
index dbb551762805..69fba68ff88e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
@@ -109,7 +109,7 @@ static int amdgpu_vm_sdma_commit(struct amdgpu_vm_update_params *p,
      if (p->unlocked) {
          struct dma_fence *tmp = dma_fence_get(f);
  -        swap(p->vm->last_unlocked, f);
+        swap(p->vm->last_unlocked, tmp);

          dma_fence_put(tmp);

tmp is the new unlock fence, so this drop the new fence refcount, fix is to move the old fence to tmp, drop the old fence refcount, take the new fence reference.

f is return fence, because f swap to old fence, so old fence is returned, not new fence, fix will not change f.

Regards,

Philip

      } else {
          amdgpu_bo_fence(p->vm->root.bo, f, true);


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux