drm/nouveau: bo: initialize GEM GPU VA interface
authorDanilo Krummrich <dakr@redhat.com>
Fri, 4 Aug 2023 18:23:45 +0000 (20:23 +0200)
committerDanilo Krummrich <dakr@redhat.com>
Fri, 4 Aug 2023 18:34:34 +0000 (20:34 +0200)
Initialize the GEM's DRM GPU VA manager interface in preparation for the
(u)vmm implementation, provided by subsequent commits, to make use of it.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230804182406.5222-6-dakr@redhat.com
drivers/gpu/drm/nouveau/nouveau_bo.c

index 7724fe6..6130c99 100644 (file)
@@ -215,6 +215,7 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 domain,
        nvbo = kzalloc(sizeof(struct nouveau_bo), GFP_KERNEL);
        if (!nvbo)
                return ERR_PTR(-ENOMEM);
+
        INIT_LIST_HEAD(&nvbo->head);
        INIT_LIST_HEAD(&nvbo->entry);
        INIT_LIST_HEAD(&nvbo->vma_list);
@@ -339,6 +340,11 @@ nouveau_bo_new(struct nouveau_cli *cli, u64 size, int align,
        dma_resv_init(&nvbo->bo.base._resv);
        drm_vma_node_reset(&nvbo->bo.base.vma_node);
 
+       /* This must be called before ttm_bo_init_reserved(). Subsequent
+        * bo_move() callbacks might already iterate the GEMs GPUVA list.
+        */
+       drm_gem_gpuva_init(&nvbo->bo.base);
+
        ret = nouveau_bo_init(nvbo, size, align, domain, sg, robj);
        if (ret)
                return ret;