aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/fifo/base.c7
-rw-r--r--drivers/gpu/drm/nouveau/core/include/engine/fifo.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/base.c b/drivers/gpu/drm/nouveau/core/engine/fifo/base.c
index 7341ebe131fa..d3ec436d9cb5 100644
--- a/drivers/gpu/drm/nouveau/core/engine/fifo/base.c
+++ b/drivers/gpu/drm/nouveau/core/engine/fifo/base.c
@@ -91,6 +91,8 @@ nouveau_fifo_channel_create_(struct nouveau_object *parent,
91 if (!chan->user) 91 if (!chan->user)
92 return -EFAULT; 92 return -EFAULT;
93 93
94 nouveau_event_trigger(priv->cevent, 0);
95
94 chan->size = size; 96 chan->size = size;
95 return 0; 97 return 0;
96} 98}
@@ -167,6 +169,7 @@ nouveau_fifo_destroy(struct nouveau_fifo *priv)
167{ 169{
168 kfree(priv->channel); 170 kfree(priv->channel);
169 nouveau_event_destroy(&priv->uevent); 171 nouveau_event_destroy(&priv->uevent);
172 nouveau_event_destroy(&priv->cevent);
170 nouveau_engine_destroy(&priv->base); 173 nouveau_engine_destroy(&priv->base);
171} 174}
172 175
@@ -191,6 +194,10 @@ nouveau_fifo_create_(struct nouveau_object *parent,
191 if (!priv->channel) 194 if (!priv->channel)
192 return -ENOMEM; 195 return -ENOMEM;
193 196
197 ret = nouveau_event_create(1, &priv->cevent);
198 if (ret)
199 return ret;
200
194 ret = nouveau_event_create(1, &priv->uevent); 201 ret = nouveau_event_create(1, &priv->uevent);
195 if (ret) 202 if (ret)
196 return ret; 203 return ret;
diff --git a/drivers/gpu/drm/nouveau/core/include/engine/fifo.h b/drivers/gpu/drm/nouveau/core/include/engine/fifo.h
index b46c197709f3..633c2f806482 100644
--- a/drivers/gpu/drm/nouveau/core/include/engine/fifo.h
+++ b/drivers/gpu/drm/nouveau/core/include/engine/fifo.h
@@ -65,7 +65,8 @@ struct nouveau_fifo_base {
65struct nouveau_fifo { 65struct nouveau_fifo {
66 struct nouveau_engine base; 66 struct nouveau_engine base;
67 67
68 struct nouveau_event *uevent; 68 struct nouveau_event *cevent; /* channel creation event */
69 struct nouveau_event *uevent; /* async user trigger */
69 70
70 struct nouveau_object **channel; 71 struct nouveau_object **channel;
71 spinlock_t lock; 72 spinlock_t lock;