From d63078f57f4f3876c6a262de2109666ab5e88e74 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Thu, 14 Jul 2011 20:59:20 +0200 Subject: [PATCH] --- yaml --- r: 256951 b: refs/heads/master c: d28054020f97c7c9f15327a53945f0f40ffc5d7a h: refs/heads/master i: 256949: a2b615b84cdf8afd9a986ab44094023ab16e8eab 256947: 694711b81f5b3f61b490bdd0d89c51556007461c 256943: ed319dbd63d35d3e193bf96ae931a10e085c0424 v: v3 --- [refs] | 2 +- trunk/drivers/base/power/domain.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 82e5ff36baff..ec248194fdcc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0bc5b2debb832191a42baea7ff59d2ca6ce9f7d5 +refs/heads/master: d28054020f97c7c9f15327a53945f0f40ffc5d7a diff --git a/trunk/drivers/base/power/domain.c b/trunk/drivers/base/power/domain.c index 00ed4f32a4de..be8714aa9dd6 100644 --- a/trunk/drivers/base/power/domain.c +++ b/trunk/drivers/base/power/domain.c @@ -312,8 +312,16 @@ static int pm_genpd_poweroff(struct generic_pm_domain *genpd) } } - if (genpd->power_off) - genpd->power_off(genpd); + if (genpd->power_off) { + ret = genpd->power_off(genpd); + if (ret == -EBUSY) { + genpd_set_active(genpd); + if (parent) + genpd_release_lock(parent); + + goto out; + } + } genpd->status = GPD_STATE_POWER_OFF;