| .. | .. |
|---|
| 21 | 21 | * |
|---|
| 22 | 22 | * Authors: Ben Skeggs <bskeggs@redhat.com> |
|---|
| 23 | 23 | */ |
|---|
| 24 | | - |
|---|
| 25 | | -#include <nvif/os.h> |
|---|
| 26 | | -#include <nvif/class.h> |
|---|
| 27 | | -#include <nvif/cl0002.h> |
|---|
| 28 | | - |
|---|
| 29 | 24 | #include "nouveau_drv.h" |
|---|
| 30 | 25 | #include "nouveau_dma.h" |
|---|
| 31 | 26 | #include "nv10_fence.h" |
|---|
| 27 | + |
|---|
| 28 | +#include <nvif/push006c.h> |
|---|
| 29 | + |
|---|
| 30 | +#include <nvif/class.h> |
|---|
| 31 | +#include <nvif/cl0002.h> |
|---|
| 32 | + |
|---|
| 33 | +#include <nvhw/class/cl176e.h> |
|---|
| 32 | 34 | |
|---|
| 33 | 35 | int |
|---|
| 34 | 36 | nv17_fence_sync(struct nouveau_fence *fence, |
|---|
| .. | .. |
|---|
| 37 | 39 | struct nouveau_cli *cli = (void *)prev->user.client; |
|---|
| 38 | 40 | struct nv10_fence_priv *priv = chan->drm->fence; |
|---|
| 39 | 41 | struct nv10_fence_chan *fctx = chan->fence; |
|---|
| 42 | + struct nvif_push *ppush = prev->chan.push; |
|---|
| 43 | + struct nvif_push *npush = chan->chan.push; |
|---|
| 40 | 44 | u32 value; |
|---|
| 41 | 45 | int ret; |
|---|
| 42 | 46 | |
|---|
| .. | .. |
|---|
| 48 | 52 | priv->sequence += 2; |
|---|
| 49 | 53 | spin_unlock(&priv->lock); |
|---|
| 50 | 54 | |
|---|
| 51 | | - ret = RING_SPACE(prev, 5); |
|---|
| 55 | + ret = PUSH_WAIT(ppush, 5); |
|---|
| 52 | 56 | if (!ret) { |
|---|
| 53 | | - BEGIN_NV04(prev, 0, NV11_SUBCHAN_DMA_SEMAPHORE, 4); |
|---|
| 54 | | - OUT_RING (prev, fctx->sema.handle); |
|---|
| 55 | | - OUT_RING (prev, 0); |
|---|
| 56 | | - OUT_RING (prev, value + 0); |
|---|
| 57 | | - OUT_RING (prev, value + 1); |
|---|
| 58 | | - FIRE_RING (prev); |
|---|
| 57 | + PUSH_MTHD(ppush, NV176E, SET_CONTEXT_DMA_SEMAPHORE, fctx->sema.handle, |
|---|
| 58 | + SEMAPHORE_OFFSET, 0, |
|---|
| 59 | + SEMAPHORE_ACQUIRE, value + 0, |
|---|
| 60 | + SEMAPHORE_RELEASE, value + 1); |
|---|
| 61 | + PUSH_KICK(ppush); |
|---|
| 59 | 62 | } |
|---|
| 60 | 63 | |
|---|
| 61 | | - if (!ret && !(ret = RING_SPACE(chan, 5))) { |
|---|
| 62 | | - BEGIN_NV04(chan, 0, NV11_SUBCHAN_DMA_SEMAPHORE, 4); |
|---|
| 63 | | - OUT_RING (chan, fctx->sema.handle); |
|---|
| 64 | | - OUT_RING (chan, 0); |
|---|
| 65 | | - OUT_RING (chan, value + 1); |
|---|
| 66 | | - OUT_RING (chan, value + 2); |
|---|
| 67 | | - FIRE_RING (chan); |
|---|
| 64 | + if (!ret && !(ret = PUSH_WAIT(npush, 5))) { |
|---|
| 65 | + PUSH_MTHD(npush, NV176E, SET_CONTEXT_DMA_SEMAPHORE, fctx->sema.handle, |
|---|
| 66 | + SEMAPHORE_OFFSET, 0, |
|---|
| 67 | + SEMAPHORE_ACQUIRE, value + 1, |
|---|
| 68 | + SEMAPHORE_RELEASE, value + 2); |
|---|
| 69 | + PUSH_KICK(npush); |
|---|
| 68 | 70 | } |
|---|
| 69 | 71 | |
|---|
| 70 | 72 | mutex_unlock(&cli->mutex); |
|---|
| .. | .. |
|---|
| 76 | 78 | { |
|---|
| 77 | 79 | struct nv10_fence_priv *priv = chan->drm->fence; |
|---|
| 78 | 80 | struct nv10_fence_chan *fctx; |
|---|
| 79 | | - struct ttm_mem_reg *reg = &priv->bo->bo.mem; |
|---|
| 81 | + struct ttm_resource *reg = &priv->bo->bo.mem; |
|---|
| 80 | 82 | u32 start = reg->start * PAGE_SIZE; |
|---|
| 81 | 83 | u32 limit = start + reg->size - 1; |
|---|
| 82 | 84 | int ret = 0; |
|---|
| .. | .. |
|---|
| 90 | 92 | fctx->base.read = nv10_fence_read; |
|---|
| 91 | 93 | fctx->base.sync = nv17_fence_sync; |
|---|
| 92 | 94 | |
|---|
| 93 | | - ret = nvif_object_init(&chan->user, NvSema, NV_DMA_FROM_MEMORY, |
|---|
| 95 | + ret = nvif_object_ctor(&chan->user, "fenceCtxDma", NvSema, |
|---|
| 96 | + NV_DMA_FROM_MEMORY, |
|---|
| 94 | 97 | &(struct nv_dma_v0) { |
|---|
| 95 | 98 | .target = NV_DMA_V0_TARGET_VRAM, |
|---|
| 96 | 99 | .access = NV_DMA_V0_ACCESS_RDWR, |
|---|
| .. | .. |
|---|
| 127 | 130 | priv->base.context_del = nv10_fence_context_del; |
|---|
| 128 | 131 | spin_lock_init(&priv->lock); |
|---|
| 129 | 132 | |
|---|
| 130 | | - ret = nouveau_bo_new(&drm->client, 4096, 0x1000, TTM_PL_FLAG_VRAM, |
|---|
| 133 | + ret = nouveau_bo_new(&drm->client, 4096, 0x1000, |
|---|
| 134 | + NOUVEAU_GEM_DOMAIN_VRAM, |
|---|
| 131 | 135 | 0, 0x0000, NULL, NULL, &priv->bo); |
|---|
| 132 | 136 | if (!ret) { |
|---|
| 133 | | - ret = nouveau_bo_pin(priv->bo, TTM_PL_FLAG_VRAM, false); |
|---|
| 137 | + ret = nouveau_bo_pin(priv->bo, NOUVEAU_GEM_DOMAIN_VRAM, false); |
|---|
| 134 | 138 | if (!ret) { |
|---|
| 135 | 139 | ret = nouveau_bo_map(priv->bo); |
|---|
| 136 | 140 | if (ret) |
|---|