aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/fifo
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c17
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c4
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c4
9 files changed, 20 insertions, 17 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
index e298aef71918..73b8ab4c222e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
@@ -54,9 +54,12 @@ int
54nvkm_fifo_channel_create_(struct nvkm_object *parent, 54nvkm_fifo_channel_create_(struct nvkm_object *parent,
55 struct nvkm_object *engine, 55 struct nvkm_object *engine,
56 struct nvkm_oclass *oclass, 56 struct nvkm_oclass *oclass,
57 int bar, u32 addr, u32 size, u32 pushbuf, 57 int bar, u32 addr, u32 size, u64 pushbuf,
58 u64 engmask, int len, void **ptr) 58 u64 engmask, int len, void **ptr)
59{ 59{
60 struct nvkm_client *client = nvkm_client(parent);
61 struct nvkm_handle *handle;
62 struct nvkm_dmaobj *dmaobj;
60 struct nvkm_fifo *fifo = (void *)engine; 63 struct nvkm_fifo *fifo = (void *)engine;
61 struct nvkm_fifo_chan *chan; 64 struct nvkm_fifo_chan *chan;
62 struct nvkm_dmaeng *dmaeng; 65 struct nvkm_dmaeng *dmaeng;
@@ -73,12 +76,13 @@ nvkm_fifo_channel_create_(struct nvkm_object *parent,
73 return ret; 76 return ret;
74 77
75 /* validate dma object representing push buffer */ 78 /* validate dma object representing push buffer */
76 chan->pushdma = (void *)nvkm_handle_ref(parent, pushbuf); 79 handle = nvkm_client_search(client, pushbuf);
77 if (!chan->pushdma) 80 if (!handle)
78 return -ENOENT; 81 return -ENOENT;
82 dmaobj = (void *)handle->object;
79 83
80 dmaeng = (void *)chan->pushdma->base.engine; 84 dmaeng = (void *)dmaobj->base.engine;
81 switch (chan->pushdma->base.oclass->handle) { 85 switch (dmaobj->base.oclass->handle) {
82 case NV_DMA_FROM_MEMORY: 86 case NV_DMA_FROM_MEMORY:
83 case NV_DMA_IN_MEMORY: 87 case NV_DMA_IN_MEMORY:
84 break; 88 break;
@@ -86,7 +90,7 @@ nvkm_fifo_channel_create_(struct nvkm_object *parent,
86 return -EINVAL; 90 return -EINVAL;
87 } 91 }
88 92
89 ret = dmaeng->bind(chan->pushdma, parent, &chan->pushgpu); 93 ret = dmaeng->bind(dmaobj, parent, &chan->pushgpu);
90 if (ret) 94 if (ret)
91 return ret; 95 return ret;
92 96
@@ -126,7 +130,6 @@ nvkm_fifo_channel_destroy(struct nvkm_fifo_chan *chan)
126 spin_unlock_irqrestore(&fifo->lock, flags); 130 spin_unlock_irqrestore(&fifo->lock, flags);
127 131
128 nvkm_gpuobj_ref(NULL, &chan->pushgpu); 132 nvkm_gpuobj_ref(NULL, &chan->pushgpu);
129 nvkm_object_ref(NULL, (struct nvkm_object **)&chan->pushdma);
130 nvkm_namedb_destroy(&chan->namedb); 133 nvkm_namedb_destroy(&chan->namedb);
131} 134}
132 135
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c
index c4f48112aa05..575329d3f2bb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c
@@ -182,7 +182,7 @@ g84_fifo_chan_ctor_dma(struct nvkm_object *parent, struct nvkm_object *engine,
182 182
183 nvif_ioctl(parent, "create channel dma size %d\n", size); 183 nvif_ioctl(parent, "create channel dma size %d\n", size);
184 if (nvif_unpack(args->v0, 0, 0, false)) { 184 if (nvif_unpack(args->v0, 0, 0, false)) {
185 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 185 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
186 "offset %016llx\n", args->v0.version, 186 "offset %016llx\n", args->v0.version,
187 args->v0.pushbuf, args->v0.offset); 187 args->v0.pushbuf, args->v0.offset);
188 } else 188 } else
@@ -258,7 +258,7 @@ g84_fifo_chan_ctor_ind(struct nvkm_object *parent, struct nvkm_object *engine,
258 258
259 nvif_ioctl(parent, "create channel gpfifo size %d\n", size); 259 nvif_ioctl(parent, "create channel gpfifo size %d\n", size);
260 if (nvif_unpack(args->v0, 0, 0, false)) { 260 if (nvif_unpack(args->v0, 0, 0, false)) {
261 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %08x " 261 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %llx "
262 "ioffset %016llx ilength %08x\n", 262 "ioffset %016llx ilength %08x\n",
263 args->v0.version, args->v0.pushbuf, args->v0.ioffset, 263 args->v0.version, args->v0.pushbuf, args->v0.ioffset,
264 args->v0.ilength); 264 args->v0.ilength);
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c
index d940d41d1182..cfaa8aeb2223 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c
@@ -210,7 +210,7 @@ gf100_fifo_chan_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
210 210
211 nvif_ioctl(parent, "create channel gpfifo size %d\n", size); 211 nvif_ioctl(parent, "create channel gpfifo size %d\n", size);
212 if (nvif_unpack(args->v0, 0, 0, false)) { 212 if (nvif_unpack(args->v0, 0, 0, false)) {
213 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %08x " 213 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %llx "
214 "ioffset %016llx ilength %08x\n", 214 "ioffset %016llx ilength %08x\n",
215 args->v0.version, args->v0.pushbuf, args->v0.ioffset, 215 args->v0.version, args->v0.pushbuf, args->v0.ioffset,
216 args->v0.ilength); 216 args->v0.ilength);
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
index 9a1ecef24813..9c423514fee7 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
@@ -251,7 +251,7 @@ gk104_fifo_chan_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
251 251
252 nvif_ioctl(parent, "create channel gpfifo size %d\n", size); 252 nvif_ioctl(parent, "create channel gpfifo size %d\n", size);
253 if (nvif_unpack(args->v0, 0, 0, false)) { 253 if (nvif_unpack(args->v0, 0, 0, false)) {
254 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %08x " 254 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %llx "
255 "ioffset %016llx ilength %08x engine %08x\n", 255 "ioffset %016llx ilength %08x engine %08x\n",
256 args->v0.version, args->v0.pushbuf, args->v0.ioffset, 256 args->v0.version, args->v0.pushbuf, args->v0.ioffset,
257 args->v0.ilength, args->v0.engine); 257 args->v0.ilength, args->v0.engine);
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
index d5346636b7e3..6458fa0dcb95 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c
@@ -120,7 +120,7 @@ nv04_fifo_chan_ctor(struct nvkm_object *parent,
120 120
121 nvif_ioctl(parent, "create channel dma size %d\n", size); 121 nvif_ioctl(parent, "create channel dma size %d\n", size);
122 if (nvif_unpack(args->v0, 0, 0, false)) { 122 if (nvif_unpack(args->v0, 0, 0, false)) {
123 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 123 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
124 "offset %016llx\n", args->v0.version, 124 "offset %016llx\n", args->v0.version,
125 args->v0.pushbuf, args->v0.offset); 125 args->v0.pushbuf, args->v0.offset);
126 } else 126 } else
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c
index 5a7b11f92684..c4b5a3002e3c 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c
@@ -64,7 +64,7 @@ nv10_fifo_chan_ctor(struct nvkm_object *parent,
64 64
65 nvif_ioctl(parent, "create channel dma size %d\n", size); 65 nvif_ioctl(parent, "create channel dma size %d\n", size);
66 if (nvif_unpack(args->v0, 0, 0, false)) { 66 if (nvif_unpack(args->v0, 0, 0, false)) {
67 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 67 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
68 "offset %016llx\n", args->v0.version, 68 "offset %016llx\n", args->v0.version,
69 args->v0.pushbuf, args->v0.offset); 69 args->v0.pushbuf, args->v0.offset);
70 } else 70 } else
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c
index 537bb7229e3d..ece2715e77ff 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c
@@ -69,7 +69,7 @@ nv17_fifo_chan_ctor(struct nvkm_object *parent,
69 69
70 nvif_ioctl(parent, "create channel dma size %d\n", size); 70 nvif_ioctl(parent, "create channel dma size %d\n", size);
71 if (nvif_unpack(args->v0, 0, 0, false)) { 71 if (nvif_unpack(args->v0, 0, 0, false)) {
72 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 72 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
73 "offset %016llx\n", args->v0.version, 73 "offset %016llx\n", args->v0.version,
74 args->v0.pushbuf, args->v0.offset); 74 args->v0.pushbuf, args->v0.offset);
75 } else 75 } else
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
index 27f07d1db85f..a42218a961d4 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c
@@ -192,7 +192,7 @@ nv40_fifo_chan_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
192 192
193 nvif_ioctl(parent, "create channel dma size %d\n", size); 193 nvif_ioctl(parent, "create channel dma size %d\n", size);
194 if (nvif_unpack(args->v0, 0, 0, false)) { 194 if (nvif_unpack(args->v0, 0, 0, false)) {
195 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 195 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
196 "offset %016llx\n", args->v0.version, 196 "offset %016llx\n", args->v0.version,
197 args->v0.pushbuf, args->v0.offset); 197 args->v0.pushbuf, args->v0.offset);
198 } else 198 } else
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c
index 24154778c01e..1a7ca8e5aecb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c
@@ -212,7 +212,7 @@ nv50_fifo_chan_ctor_dma(struct nvkm_object *parent, struct nvkm_object *engine,
212 212
213 nvif_ioctl(parent, "create channel dma size %d\n", size); 213 nvif_ioctl(parent, "create channel dma size %d\n", size);
214 if (nvif_unpack(args->v0, 0, 0, false)) { 214 if (nvif_unpack(args->v0, 0, 0, false)) {
215 nvif_ioctl(parent, "create channel dma vers %d pushbuf %08x " 215 nvif_ioctl(parent, "create channel dma vers %d pushbuf %llx "
216 "offset %016llx\n", args->v0.version, 216 "offset %016llx\n", args->v0.version,
217 args->v0.pushbuf, args->v0.offset); 217 args->v0.pushbuf, args->v0.offset);
218 } else 218 } else
@@ -276,7 +276,7 @@ nv50_fifo_chan_ctor_ind(struct nvkm_object *parent, struct nvkm_object *engine,
276 276
277 nvif_ioctl(parent, "create channel gpfifo size %d\n", size); 277 nvif_ioctl(parent, "create channel gpfifo size %d\n", size);
278 if (nvif_unpack(args->v0, 0, 0, false)) { 278 if (nvif_unpack(args->v0, 0, 0, false)) {
279 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %08x " 279 nvif_ioctl(parent, "create channel gpfifo vers %d pushbuf %llx "
280 "ioffset %016llx ilength %08x\n", 280 "ioffset %016llx ilength %08x\n",
281 args->v0.version, args->v0.pushbuf, args->v0.ioffset, 281 args->v0.version, args->v0.pushbuf, args->v0.ioffset,
282 args->v0.ilength); 282 args->v0.ilength);