aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_fence.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-02-13 22:43:21 -0500
committerBen Skeggs <bskeggs@redhat.com>2013-02-20 01:00:53 -0500
commit264ce192b3e7f45d0adb37bfbab2b01a3fbe6c30 (patch)
tree68ba7f61bc07f54378e562ce385f60dc814b4fad /drivers/gpu/drm/nouveau/nouveau_fence.c
parent827520ce06568f699dad275dcca61647cce08757 (diff)
drm/nv84-/fence: prepare for emit/sync support of sysram sequences
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_fence.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fence.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
index 6a7a5b576273..6c946837a0aa 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fence.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
@@ -41,8 +41,6 @@ nouveau_fence_context_del(struct nouveau_fence_chan *fctx)
41 struct nouveau_fence *fence, *fnext; 41 struct nouveau_fence *fence, *fnext;
42 spin_lock(&fctx->lock); 42 spin_lock(&fctx->lock);
43 list_for_each_entry_safe(fence, fnext, &fctx->pending, head) { 43 list_for_each_entry_safe(fence, fnext, &fctx->pending, head) {
44 if (fence->work)
45 fence->work(fence->priv, false);
46 fence->channel = NULL; 44 fence->channel = NULL;
47 list_del(&fence->head); 45 list_del(&fence->head);
48 nouveau_fence_unref(&fence); 46 nouveau_fence_unref(&fence);
@@ -69,8 +67,6 @@ nouveau_fence_update(struct nouveau_channel *chan)
69 if (fctx->read(chan) < fence->sequence) 67 if (fctx->read(chan) < fence->sequence)
70 break; 68 break;
71 69
72 if (fence->work)
73 fence->work(fence->priv, true);
74 fence->channel = NULL; 70 fence->channel = NULL;
75 list_del(&fence->head); 71 list_del(&fence->head);
76 nouveau_fence_unref(&fence); 72 nouveau_fence_unref(&fence);
@@ -256,7 +252,8 @@ nouveau_fence_ref(struct nouveau_fence *fence)
256} 252}
257 253
258int 254int
259nouveau_fence_new(struct nouveau_channel *chan, struct nouveau_fence **pfence) 255nouveau_fence_new(struct nouveau_channel *chan, bool sysmem,
256 struct nouveau_fence **pfence)
260{ 257{
261 struct nouveau_fence *fence; 258 struct nouveau_fence *fence;
262 int ret = 0; 259 int ret = 0;
@@ -267,6 +264,8 @@ nouveau_fence_new(struct nouveau_channel *chan, struct nouveau_fence **pfence)
267 fence = kzalloc(sizeof(*fence), GFP_KERNEL); 264 fence = kzalloc(sizeof(*fence), GFP_KERNEL);
268 if (!fence) 265 if (!fence)
269 return -ENOMEM; 266 return -ENOMEM;
267
268 fence->sysmem = sysmem;
270 kref_init(&fence->kref); 269 kref_init(&fence->kref);
271 270
272 ret = nouveau_fence_emit(fence, chan); 271 ret = nouveau_fence_emit(fence, chan);