diff options
author | Ben Skeggs | 2011-06-08 10:29:12 +0200 |
---|---|---|
committer | Ben Skeggs | 2011-06-23 08:01:47 +0200 |
commit | 06b75e3552394af66cc1ee4bfb5fe01a94929adb (patch) | |
tree | 04fd2af5e34491c30aa2a8c333da54c85203bb40 /drivers/gpu/drm/nouveau/nouveau_state.c | |
parent | drm/nvc0: enable per-client address spaces (diff) | |
download | kernel-qcow2-linux-06b75e3552394af66cc1ee4bfb5fe01a94929adb.tar.gz kernel-qcow2-linux-06b75e3552394af66cc1ee4bfb5fe01a94929adb.tar.xz kernel-qcow2-linux-06b75e3552394af66cc1ee4bfb5fe01a94929adb.zip |
drm/nouveau: fix display takedown order to match reverse init order
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_state.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index 50507e7e3f58..27d2a816d2c6 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c @@ -720,11 +720,16 @@ static void nouveau_card_takedown(struct drm_device *dev) struct nouveau_engine *engine = &dev_priv->engine; int e; + drm_kms_helper_poll_fini(dev); + nouveau_fbcon_fini(dev); + if (dev_priv->channel) { - nouveau_fence_fini(dev); nouveau_channel_put_unlocked(&dev_priv->channel); + nouveau_fence_fini(dev); } + engine->display.destroy(dev); + if (!dev_priv->noaccel) { engine->fifo.takedown(dev); for (e = NVOBJ_ENGINE_NR - 1; e >= 0; e--) { @@ -1063,11 +1068,7 @@ void nouveau_lastclose(struct drm_device *dev) int nouveau_unload(struct drm_device *dev) { struct drm_nouveau_private *dev_priv = dev->dev_private; - struct nouveau_engine *engine = &dev_priv->engine; - drm_kms_helper_poll_fini(dev); - nouveau_fbcon_fini(dev); - engine->display.destroy(dev); nouveau_card_takedown(dev); iounmap(dev_priv->mmio); |