Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763888AbYCSXwd (ORCPT ); Wed, 19 Mar 2008 19:52:33 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S940852AbYCSWXA (ORCPT ); Wed, 19 Mar 2008 18:23:00 -0400 Received: from smtp110.sbc.mail.mud.yahoo.com ([68.142.198.209]:45464 "HELO smtp110.sbc.mail.mud.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S933001AbYCSWW6 (ORCPT ); Wed, 19 Mar 2008 18:22:58 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=pacbell.net; h=Received:X-YMail-OSG:X-Yahoo-Newman-Property:From:To:Subject:Date:User-Agent:Cc:References:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-Disposition:Message-Id; b=AhV1xBph/ufC/PlxRu4mQqhNgWdCJr/SFnghdlAMgpSPRcBhWgut0LzNUwej6cpqSfeB49B7iWXyUvPdvi1b+64uZbfJ+OHibGtvRe+1ZPkL9cylN6+HL9fm7mDH+4i3AXiYlc6WMItLZ3qskHt+gsNNyrPAdTT0lbXKU3X6mXU= ; X-YMail-OSG: wIIaJaMVM1lc_8C7nKLsRe0CjZK1YrJkSjRuHCIrN7Niqh9NxJ9UpHPcEu_54ARpetLACRnerW.JvUTYuEvlBHlBO2V5aAUTJ5hQdtYGgrP0av.9mYE- X-Yahoo-Newman-Property: ymail-3 From: David Brownell To: linux-pm@lists.linux-foundation.org Subject: Re: [linux-pm] [PATCH 2/3] PM: Make wakeup flags available whenever CONFIG_PM is set (ver 2) Date: Wed, 19 Mar 2008 15:22:54 -0700 User-Agent: KMail/1.9.6 Cc: "Rafael J. Wysocki" , Greg KH , Andrew Morton , Kernel development list References: <200803190315.m2J3FXnK029022@imap1.linux-foundation.org> <200803192233.55313.rjw@sisk.pl> <200803192237.43123.rjw@sisk.pl> In-Reply-To: <200803192237.43123.rjw@sisk.pl> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200803191522.54856.david-b@pacbell.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4781 Lines: 145 On Wednesday 19 March 2008, Rafael J. Wysocki wrote: > From: Alan Stern > > The various wakeup flags and their accessor macros in struct > dev_pm_info should be available whenever CONFIG_PM is enabled, not > just when CONFIG_PM_SLEEP is on. Otherwise remote wakeup won't always > be configurable for runtime power management. This patch (as1056b) > fixes the oversight. More accurately, fixes the "regression" ... as noted sometime last summer, after 296699de6bdc717189a331ab6bbe90e05c94db06 introduced CONFIG_SUSPEND. But that didn't make the regression list for that kernel, ergo the delay in fixing it. - Dave > [rjw: rebased] > > Signed-off-by: Alan Stern > Signed-off-by: Rafael J. Wysocki > --- > drivers/base/power/main.c | 2 -- > drivers/base/power/sysfs.c | 2 ++ > include/linux/pm.h | 36 +++++++++++++++++++++--------------- > 3 files changed, 23 insertions(+), 17 deletions(-) > > Index: linux-2.6/include/linux/pm.h > =================================================================== > --- linux-2.6.orig/include/linux/pm.h > +++ linux-2.6/include/linux/pm.h > @@ -183,9 +183,9 @@ typedef struct pm_message { > struct dev_pm_info { > pm_message_t power_state; > unsigned can_wakeup:1; > + unsigned should_wakeup:1; > bool sleeping:1; /* Owned by the PM core */ > #ifdef CONFIG_PM_SLEEP > - unsigned should_wakeup:1; > struct list_head entry; > #endif > }; > @@ -198,11 +198,6 @@ extern void device_resume(void); > extern int device_suspend(pm_message_t state); > extern int device_prepare_suspend(pm_message_t state); > > -#define device_set_wakeup_enable(dev,val) \ > - ((dev)->power.should_wakeup = !!(val)) > -#define device_may_wakeup(dev) \ > - (device_can_wakeup(dev) && (dev)->power.should_wakeup) > - > extern void __suspend_report_result(const char *function, void *fn, int ret); > > #define suspend_report_result(fn, ret) \ > @@ -210,6 +205,24 @@ extern void __suspend_report_result(cons > __suspend_report_result(__FUNCTION__, fn, ret); \ > } while (0) > > +#else /* !CONFIG_PM_SLEEP */ > + > +static inline int device_suspend(pm_message_t state) > +{ > + return 0; > +} > + > +#define suspend_report_result(fn, ret) do { } while (0) > + > +#endif /* !CONFIG_PM_SLEEP */ > + > +#ifdef CONFIG_PM > + > +#define device_set_wakeup_enable(dev,val) \ > + ((dev)->power.should_wakeup = !!(val)) > +#define device_may_wakeup(dev) \ > + (device_can_wakeup(dev) && (dev)->power.should_wakeup) > + > /* > * Platform hook to activate device wakeup capability, if that's not already > * handled by enable_irq_wake() etc. > @@ -224,24 +237,17 @@ static inline int call_platform_enable_w > return 0; > } > > -#else /* !CONFIG_PM_SLEEP */ > - > -static inline int device_suspend(pm_message_t state) > -{ > - return 0; > -} > +#else /* !CONFIG_PM */ > > #define device_set_wakeup_enable(dev,val) do{}while(0) > #define device_may_wakeup(dev) (0) > > -#define suspend_report_result(fn, ret) do { } while (0) > - > static inline int call_platform_enable_wakeup(struct device *dev, int is_on) > { > return 0; > } > > -#endif /* !CONFIG_PM_SLEEP */ > +#endif /* !CONFIG_PM */ > > /* changes to device_may_wakeup take effect on the next pm state change. > * by default, devices should wakeup if they can. > Index: linux-2.6/drivers/base/power/main.c > =================================================================== > --- linux-2.6.orig/drivers/base/power/main.c > +++ linux-2.6/drivers/base/power/main.c > @@ -57,8 +57,6 @@ static DEFINE_MUTEX(dpm_list_mtx); > /* 'true' if all devices have been suspended, protected by dpm_list_mtx */ > static bool all_sleeping; > > -int (*platform_enable_wakeup)(struct device *dev, int is_on); > - > /** > * device_pm_add - add a device to the list of active devices > * @dev: Device to be added to the list > Index: linux-2.6/drivers/base/power/sysfs.c > =================================================================== > --- linux-2.6.orig/drivers/base/power/sysfs.c > +++ linux-2.6/drivers/base/power/sysfs.c > @@ -6,6 +6,8 @@ > #include > #include "power.h" > > +int (*platform_enable_wakeup)(struct device *dev, int is_on); > + > > /* > * wakeup - Report/change current wakeup option for device > > _______________________________________________ > linux-pm mailing list > linux-pm@lists.linux-foundation.org > https://lists.linux-foundation.org/mailman/listinfo/linux-pm > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/