diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-06-05 21:34:27 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-06-23 01:59:07 -0400 |
commit | b7cb6c01ee549b6c7c365c92f156983d346295a3 (patch) | |
tree | ed188dfde5cedb05f6c478925f947f0bb2a97ac9 /drivers/gpu | |
parent | 639212d01157266d9ee0b904fbc9f4a556e1c711 (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.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_object.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nv50_evo.c | 1 |
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 | ||
31 | static int | 32 | static int |
32 | nouveau_channel_pushbuf_ctxdma_init(struct nouveau_channel *chan) | 33 | nouveau_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); |