On 11/5/25 07:16, Prike Liang wrote:
> The VM TLB sequence is incremented by the VM update
> commit invoker, so it should not be increased again
> in the commit callback.

Clear NAK to that. It must be incremented by *both*!

Regards,
Christian.

> 
> Signed-off-by: Prike Liang <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c  | 2 --
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c   | 2 ++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c | 3 ---
>  3 files changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c
> index 0c1ef5850a5e..f7a5e71346df 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c
> @@ -106,8 +106,6 @@ static int amdgpu_vm_cpu_update(struct 
> amdgpu_vm_update_params *p,
>  static int amdgpu_vm_cpu_commit(struct amdgpu_vm_update_params *p,
>                               struct dma_fence **fence)
>  {
> -     if (p->needs_flush)
> -             atomic64_inc(&p->vm->tlb_seq);
>  
>       mb();
>       amdgpu_device_flush_hdp(p->adev, NULL);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
> index 30022123b0bf..869f9cb28d94 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
> @@ -420,6 +420,8 @@ int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct 
> amdgpu_vm *vm,
>               goto exit;
>  
>       r = vm->update_funcs->commit(&params, NULL);
> +     if (params.needs_flush)
> +             atomic64_inc(&vm->tlb_seq);
>  exit:
>       drm_dev_exit(idx);
>       return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
> index 46d9fb433ab2..0ceb2474a721 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
> @@ -115,9 +115,6 @@ static int amdgpu_vm_sdma_commit(struct 
> amdgpu_vm_update_params *p,
>       WARN_ON(ib->length_dw == 0);
>       amdgpu_ring_pad_ib(ring, ib);
>  
> -     if (p->needs_flush)
> -             atomic64_inc(&p->vm->tlb_seq);
> -
>       WARN_ON(ib->length_dw > p->num_dw_left);
>       f = amdgpu_job_submit(p->job);
>  

Reply via email to