drm/nouveau/imem/nv04: directly embed nvkm_instobj into nv04_instobj
authorBen Skeggs <bskeggs@redhat.com>
Tue, 31 Oct 2017 17:56:19 +0000 (03:56 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 2 Nov 2017 03:32:18 +0000 (13:32 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.c

index d4176cc..be90741 100644 (file)
@@ -24,7 +24,6 @@
 #define nv04_instmem(p) container_of((p), struct nv04_instmem, base)
 #include "priv.h"
 
-#include <core/memory.h>
 #include <core/ramht.h>
 
 struct nv04_instmem {
@@ -35,10 +34,10 @@ struct nv04_instmem {
 /******************************************************************************
  * instmem object implementation
  *****************************************************************************/
-#define nv04_instobj(p) container_of((p), struct nv04_instobj, memory)
+#define nv04_instobj(p) container_of((p), struct nv04_instobj, base.memory)
 
 struct nv04_instobj {
-       struct nvkm_memory memory;
+       struct nvkm_instobj base;
        struct nv04_instmem *imem;
        struct nvkm_mm_node *node;
 };
@@ -103,6 +102,7 @@ nv04_instobj_dtor(struct nvkm_memory *memory)
        mutex_lock(&iobj->imem->base.subdev.mutex);
        nvkm_mm_free(&iobj->imem->heap, &iobj->node);
        mutex_unlock(&iobj->imem->base.subdev.mutex);
+       nvkm_instobj_dtor(&iobj->imem->base, &iobj->base);
        return iobj;
 }
 
@@ -126,10 +126,10 @@ nv04_instobj_new(struct nvkm_instmem *base, u32 size, u32 align, bool zero,
 
        if (!(iobj = kzalloc(sizeof(*iobj), GFP_KERNEL)))
                return -ENOMEM;
-       *pmemory = &iobj->memory;
+       *pmemory = &iobj->base.memory;
 
-       nvkm_memory_ctor(&nv04_instobj_func, &iobj->memory);
-       iobj->memory.ptrs = &nv04_instobj_ptrs;
+       nvkm_instobj_ctor(&nv04_instobj_func, &imem->base, &iobj->base);
+       iobj->base.memory.ptrs = &nv04_instobj_ptrs;
        iobj->imem = imem;
 
        mutex_lock(&imem->base.subdev.mutex);
@@ -214,7 +214,7 @@ nv04_instmem = {
        .rd32 = nv04_instmem_rd32,
        .wr32 = nv04_instmem_wr32,
        .memory_new = nv04_instobj_new,
-       .persistent = false,
+       .persistent = true,
        .zero = false,
 };