From patchwork Wed Jul 13 21:55:27 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rafael Wysocki X-Patchwork-Id: 973582 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p6DLudKs025088 for ; Wed, 13 Jul 2011 21:56:39 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752166Ab1GMV4U (ORCPT ); Wed, 13 Jul 2011 17:56:20 -0400 Received: from ogre.sisk.pl ([217.79.144.158]:52451 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752051Ab1GMV4E (ORCPT ); Wed, 13 Jul 2011 17:56:04 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 2BCDA1B556C; Wed, 13 Jul 2011 23:28:32 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04246-01; Wed, 13 Jul 2011 23:28:02 +0200 (CEST) Received: from ferrari.rjw.lan (220-bem-13.acn.waw.pl [82.210.184.220]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id 412881B5575; Wed, 13 Jul 2011 23:28:02 +0200 (CEST) From: "Rafael J. Wysocki" To: Linux PM mailing list Subject: [PATCH 2/3] PM / Domains: Take .power_off() error code into account Date: Wed, 13 Jul 2011 23:55:27 +0200 User-Agent: KMail/1.13.6 (Linux/3.0.0-rc7+; KDE/4.6.0; x86_64; ; ) Cc: LKML , Paul Mundt , Magnus Damm , linux-sh@vger.kernel.org References: <201107132352.59801.rjw@sisk.pl> In-Reply-To: <201107132352.59801.rjw@sisk.pl> MIME-Version: 1.0 Message-Id: <201107132355.27355.rjw@sisk.pl> X-Virus-Scanned: amavisd-new at ogre.sisk.pl using MkS_Vir for Linux Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Wed, 13 Jul 2011 21:56:39 +0000 (UTC) From: Rafael J. Wysocki Currently pm_genpd_poweroff() discards error codes returned by the PM domain's .power_off() callback, because it's safer to always regard the domain as inaccessible to drivers after a failing .power_off(). Still, there are situations in which the low-level code may want to indicate that it doesn't want to power off the domain, so allow it to do that by returning -EBUSY from .power_off(). Signed-off-by: Rafael J. Wysocki --- drivers/base/power/domain.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: linux-2.6/drivers/base/power/domain.c =================================================================== --- linux-2.6.orig/drivers/base/power/domain.c +++ linux-2.6/drivers/base/power/domain.c @@ -312,8 +312,16 @@ static int pm_genpd_poweroff(struct gene } } - 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;