diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.c | 4 |
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 | |||
54 | nvkm_fifo_channel_create_(struct nvkm_object *parent, | 54 | nvkm_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); |