diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-01-30 23:57:33 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-02-20 01:00:48 -0500 |
commit | e18c080fb8695d038f69c26c248f5ecbd9e8aa77 (patch) | |
tree | 74e191678bb9ba028d85e219863ddb706f4e6fc8 /drivers/gpu/drm/nouveau/nvc0_fence.c | |
parent | a2fa297378c54e9b8b8ad355e34c9fbed730250b (diff) |
drm/nouveau/fence/nv84-: put processes to sleep while waiting on fences
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvc0_fence.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvc0_fence.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nvc0_fence.c b/drivers/gpu/drm/nouveau/nvc0_fence.c index 2a56b1b551cb..d8ed2c5f4fab 100644 --- a/drivers/gpu/drm/nouveau/nvc0_fence.c +++ b/drivers/gpu/drm/nouveau/nvc0_fence.c | |||
@@ -62,13 +62,14 @@ nvc0_fence_emit(struct nouveau_fence *fence) | |||
62 | u64 addr = fctx->vma.offset + fifo->chid * 16; | 62 | u64 addr = fctx->vma.offset + fifo->chid * 16; |
63 | int ret; | 63 | int ret; |
64 | 64 | ||
65 | ret = RING_SPACE(chan, 5); | 65 | ret = RING_SPACE(chan, 6); |
66 | if (ret == 0) { | 66 | if (ret == 0) { |
67 | BEGIN_NVC0(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 4); | 67 | BEGIN_NVC0(chan, 0, NV84_SUBCHAN_SEMAPHORE_ADDRESS_HIGH, 5); |
68 | OUT_RING (chan, upper_32_bits(addr)); | 68 | OUT_RING (chan, upper_32_bits(addr)); |
69 | OUT_RING (chan, lower_32_bits(addr)); | 69 | OUT_RING (chan, lower_32_bits(addr)); |
70 | OUT_RING (chan, fence->sequence); | 70 | OUT_RING (chan, fence->sequence); |
71 | OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_WRITE_LONG); | 71 | OUT_RING (chan, NV84_SUBCHAN_SEMAPHORE_TRIGGER_WRITE_LONG); |
72 | OUT_RING (chan, 0x00000000); | ||
72 | FIRE_RING (chan); | 73 | FIRE_RING (chan); |
73 | } | 74 | } |
74 | 75 | ||
@@ -217,6 +218,9 @@ nvc0_fence_create(struct nouveau_drm *drm) | |||
217 | priv->base.sync = nvc0_fence_sync; | 218 | priv->base.sync = nvc0_fence_sync; |
218 | priv->base.read = nvc0_fence_read; | 219 | priv->base.read = nvc0_fence_read; |
219 | 220 | ||
221 | init_waitqueue_head(&priv->base.waiting); | ||
222 | priv->base.uevent = true; | ||
223 | |||
220 | ret = nouveau_bo_new(drm->dev, 16 * (pfifo->max + 1), 0, | 224 | ret = nouveau_bo_new(drm->dev, 16 * (pfifo->max + 1), 0, |
221 | TTM_PL_FLAG_VRAM, 0, 0, NULL, &priv->bo); | 225 | TTM_PL_FLAG_VRAM, 0, 0, NULL, &priv->bo); |
222 | if (ret == 0) { | 226 | if (ret == 0) { |