Skip to content

Commit

Permalink
drm/nouveau/pm: init only after display subsystem has been created
Browse files Browse the repository at this point in the history
This patch fixes an oops cause by pm_trigger accessing the (uninitialised)
crtc list.

Reported-by: Roy Spliet <[email protected]>
Signed-off-by: Ben Skeggs <[email protected]>
  • Loading branch information
Ben Skeggs committed Mar 13, 2012
1 parent 950c44b commit 7d3a766
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions drivers/gpu/drm/nouveau/nouveau_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,8 +632,6 @@ nouveau_card_init(struct drm_device *dev)
if (ret)
goto out_ttmvram;

nouveau_pm_init(dev);

if (!dev_priv->noaccel) {
switch (dev_priv->card_type) {
case NV_04:
Expand Down Expand Up @@ -738,11 +736,12 @@ nouveau_card_init(struct drm_device *dev)
goto out_irq;

nouveau_backlight_init(dev);
nouveau_pm_init(dev);

if (dev_priv->eng[NVOBJ_ENGINE_GR]) {
ret = nouveau_fence_init(dev);
if (ret)
goto out_disp;
goto out_pm;

ret = nouveau_channel_alloc(dev, &dev_priv->channel, NULL,
NvDmaFB, NvDmaTT);
Expand All @@ -766,7 +765,8 @@ nouveau_card_init(struct drm_device *dev)
nouveau_channel_put_unlocked(&dev_priv->channel);
out_fence:
nouveau_fence_fini(dev);
out_disp:
out_pm:
nouveau_pm_fini(dev);
nouveau_backlight_exit(dev);
nouveau_display_destroy(dev);
out_irq:
Expand All @@ -783,7 +783,6 @@ nouveau_card_init(struct drm_device *dev)
dev_priv->eng[e]->destroy(dev,e );
}
}
nouveau_pm_fini(dev);
nouveau_mem_gart_fini(dev);
out_ttmvram:
nouveau_mem_vram_fini(dev);
Expand Down Expand Up @@ -826,6 +825,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
nouveau_fence_fini(dev);
}

nouveau_pm_fini(dev);
nouveau_backlight_exit(dev);
nouveau_display_destroy(dev);

Expand Down Expand Up @@ -854,8 +854,6 @@ static void nouveau_card_takedown(struct drm_device *dev)
engine->instmem.takedown(dev);
nouveau_gpuobj_takedown(dev);

nouveau_pm_fini(dev);

nouveau_gpio_destroy(dev);
engine->vram.takedown(dev);
engine->fb.takedown(dev);
Expand Down

0 comments on commit 7d3a766

Please sign in to comment.