Roy Spliet
2012-Jan-30 09:56 UTC
[Nouveau] [PATCH] drm/nouveau/pm: Fix kernel oops when setting perflvl at boot-time
CRTC needs to be initialised before nouveau_pm_trigger() is called, otherwise a NULLptr deref occurs Signed-off-by: Roy Spliet <r.spliet at student.tudelft.nl> --- drivers/gpu/drm/nouveau/nouveau_pm.c | 3 +++ drivers/gpu/drm/nouveau/nouveau_state.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_pm.c b/drivers/gpu/drm/nouveau/nouveau_pm.c index 2418eea..ac7df10 100644 --- a/drivers/gpu/drm/nouveau/nouveau_pm.c +++ b/drivers/gpu/drm/nouveau/nouveau_pm.c @@ -169,6 +169,9 @@ error: return ret; } +/** + * @pre CRTCs must be initialised + */ void nouveau_pm_trigger(struct drm_device *dev) { diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c index cdaf981..54e83a7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_state.c +++ b/drivers/gpu/drm/nouveau/nouveau_state.c @@ -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: @@ -737,6 +735,8 @@ nouveau_card_init(struct drm_device *dev) if (ret) goto out_irq; + nouveau_pm_init(dev); + nouveau_backlight_init(dev); if (dev_priv->eng[NVOBJ_ENGINE_GR]) { -- 1.7.7.6