From b0103747094b62231fc951dfaca4897f67670874 Mon Sep 17 00:00:00 2001 From: Martin Peres Date: Thu, 3 Nov 2011 00:03:06 +0100 Subject: [PATCH] drm/nouveau/pm: improve the reclocking logs' readability Signed-off-by: Martin Peres Signed-off-by: Ben Skeggs --- drivers/gpu/drm/nouveau/nouveau_pm.c | 30 +++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_pm.c b/drivers/gpu/drm/nouveau/nouveau_pm.c index 5ee5ca6166aa..08c563dfa28e 100644 --- a/drivers/gpu/drm/nouveau/nouveau_pm.c +++ b/drivers/gpu/drm/nouveau/nouveau_pm.c @@ -147,9 +147,13 @@ nouveau_pm_perflvl_set(struct drm_device *dev, struct nouveau_pm_level *perflvl) return ret; state = pm->clocks_pre(dev, perflvl); - if (IS_ERR(state)) - return PTR_ERR(state); - pm->clocks_set(dev, state); + if (IS_ERR(state)) { + ret = PTR_ERR(state); + goto error; + } + ret = pm->clocks_set(dev, state); + if (ret) + goto error; ret = nouveau_pm_perflvl_aux(dev, perflvl, perflvl, pm->cur); if (ret) @@ -157,6 +161,11 @@ nouveau_pm_perflvl_set(struct drm_device *dev, struct nouveau_pm_level *perflvl) pm->cur = perflvl; return 0; + +error: + /* restore the fan speed and voltage before leaving */ + nouveau_pm_perflvl_aux(dev, perflvl, perflvl, pm->cur); + return ret; } static int @@ -165,6 +174,8 @@ nouveau_pm_profile_set(struct drm_device *dev, const char *profile) struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_pm_engine *pm = &dev_priv->engine.pm; struct nouveau_pm_level *perflvl = NULL; + u64 start_time; + int ret = 0; long pl; /* safety precaution, for now */ @@ -189,8 +200,17 @@ nouveau_pm_profile_set(struct drm_device *dev, const char *profile) return -EINVAL; } - NV_INFO(dev, "setting performance level: %s\n", profile); - return nouveau_pm_perflvl_set(dev, perflvl); + NV_INFO(dev, "setting performance level: %s", profile); + start_time = nv04_timer_read(dev); + ret = nouveau_pm_perflvl_set(dev, perflvl); + if (!ret) { + NV_INFO(dev, "> reclocking took %lluns\n\n", + (nv04_timer_read(dev) - start_time)); + } else { + NV_INFO(dev, "> reclocking failed\n\n"); + } + + return ret; } static int -- 2.30.2