Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d3a766b authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/pm: init only after display subsystem has been created



This patch fixes an oops cause by pm_trigger accessing the (uninitialised)
crtc list.

Reported-by: default avatarRoy Spliet <r.spliet@student.tudelft.nl>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 950c44b6
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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:
@@ -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);
@@ -766,7 +765,8 @@ out_chan:
	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:
@@ -783,7 +783,6 @@ out_engine:
			dev_priv->eng[e]->destroy(dev,e );
		}
	}
	nouveau_pm_fini(dev);
	nouveau_mem_gart_fini(dev);
out_ttmvram:
	nouveau_mem_vram_fini(dev);
@@ -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);

@@ -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);