drm/nouveau/nvif: give every vmm object a human-readable identifier
authorBen Skeggs <bskeggs@redhat.com>
Mon, 30 Mar 2020 03:59:39 +0000 (13:59 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 24 Jul 2020 08:50:51 +0000 (18:50 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/include/nvif/vmm.h
drivers/gpu/drm/nouveau/nouveau_svm.c
drivers/gpu/drm/nouveau/nouveau_vmm.c
drivers/gpu/drm/nouveau/nvif/vmm.c

index 79bf85d..a2ee922 100644 (file)
@@ -30,9 +30,9 @@ struct nvif_vmm {
        int page_nr;
 };
 
-int nvif_vmm_init(struct nvif_mmu *, s32 oclass, bool managed, u64 addr,
-                 u64 size, void *argv, u32 argc, struct nvif_vmm *);
-void nvif_vmm_fini(struct nvif_vmm *);
+int nvif_vmm_ctor(struct nvif_mmu *, const char *name, s32 oclass, bool managed,
+                 u64 addr, u64 size, void *argv, u32 argc, struct nvif_vmm *);
+void nvif_vmm_dtor(struct nvif_vmm *);
 int nvif_vmm_get(struct nvif_vmm *, enum nvif_vmm_get, bool sparse,
                 u8 page, u8 align, u64 size, struct nvif_vma *);
 void nvif_vmm_put(struct nvif_vmm *, struct nvif_vma *);
index c1e7739..6f65fa7 100644 (file)
@@ -347,7 +347,8 @@ nouveau_svmm_init(struct drm_device *dev, void *data,
         * All future channel/memory allocations will make use of this
         * VMM instead of the standard one.
         */
-       ret = nvif_vmm_init(&cli->mmu, cli->vmm.vmm.object.oclass, true,
+       ret = nvif_vmm_ctor(&cli->mmu, "svmVmm",
+                           cli->vmm.vmm.object.oclass, true,
                            args->unmanaged_addr, args->unmanaged_size,
                            &(struct gp100_vmm_v0) {
                                .fault_replay = true,
index b28c7dc..a49e881 100644 (file)
@@ -121,15 +121,15 @@ void
 nouveau_vmm_fini(struct nouveau_vmm *vmm)
 {
        nouveau_svmm_fini(&vmm->svmm);
-       nvif_vmm_fini(&vmm->vmm);
+       nvif_vmm_dtor(&vmm->vmm);
        vmm->cli = NULL;
 }
 
 int
 nouveau_vmm_init(struct nouveau_cli *cli, s32 oclass, struct nouveau_vmm *vmm)
 {
-       int ret = nvif_vmm_init(&cli->mmu, oclass, false, PAGE_SIZE, 0, NULL, 0,
-                               &vmm->vmm);
+       int ret = nvif_vmm_ctor(&cli->mmu, "drmVmm", oclass, false, PAGE_SIZE,
+                               0, NULL, 0, &vmm->vmm);
        if (ret)
                return ret;
 
index dc82e55..6053d6d 100644 (file)
@@ -105,15 +105,15 @@ nvif_vmm_get(struct nvif_vmm *vmm, enum nvif_vmm_get type, bool sparse,
 }
 
 void
-nvif_vmm_fini(struct nvif_vmm *vmm)
+nvif_vmm_dtor(struct nvif_vmm *vmm)
 {
        kfree(vmm->page);
        nvif_object_dtor(&vmm->object);
 }
 
 int
-nvif_vmm_init(struct nvif_mmu *mmu, s32 oclass, bool managed, u64 addr,
-             u64 size, void *argv, u32 argc, struct nvif_vmm *vmm)
+nvif_vmm_ctor(struct nvif_mmu *mmu, const char *name, s32 oclass, bool managed,
+             u64 addr, u64 size, void *argv, u32 argc, struct nvif_vmm *vmm)
 {
        struct nvif_vmm_v0 *args;
        u32 argn = sizeof(*args) + argc;
@@ -130,8 +130,8 @@ nvif_vmm_init(struct nvif_mmu *mmu, s32 oclass, bool managed, u64 addr,
        args->size = size;
        memcpy(args->data, argv, argc);
 
-       ret = nvif_object_ctor(&mmu->object, "nvifVmm", 0, oclass, args, argn,
-                              &vmm->object);
+       ret = nvif_object_ctor(&mmu->object, name ? name : "nvifVmm", 0,
+                              oclass, args, argn, &vmm->object);
        if (ret)
                goto done;
 
@@ -163,7 +163,7 @@ nvif_vmm_init(struct nvif_mmu *mmu, s32 oclass, bool managed, u64 addr,
 
 done:
        if (ret)
-               nvif_vmm_fini(vmm);
+               nvif_vmm_dtor(vmm);
        kfree(args);
        return ret;
 }