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;