drm/nouveau/fb: move comptag init out of ram submodule
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:22 +0000 (13:32 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
30 files changed:
drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/g84.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gt215.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv20.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv25.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv30.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv35.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv36.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv41.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv47.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv49.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/rammcp77.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv04.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv10.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv20.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.h
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv41.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv44.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv49.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv4e.c
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c

index dea04406816d10cd7926e562fe2b156266302c01..94c53454501d3a65ae96f02695296053fe433c13 100644 (file)
@@ -100,6 +100,7 @@ static int
 nvkm_fb_oneinit(struct nvkm_subdev *subdev)
 {
        struct nvkm_fb *fb = nvkm_fb(subdev);
+       u32 tags = 0;
 
        if (fb->func->ram_new) {
                int ret = fb->func->ram_new(fb, &fb->ram);
@@ -115,7 +116,16 @@ nvkm_fb_oneinit(struct nvkm_subdev *subdev)
                        return ret;
        }
 
-       return 0;
+       /* Initialise compression tag allocator.
+        *
+        * LTC oneinit() will override this on Fermi and newer.
+        */
+       if (fb->func->tags) {
+               tags = fb->func->tags(fb);
+               nvkm_debug(subdev, "%d comptags\n", tags);
+       }
+
+       return nvkm_mm_init(&fb->tags, 0, 0, tags, 1);
 }
 
 static int
index 9c28392d07e434adb71633152dddb8930c871216..06bf95c0c5493bd37866eb38d32b6ba323c69156 100644 (file)
@@ -27,6 +27,7 @@
 static const struct nv50_fb_func
 g84_fb = {
        .ram_new = nv50_ram_new,
+       .tags = nv20_fb_tags,
        .trap = 0x001d07ff,
 };
 
index ebb30608d5efa1ffd92b9fbea5a279e6c3ca09cc..9266559b45f971c44569508093c99a25de1f106a 100644 (file)
@@ -27,6 +27,7 @@
 static const struct nv50_fb_func
 gt215_fb = {
        .ram_new = gt215_ram_new,
+       .tags = nv20_fb_tags,
        .trap = 0x000d0fff,
 };
 
index ec5a438b79dea8a9243456e36cc3646535c2f5cb..20e47248ba36ee65f3723372912320d7bc9f2146 100644 (file)
@@ -77,8 +77,16 @@ nv20_fb_tile_prog(struct nvkm_fb *fb, int i, struct nvkm_fb_tile *tile)
        nvkm_wr32(device, 0x100300 + (i * 0x04), tile->zcomp);
 }
 
