|
@@ -47,7 +47,7 @@ gk104_fifo_uevent_init(struct nvkm_fifo *fifo)
|
|
|
}
|
|
|
|
|
|
void
|
|
|
-gk104_fifo_runlist_update(struct gk104_fifo *fifo, u32 engine)
|
|
|
+gk104_fifo_runlist_commit(struct gk104_fifo *fifo, u32 engine)
|
|
|
{
|
|
|
struct gk104_fifo_engn *engn = &fifo->engine[engine];
|
|
|
struct gk104_fifo_chan *chan;
|
|
@@ -78,6 +78,22 @@ gk104_fifo_runlist_update(struct gk104_fifo *fifo, u32 engine)
|
|
|
mutex_unlock(&subdev->mutex);
|
|
|
}
|
|
|
|
|
|
+void
|
|
|
+gk104_fifo_runlist_remove(struct gk104_fifo *fifo, struct gk104_fifo_chan *chan)
|
|
|
+{
|
|
|
+ mutex_lock(&fifo->base.engine.subdev.mutex);
|
|
|
+ list_del_init(&chan->head);
|
|
|
+ mutex_unlock(&fifo->base.engine.subdev.mutex);
|
|
|
+}
|
|
|
+
|
|
|
+void
|
|
|
+gk104_fifo_runlist_insert(struct gk104_fifo *fifo, struct gk104_fifo_chan *chan)
|
|
|
+{
|
|
|
+ mutex_lock(&fifo->base.engine.subdev.mutex);
|
|
|
+ list_add_tail(&chan->head, &fifo->engine[chan->engine].chan);
|
|
|
+ mutex_unlock(&fifo->base.engine.subdev.mutex);
|
|
|
+}
|
|
|
+
|
|
|
static inline struct nvkm_engine *
|
|
|
gk104_fifo_engine(struct gk104_fifo *fifo, u32 engn)
|
|
|
{
|
|
@@ -112,7 +128,7 @@ gk104_fifo_recover_work(struct work_struct *work)
|
|
|
nvkm_subdev_fini(&engine->subdev, false);
|
|
|
WARN_ON(nvkm_subdev_init(&engine->subdev));
|
|
|
}
|
|
|
- gk104_fifo_runlist_update(fifo, gk104_fifo_subdev_engine(engn));
|
|
|
+ gk104_fifo_runlist_commit(fifo, gk104_fifo_subdev_engine(engn));
|
|
|
}
|
|
|
|
|
|
nvkm_wr32(device, 0x00262c, engm);
|