From be3eebe284cadf6641def3e7481972cc8296ec6f Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Tue, 12 Jul 2011 00:39:21 +0200 Subject: [PATCH] --- yaml --- r: 256942 b: refs/heads/master c: b6c10c84665912985d0bf9b6ae8ce19fc4298d9f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/base/power/domain.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2ba4efc2cc6b..4cc731d875ed 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f00ff78278fd5d6ac110b6903ee042af2d6af91 +refs/heads/master: b6c10c84665912985d0bf9b6ae8ce19fc4298d9f diff --git a/trunk/drivers/base/power/domain.c b/trunk/drivers/base/power/domain.c index 0e7e91baec1d..9a20d9302fcd 100644 --- a/trunk/drivers/base/power/domain.c +++ b/trunk/drivers/base/power/domain.c @@ -367,6 +367,7 @@ static void pm_genpd_sync_poweroff(struct generic_pm_domain *genpd) static int pm_genpd_prepare(struct device *dev) { struct generic_pm_domain *genpd; + int ret; dev_dbg(dev, "%s()\n", __func__); @@ -400,7 +401,16 @@ static int pm_genpd_prepare(struct device *dev) mutex_unlock(&genpd->lock); - return pm_generic_prepare(dev); + ret = pm_generic_prepare(dev); + if (ret) { + mutex_lock(&genpd->lock); + + if (--genpd->prepared_count == 0) + genpd->suspend_power_off = false; + + mutex_unlock(&genpd->lock); + } + return ret; } /**