+u32
+nv20_fb_tags(struct nvkm_fb *fb)
+{
+       const u32 tags = nvkm_rd32(fb->subdev.device, 0x100320);
+       return tags ? tags + 1 : 0;
+}
+
 static const struct nvkm_fb_func
 nv20_fb = {
+       .tags = nv20_fb_tags,
        .tile.regions = 8,
        .tile.init = nv20_fb_tile_init,
        .tile.comp = nv20_fb_tile_comp,
index bf342a239b4868eab81a9d0a432d3b08f665a6d9..dc2965514abe3f5aca62542f5582aa6635f80a02 100644 (file)
@@ -44,6 +44,7 @@ nv25_fb_tile_comp(struct nvkm_fb *fb, int i, u32 size, u32 flags,
 
 static const struct nvkm_fb_func
 nv25_fb = {
+       .tags = nv20_fb_tags,
        .tile.regions = 8,
        .tile.init = nv20_fb_tile_init,
        .tile.comp = nv25_fb_tile_comp,
index 2280fbae508ad6632ab9d56d90847ac7b049b9f1..28b147d8d628bcc637e81bdec5a0270d0e8f14e4 100644 (file)
@@ -116,6 +116,7 @@ nv30_fb_init(struct nvkm_fb *fb)
 
 static const struct nvkm_fb_func
 nv30_fb = {
+       .tags = nv20_fb_tags,
        .init = nv30_fb_init,
        .tile.regions = 8,
        .tile.init = nv30_fb_tile_init,
index 244c3ec3a4eddac1da447158ddd69b45c54720ba..4e213da6a215585bbbf8001fefdfb88258ec5229 100644 (file)
@@ -45,6 +45,7 @@ nv35_fb_tile_comp(struct nvkm_fb *fb, int i, u32 size, u32 flags,
 
 static const struct nvkm_fb_func
 nv35_fb = {
+       .tags = nv20_fb_tags,
        .init = nv30_fb_init,
        .tile.regions = 8,
        .tile.init = nv30_fb_tile_init,
index a0a9b1fd0a00029eeba2157d3b4b6a971d484e53..9f029f02088c021f60850f1263db2ecc0b708041 100644 (file)
@@ -45,6 +45,7 @@ nv36_fb_tile_comp(struct nvkm_fb *fb, int i, u32 size, u32 flags,
 
 static const struct nvkm_fb_func
 nv36_fb = {
+       .tags = nv20_fb_tags,
        .init = nv30_fb_init,
        .tile.regions = 8,
        .tile.init = nv30_fb_tile_init,
index bdb97bb03b624c35e2bd9496b3af0f5011bfe325..893bc8b3cc8032188fd3e742ea40548ad4b44f0b 100644 (file)
@@ -51,6 +51,7 @@ nv40_fb_init(struct nvkm_fb *fb)
 
 static const struct nvkm_fb_func
 nv40_fb = {
+       .tags = nv20_fb_tags,
        .init = nv40_fb_init,
        .tile.regions = 8,
        .tile.init = nv30_fb_tile_init,
index 79e57dd5a00f4973777dfa8e758f22a317c08cb7..c1a79564a2f547eb41f439e55e663d5ecdc19218 100644 (file)
@@ -45,6 +45,7 @@ nv41_fb_init(struct nvkm_fb *fb)
 
 static const struct nvkm_fb_func
 nv41_fb = {
+       .tags = nv20_fb_tags,
        .init = nv41_fb_init,
        .tile.regions = 12,
        .tile.init = nv30_fb_tile_init,
index c505e44293142bfa14794a6c26ab58eaf7357e9c..d1d5fc952e328a8f3d7e6e0ecd292f540391b95e 100644 (file)
@@ -28,6 +28,7 @@
 
 static const struct nvkm_fb_func
 nv47_fb = {
+       .tags = nv20_fb_tags,
        .init = nv41_fb_init,
        .tile.regions = 15,
        .tile.init = nv30_fb_tile_init,
index 7b91b9f170e5b434b5f8afaeac129a534a984b54..b3dff3543062fd546e9a814344aa5ddb59a89f44 100644 (file)
@@ -28,6 +28,7 @@
 
 static const struct nvkm_fb_func
 nv49_fb = {
+       .tags = nv20_fb_tags,
        .init = nv41_fb_init,
        .tile.regions = 15,
        .tile.init = nv30_fb_tile_init,
index 0595e0722bfcc0a050cb02185ba2c37449bebb0e..da797c4525b2993dffa0fff79adb281568364190 100644 (file)
@@ -244,6 +244,15 @@ nv50_fb_init(struct nvkm_fb *base)
        nvkm_wr32(device, 0x100c90, fb->func->trap);
 }
 
+static u32
+nv50_fb_tags(struct nvkm_fb *base)
+{
+       struct nv50_fb *fb = nv50_fb(base);
+       if (fb->func->tags)
+               return fb->func->tags(&fb->base);
+       return 0;
+}
+
 static void *
 nv50_fb_dtor(struct nvkm_fb *base)
 {
@@ -262,6 +271,7 @@ nv50_fb_dtor(struct nvkm_fb *base)
 static const struct nvkm_fb_func
 nv50_fb_ = {
        .dtor = nv50_fb_dtor,
+       .tags = nv50_fb_tags,
        .oneinit = nv50_fb_oneinit,
        .init = nv50_fb_init,
        .intr = nv50_fb_intr,
@@ -287,6 +297,7 @@ nv50_fb_new_(const struct nv50_fb_func *func, struct nvkm_device *device,
 static const struct nv50_fb_func
 nv50_fb = {
        .ram_new = nv50_ram_new,
+       .tags = nv20_fb_tags,
        .trap = 0x000707ff,
 };
 
index faa88c8c66fe6e5f59885b207d67922243033e18..74da4d7dcaa07856381665725ed9c63d5867dca3 100644 (file)
@@ -12,6 +12,7 @@ struct nv50_fb {
 
 struct nv50_fb_func {
        int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **);
+       u32 (*tags)(struct nvkm_fb *);
        u32 trap;
 };
 
index afaa68da3221297dd8d539579d502bac1c1570b9..329ff5e0115a6553c2bf21d62cbcc872690ca06d 100644 (file)
@@ -6,6 +6,7 @@ struct nvkm_bios;
 
 struct nvkm_fb_func {
        void *(*dtor)(struct nvkm_fb *);
+       u32 (*tags)(struct nvkm_fb *);
        int (*oneinit)(struct nvkm_fb *);
        void (*init)(struct nvkm_fb *);
        int (*init_page)(struct nvkm_fb *);
@@ -42,6 +43,7 @@ void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
 void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
 void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
 
+u32 nv20_fb_tags(struct nvkm_fb *);
 void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
                       u32 pitch, u32 flags, struct nvkm_fb_tile *);
 void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
index 2cfd4336b5c56f11a4a991b12661c466a0819b21..69f65daaf1eaaef933f2146f761477b628ec098d 100644 (file)
@@ -46,8 +46,7 @@ nvkm_ram_del(struct nvkm_ram **pram)
 
 int
 nvkm_ram_ctor(const struct nvkm_ram_func *func, struct nvkm_fb *fb,
-             enum nvkm_ram_type type, u64 size, u32 tags,
-             struct nvkm_ram *ram)
+             enum nvkm_ram_type type, u64 size, struct nvkm_ram *ram)
 {
        static const char *name[] = {
                [NVKM_RAM_TYPE_UNKNOWN] = "of unknown memory type",
@@ -78,23 +77,14 @@ nvkm_ram_ctor(const struct nvkm_ram_func *func, struct nvkm_fb *fb,
                        return ret;
        }
 
-       if (!nvkm_mm_initialised(&fb->tags)) {
-               ret = nvkm_mm_init(&fb->tags, 0, 0, tags ? ++tags : 0, 1);
-               if (ret)
-                       return ret;
-
-               nvkm_debug(subdev, "%d compression tags\n", tags);
-       }
-
        return 0;
 }
 
 int
 nvkm_ram_new_(const struct nvkm_ram_func *func, struct nvkm_fb *fb,
-             enum nvkm_ram_type type, u64 size, u32 tags,
-             struct nvkm_ram **pram)
+             enum nvkm_ram_type type, u64 size, struct nvkm_ram **pram)
 {
        if (!(*pram = kzalloc(sizeof(**pram), GFP_KERNEL)))
                return -ENOMEM;
-       return nvkm_ram_ctor(func, fb, type, size, tags, *pram);
+       return nvkm_ram_ctor(func, fb, type, size, *pram);
 }
index fac7e73c3ddfb8d85c68b8ec9adecae682ff215a..a007699b60a2dc8cd32a43e4737ac270e9ffe912 100644 (file)
@@ -3,11 +3,9 @@
 #include "priv.h"
 
 int  nvkm_ram_ctor(const struct nvkm_ram_func *, struct nvkm_fb *,
-                  enum nvkm_ram_type, u64 size, u32 tags,
-                  struct nvkm_ram *);
+                  enum nvkm_ram_type, u64 size, struct nvkm_ram *);
 int  nvkm_ram_new_(const struct nvkm_ram_func *, struct nvkm_fb *,
-                  enum nvkm_ram_type, u64 size, u32 tags,
-                  struct nvkm_ram **);
+                  enum nvkm_ram_type, u64 size, struct nvkm_ram **);
 void nvkm_ram_del(struct nvkm_ram **);
 int  nvkm_ram_init(struct nvkm_ram *);
 
index f3fcb499242fc244f0655b8bddd7450237cf829a..a44298989d3cc83c9fd2459f967fab06340a7101 100644 (file)
@@ -604,7 +604,7 @@ gf100_ram_ctor(const struct nvkm_ram_func *func, struct nvkm_fb *fb,
        nvkm_debug(subdev, "Upper: %4lld MiB @ %010llx\n", usize >> 20, ubase);
        nvkm_debug(subdev, "Total: %4lld MiB\n", total >> 20);
 
-       ret = nvkm_ram_ctor(func, fb, type, total, 0, ram);
+       ret = nvkm_ram_ctor(func, fb, type, total, ram);
        if (ret)
                return ret;
 
index 28ab1914718e0c0bb26380b7811c4c17f3397e7c..76fa71f0c4576884c647e414923a60a2b08790c3 100644 (file)
@@ -73,7 +73,7 @@ mcp77_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        *pram = &ram->base;
 
        ret = nvkm_ram_ctor(&mcp77_ram_func, fb, NVKM_RAM_TYPE_STOLEN,
-                           size, 0, &ram->base);
+                           size, &ram->base);
        if (ret)
                return ret;
 
index 6f053a03d61c7d3fe44a5803410610bc33a9198f..cc764a93f1a3e4da19d62448a1cce42b0f7474f9 100644 (file)
@@ -61,5 +61,5 @@ nv04_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        else
                type = NVKM_RAM_TYPE_SDRAM;
 
-       return nvkm_ram_new_(&nv04_ram_func, fb, type, size, 0, pram);
+       return nvkm_ram_new_(&nv04_ram_func, fb, type, size, pram);
 }
index dfd155c98dbb07e36faac7dd25e4b2786f77d6fb..afe54e323b18e1c7c5cd9f1559d05c653737a4e8 100644 (file)
@@ -36,5 +36,5 @@ nv10_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        else
                type = NVKM_RAM_TYPE_SDRAM;
 
-       return nvkm_ram_new_(&nv04_ram_func, fb, type, size, 0, pram);
+       return nvkm_ram_new_(&nv04_ram_func, fb, type, size, pram);
 }
index 3c6a8710e8127db096de8284a453eebac671acd0..4c07d10bb9760f7560985238b887c7b01414932e 100644 (file)
@@ -44,5 +44,5 @@ nv1a_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        }
 
        return nvkm_ram_new_(&nv04_ram_func, fb, NVKM_RAM_TYPE_STOLEN,
-                            mib * 1024 * 1024, 0, pram);
+                            mib * 1024 * 1024, pram);
 }
index 747e47c10cc74cd284812f203567e8b6f908b12d..71d63d7daa75b272efb04087b031836cd7204294 100644 (file)
@@ -29,7 +29,6 @@ nv20_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        struct nvkm_device *device = fb->subdev.device;
        u32 pbus1218 =  nvkm_rd32(device, 0x001218);
        u32     size = (nvkm_rd32(device, 0x10020c) & 0xff000000);
-       u32     tags =  nvkm_rd32(device, 0x100320);
        enum nvkm_ram_type type = NVKM_RAM_TYPE_UNKNOWN;
        int ret;
 
@@ -40,7 +39,7 @@ nv20_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        case 0x00000300: type = NVKM_RAM_TYPE_GDDR2; break;
        }
 
-       ret = nvkm_ram_new_(&nv04_ram_func, fb, type, size, tags, pram);
+       ret = nvkm_ram_new_(&nv04_ram_func, fb, type, size, pram);
        if (ret)
                return ret;
 
index 70c63535d56b33d6d40e354cbf3a0afcea52d209..2b12e388f47aa3d130689583f6dd16311f31074f 100644 (file)
@@ -187,13 +187,13 @@ nv40_ram_func = {
 
 int
 nv40_ram_new_(struct nvkm_fb *fb, enum nvkm_ram_type type, u64 size,
-             u32 tags, struct nvkm_ram **pram)
+             struct nvkm_ram **pram)
 {
        struct nv40_ram *ram;
        if (!(ram = kzalloc(sizeof(*ram), GFP_KERNEL)))
                return -ENOMEM;
        *pram = &ram->base;
-       return nvkm_ram_ctor(&nv40_ram_func, fb, type, size, tags, &ram->base);
+       return nvkm_ram_ctor(&nv40_ram_func, fb, type, size, &ram->base);
 }
 
 int
@@ -202,7 +202,6 @@ nv40_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        struct nvkm_device *device = fb->subdev.device;
        u32 pbus1218 = nvkm_rd32(device, 0x001218);
        u32     size = nvkm_rd32(device, 0x10020c) & 0xff000000;
-       u32     tags = nvkm_rd32(device, 0x100320);
        enum nvkm_ram_type type = NVKM_RAM_TYPE_UNKNOWN;
        int ret;
 
@@ -213,7 +212,7 @@ nv40_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        case 0x00000300: type = NVKM_RAM_TYPE_DDR2 ; break;
        }
 
-       ret = nv40_ram_new_(fb, type, size, tags, pram);
+       ret = nv40_ram_new_(fb, type, size, pram);
        if (ret)
                return ret;
 
index 8a0524566b48681aa137ecfd73065df52ede6679..ec5dcbfcaea8f0b57cf83b0d33943269054f1c7e 100644 (file)
@@ -9,6 +9,6 @@ struct nv40_ram {
        u32 coef;
 };
 
-int nv40_ram_new_(struct nvkm_fb *fb, enum nvkm_ram_type, u64, u32,
+int nv40_ram_new_(struct nvkm_fb *fb, enum nvkm_ram_type, u64,
                  struct nvkm_ram **);
 #endif
index 114828be292ef8ddd631e6a82087278743100dd3..d3fea3726461dee81219c2ea540754ab890c3250 100644 (file)
@@ -28,7 +28,6 @@ nv41_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
 {
        struct nvkm_device *device = fb->subdev.device;
        u32  size = nvkm_rd32(device, 0x10020c) & 0xff000000;
-       u32  tags = nvkm_rd32(device, 0x100320);
        u32 fb474 = nvkm_rd32(device, 0x100474);
        enum nvkm_ram_type type = NVKM_RAM_TYPE_UNKNOWN;
        int ret;
@@ -40,7 +39,7 @@ nv41_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        if (fb474 & 0x00000001)
                type = NVKM_RAM_TYPE_DDR1;
 
-       ret = nv40_ram_new_(fb, type, size, tags, pram);
+       ret = nv40_ram_new_(fb, type, size, pram);
        if (ret)
                return ret;
 
index bc56fbf1c788cd5e463dbabeb60d8135e4bc72b2..ab2630e5e6fbd50310cb25e5ecbebae2b7a91405 100644 (file)
@@ -38,5 +38,5 @@ nv44_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        if (fb474 & 0x00000001)
                type = NVKM_RAM_TYPE_DDR1;
 
-       return nv40_ram_new_(fb, type, size, 0, pram);
+       return nv40_ram_new_(fb, type, size, pram);
 }
index c01f4b1022b870083e052fb5d5e277a9169426fa..946ca7c2e0b699ae0b60c45dc86c4a667e717336 100644 (file)
@@ -28,7 +28,6 @@ nv49_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
 {
        struct nvkm_device *device = fb->subdev.device;
        u32  size = nvkm_rd32(device, 0x10020c) & 0xff000000;
-       u32  tags = nvkm_rd32(device, 0x100320);
        u32 fb914 = nvkm_rd32(device, 0x100914);
        enum nvkm_ram_type type = NVKM_RAM_TYPE_UNKNOWN;
        int ret;
@@ -40,7 +39,7 @@ nv49_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        case 0x00000003: break;
        }
 
-       ret = nv40_ram_new_(fb, type, size, tags, pram);
+       ret = nv40_ram_new_(fb, type, size, pram);
        if (ret)
                return ret;
 
index fa3c2e06203dc699658a2c2dc62d2146ff886941..02b8bdbc819f53e6f70146fc6b8cddb4f4fad3fb 100644 (file)
@@ -29,5 +29,5 @@ nv4e_ram_new(struct nvkm_fb *fb, struct nvkm_ram **pram)
        struct nvkm_device *device = fb->subdev.device;
        u32 size = nvkm_rd32(device, 0x10020c) & 0xff000000;
        return nvkm_ram_new_(&nv04_ram_func, fb, NVKM_RAM_TYPE_UNKNOWN,
-                            size, 0, pram);
+                            size, pram);
 }
index 0fa02fbc561d25bd400bc3425e119914d5425aeb..030ac8339f496943edc4d0e9b8790c6b6ff39bce 100644 (file)
@@ -639,7 +639,6 @@ nv50_ram_ctor(const struct nvkm_ram_func *func,
        const u32 rsvd_head = ( 256 * 1024); /* vga memory */
        const u32 rsvd_tail = (1024 * 1024); /* vbios etc */
        u64 size = nvkm_rd32(device, 0x10020c);
-       u32 tags = nvkm_rd32(device, 0x100320);
        enum nvkm_ram_type type = NVKM_RAM_TYPE_UNKNOWN;
        int ret;
 
@@ -660,7 +659,7 @@ nv50_ram_ctor(const struct nvkm_ram_func *func,
 
        size = (size & 0x000000ff) << 32 | (size & 0xffffff00);
 
-       ret = nvkm_ram_ctor(func, fb, type, size, tags, ram);
+       ret = nvkm_ram_ctor(func, fb, type, size, ram);
        if (ret)
                return ret;