From: Ben Skeggs Date: Wed, 1 Nov 2017 03:56:19 +1000 Subject: drm/nouveau/imem: remove now-unused wrapper for backend objects Git-commit: 71370e620a97fe98daebea86c6ae3775cf0f4fc8 Patch-mainline: v4.15-rc1 References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166 Signed-off-by: Ben Skeggs Acked-by: Petr Tesarik --- drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.c | 164 -------------------- drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h | 4 6 files changed, 2 insertions(+), 170 deletions(-) --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.c @@ -28,148 +28,6 @@ /****************************************************************************** * instmem object base implementation *****************************************************************************/ -#define nvkm_instobj(p) container_of((p), struct nvkm_instobj, memory) - -static enum nvkm_memory_target -nvkm_instobj_target(struct nvkm_memory *memory) -{ - memory = nvkm_instobj(memory)->parent; - return nvkm_memory_target(memory); -} - -static u64 -nvkm_instobj_addr(struct nvkm_memory *memory) -{ - memory = nvkm_instobj(memory)->parent; - return nvkm_memory_addr(memory); -} - -static u64 -nvkm_instobj_size(struct nvkm_memory *memory) -{ - memory = nvkm_instobj(memory)->parent; - return nvkm_memory_size(memory); -} - -static void -nvkm_instobj_release(struct nvkm_memory *memory) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - nvkm_bar_flush(iobj->imem->subdev.device->bar); -} - -static void __iomem * -nvkm_instobj_acquire(struct nvkm_memory *memory) -{ - return nvkm_instobj(memory)->map; -} - -static u32 -nvkm_instobj_rd32(struct nvkm_memory *memory, u64 offset) -{ - return ioread32_native(nvkm_instobj(memory)->map + offset); -} - -static void -nvkm_instobj_wr32(struct nvkm_memory *memory, u64 offset, u32 data) -{ - iowrite32_native(data, nvkm_instobj(memory)->map + offset); -} - -static void -nvkm_instobj_map(struct nvkm_memory *memory, struct nvkm_vma *vma, u64 offset) -{ - memory = nvkm_instobj(memory)->parent; - nvkm_memory_map(memory, vma, offset); -} - -static void * -nvkm_instobj_dtor_old(struct nvkm_memory *memory) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - spin_lock(&iobj->imem->lock); - list_del(&iobj->head); - spin_unlock(&iobj->imem->lock); - nvkm_memory_del(&iobj->parent); - return iobj; -} - -static const struct nvkm_memory_func -nvkm_instobj_func = { - .dtor = nvkm_instobj_dtor_old, - .target = nvkm_instobj_target, - .addr = nvkm_instobj_addr, - .size = nvkm_instobj_size, - .acquire = nvkm_instobj_acquire, - .release = nvkm_instobj_release, - .map = nvkm_instobj_map, -}; - -static const struct nvkm_memory_ptrs -nvkm_instobj_ptrs = { - .rd32 = nvkm_instobj_rd32, - .wr32 = nvkm_instobj_wr32, -}; - -static void -nvkm_instobj_boot(struct nvkm_memory *memory, struct nvkm_vm *vm) -{ - memory = nvkm_instobj(memory)->parent; - nvkm_memory_boot(memory, vm); -} - -static void -nvkm_instobj_release_slow(struct nvkm_memory *memory) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - nvkm_instobj_release(memory); - nvkm_done(iobj->parent); -} - -static void __iomem * -nvkm_instobj_acquire_slow(struct nvkm_memory *memory) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - iobj->map = nvkm_kmap(iobj->parent); - if (iobj->map) { - memory->func = &nvkm_instobj_func; - memory->ptrs = &nvkm_instobj_ptrs; - } - return iobj->map; -} - -static u32 -nvkm_instobj_rd32_slow(struct nvkm_memory *memory, u64 offset) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - return nvkm_ro32(iobj->parent, offset); -} - -static void -nvkm_instobj_wr32_slow(struct nvkm_memory *memory, u64 offset, u32 data) -{ - struct nvkm_instobj *iobj = nvkm_instobj(memory); - return nvkm_wo32(iobj->parent, offset, data); -} - -static const struct nvkm_memory_func -nvkm_instobj_func_slow = { - .dtor = nvkm_instobj_dtor_old, - .target = nvkm_instobj_target, - .addr = nvkm_instobj_addr, - .size = nvkm_instobj_size, - .boot = nvkm_instobj_boot, - .acquire = nvkm_instobj_acquire_slow, - .release = nvkm_instobj_release_slow, - .map = nvkm_instobj_map, -}; - -static const struct nvkm_memory_ptrs -nvkm_instobj_ptrs_slow = { - .rd32 = nvkm_instobj_rd32_slow, - .wr32 = nvkm_instobj_wr32_slow, -}; - void nvkm_instobj_dtor(struct nvkm_instmem *imem, struct nvkm_instobj *iobj) { @@ -183,7 +41,6 @@ nvkm_instobj_ctor(const struct nvkm_memo struct nvkm_instmem *imem, struct nvkm_instobj *iobj) { nvkm_memory_ctor(func, &iobj->memory); - iobj->parent = &iobj->memory; iobj->suspend = NULL; spin_lock(&imem->lock); list_add_tail(&iobj->head, &imem->list); @@ -196,7 +53,6 @@ nvkm_instobj_new(struct nvkm_instmem *im { struct nvkm_subdev *subdev = &imem->subdev; struct nvkm_memory *memory = NULL; - struct nvkm_instobj *iobj; u32 offset; int ret; @@ -209,22 +65,6 @@ nvkm_instobj_new(struct nvkm_instmem *im nvkm_trace(subdev, "new %08x %08x %d: %010llx %010llx\n", size, align, zero, nvkm_memory_addr(memory), nvkm_memory_size(memory)); - if (!imem->func->persistent) { - if (!(iobj = kzalloc(sizeof(*iobj), GFP_KERNEL))) { - ret = -ENOMEM; - goto done; - } - - nvkm_memory_ctor(&nvkm_instobj_func_slow, &iobj->memory); - iobj->memory.ptrs = &nvkm_instobj_ptrs_slow; - iobj->parent = memory; - iobj->imem = imem; - spin_lock(&iobj->imem->lock); - list_add_tail(&iobj->head, &imem->list); - spin_unlock(&iobj->imem->lock); - memory = &iobj->memory; - } - if (!imem->func->zero && zero) { void __iomem *map = nvkm_kmap(memory); if (unlikely(!map)) { @@ -271,7 +111,7 @@ nvkm_instmem_fini(struct nvkm_subdev *su if (suspend) { list_for_each_entry(iobj, &imem->list, head) { - struct nvkm_memory *memory = iobj->parent; + struct nvkm_memory *memory = &iobj->memory; u64 size = nvkm_memory_size(memory); iobj->suspend = vmalloc(size); @@ -304,7 +144,7 @@ nvkm_instmem_init(struct nvkm_subdev *su list_for_each_entry(iobj, &imem->list, head) { if (iobj->suspend) { - struct nvkm_memory *memory = iobj->parent; + struct nvkm_memory *memory = &iobj->memory; u64 size = nvkm_memory_size(memory); for (i = 0; i < size; i += 4) nvkm_wo32(memory, i, iobj->suspend[i / 4]); --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c @@ -558,7 +558,6 @@ static const struct nvkm_instmem_func gk20a_instmem = { .dtor = gk20a_instmem_dtor, .memory_new = gk20a_instobj_new, - .persistent = true, .zero = false, }; --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.c @@ -214,7 +214,6 @@ nv04_instmem = { .rd32 = nv04_instmem_rd32, .wr32 = nv04_instmem_wr32, .memory_new = nv04_instobj_new, - .persistent = true, .zero = false, }; --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c @@ -232,7 +232,6 @@ nv40_instmem = { .rd32 = nv40_instmem_rd32, .wr32 = nv40_instmem_wr32, .memory_new = nv40_instobj_new, - .persistent = true, .zero = false, }; --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c @@ -374,7 +374,6 @@ static const struct nvkm_instmem_func nv50_instmem = { .fini = nv50_instmem_fini, .memory_new = nv50_instobj_new, - .persistent = true, .zero = false, }; --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/priv.h @@ -11,7 +11,6 @@ struct nvkm_instmem_func { void (*wr32)(struct nvkm_instmem *, u32 addr, u32 data); int (*memory_new)(struct nvkm_instmem *, u32 size, u32 align, bool zero, struct nvkm_memory **); - bool persistent; bool zero; }; @@ -22,11 +21,8 @@ void nvkm_instmem_ctor(const struct nvkm struct nvkm_instobj { struct nvkm_memory memory; - struct nvkm_memory *parent; - struct nvkm_instmem *imem; struct list_head head; u32 *suspend; - void __iomem *map; }; void nvkm_instobj_ctor(const struct nvkm_memory_func *func,