On Fri, 05 Sep 2025 12:11:29 +0000
Alice Ryhl <[email protected]> wrote:

>  static void panthor_vm_cleanup_op_ctx(struct panthor_vm_op_ctx *op_ctx,
>                                     struct panthor_vm *vm)
>  {
> -     struct panthor_vma *vma, *tmp_vma;
> -
>       u32 remaining_pt_count = op_ctx->rsvd_page_tables.count -
>                                op_ctx->rsvd_page_tables.ptr;
>  
> @@ -1134,16 +1091,12 @@ static void panthor_vm_cleanup_op_ctx(struct 
> panthor_vm_op_ctx *op_ctx,
>       kfree(op_ctx->rsvd_page_tables.pages);
>  
>       if (op_ctx->map.vm_bo)
> -             panthor_vm_bo_put(op_ctx->map.vm_bo);
> +             drm_gpuvm_bo_put_deferred(op_ctx->map.vm_bo);
>  
>       for (u32 i = 0; i < ARRAY_SIZE(op_ctx->preallocated_vmas); i++)
>               kfree(op_ctx->preallocated_vmas[i]);
>  
> -     list_for_each_entry_safe(vma, tmp_vma, &op_ctx->returned_vmas, node) {
> -             list_del(&vma->node);
> -             panthor_vm_bo_put(vma->base.vm_bo);
> -             kfree(vma);

Maybe I'm missing something, but I don't see the VMAs being freed in
this new version.

> -     }
> +     drm_gpuvm_bo_deferred_cleanup(&vm->base);
>  }

Reply via email to