aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-06-05 21:34:27 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-06-23 01:59:07 -0400
commitb7cb6c01ee549b6c7c365c92f156983d346295a3 (patch)
treeed188dfde5cedb05f6c478925f947f0bb2a97ac9 /drivers/gpu
parent639212d01157266d9ee0b904fbc9f4a556e1c711 (diff)
drm/nouveau: modify gpuobj/ntfy takedown ordering
gpuobj really needs splitting into channel/gpuobj code instead... Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_channel.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_object.c2
-rw-r--r--drivers/gpu/drm/nouveau/nv50_evo.c1
3 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
index 764dd672112a..96ac906cfee5 100644
--- a/drivers/gpu/drm/nouveau/nouveau_channel.c
+++ b/drivers/gpu/drm/nouveau/nouveau_channel.c
@@ -27,6 +27,7 @@
27#include "nouveau_drv.h" 27#include "nouveau_drv.h"
28#include "nouveau_drm.h" 28#include "nouveau_drm.h"
29#include "nouveau_dma.h" 29#include "nouveau_dma.h"
30#include "nouveau_ramht.h"
30 31
31static int 32static int
32nouveau_channel_pushbuf_ctxdma_init(struct nouveau_channel *chan) 33nouveau_channel_pushbuf_ctxdma_init(struct nouveau_channel *chan)
@@ -316,8 +317,9 @@ nouveau_channel_put_unlocked(struct nouveau_channel **pchan)
316 nouveau_bo_unpin(chan->pushbuf_bo); 317 nouveau_bo_unpin(chan->pushbuf_bo);
317 nouveau_bo_ref(NULL, &chan->pushbuf_bo); 318 nouveau_bo_ref(NULL, &chan->pushbuf_bo);
318 } 319 }
319 nouveau_gpuobj_channel_takedown(chan); 320 nouveau_ramht_ref(NULL, &chan->ramht, chan);
320 nouveau_notifier_takedown_channel(chan); 321 nouveau_notifier_takedown_channel(chan);
322 nouveau_gpuobj_channel_takedown(chan);
321 323
322 nouveau_channel_ref(NULL, pchan); 324 nouveau_channel_ref(NULL, pchan);
323} 325}
diff --git a/drivers/gpu/drm/nouveau/nouveau_object.c b/drivers/gpu/drm/nouveau/nouveau_object.c
index fe95766d03bb..c56ac93aee72 100644
--- a/drivers/gpu/drm/nouveau/nouveau_object.c
+++ b/drivers/gpu/drm/nouveau/nouveau_object.c
@@ -844,8 +844,6 @@ nouveau_gpuobj_channel_takedown(struct nouveau_channel *chan)
844 844
845 NV_DEBUG(dev, "ch%d\n", chan->id); 845 NV_DEBUG(dev, "ch%d\n", chan->id);
846 846
847 nouveau_ramht_ref(NULL, &chan->ramht, chan);
848
849 nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd); 847 nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd);
850 nouveau_gpuobj_ref(NULL, &chan->vm_pd); 848 nouveau_gpuobj_ref(NULL, &chan->vm_pd);
851 849
diff --git a/drivers/gpu/drm/nouveau/nv50_evo.c b/drivers/gpu/drm/nouveau/nv50_evo.c
index c8e83c1a4de8..18c61929c450 100644
--- a/drivers/gpu/drm/nouveau/nv50_evo.c
+++ b/drivers/gpu/drm/nouveau/nv50_evo.c
@@ -38,6 +38,7 @@ nv50_evo_channel_del(struct nouveau_channel **pevo)
38 return; 38 return;
39 *pevo = NULL; 39 *pevo = NULL;
40 40
41 nouveau_ramht_ref(NULL, &evo->ramht, evo);
41 nouveau_gpuobj_channel_takedown(evo); 42 nouveau_gpuobj_channel_takedown(evo);
42 nouveau_bo_unmap(evo->pushbuf_bo); 43 nouveau_bo_unmap(evo->pushbuf_bo);
43 nouveau_bo_ref(NULL, &evo->pushbuf_bo); 44 nouveau_bo_ref(NULL, &evo->pushbuf_bo);