From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: 2.6.25-mm1: suspend-to-disk warning, resume failure Date: Fri, 18 Apr 2008 22:38:44 +0200 Message-ID: <200804182238.45512.rjw@sisk.pl> References: <200804182047.40724.rjw@sisk.pl> <200804182214.14376.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <200804182214.14376.rjw@sisk.pl> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: Andrew Morton , Greg KH Cc: linux-pm@lists.linux-foundation.org, USB list List-Id: linux-pm@vger.kernel.org On Friday, 18 of April 2008, Rafael J. Wysocki wrote: > On Friday, 18 of April 2008, Rafael J. Wysocki wrote: > > On Friday, 18 of April 2008, Alan Stern wrote: > > > On Thu, 17 Apr 2008, Andrew Morton wrote: > > > > > > > But this: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > hangs at the end of resume-from-disk. > > > > > > > > > > > > During the suspend-to-disk I saw: > > > > > > > > ipw2200: Radio Frequency Kill Switch is On: > > > > Kill switch must be turned off for wireless networking to work. > > > > PM: Device usb1 failed to (unknown PM event): error -113 > > > > PM: Device usb2 failed to (unknown PM event): error -113 > > > > PM: Device usb3 failed to (unknown PM event): error -113 > > > > PM: Device usb4 failed to (unknown PM event): error -113 > > > > > > These -113 errors can be ignored. They are fallout from the recent > > > conversion of the driver core's suspend/resume API. Matching changes > > > have not yet been added to the USB core. > > > > > > The "(unknown PM event)" strings look like a bug, though. > > > > Yes, it does. > > > > I'm trying to figure this out. > > This particular problem should be fixed by the appended patch. The following patch is also necessary to make hibernation work as documented in pm.h. Thanks, Rafael --- From: Rafael J. Wysocki Make hibernation work as documented in include/linux/pm.h . In pm.h it is documented that device_power_up() and device_resume() will be called with PMSG_RECOVER if the creation of a hibernation image fails or the restoration of memory contents from a hibernation image fails. Otherwise, it should be called either with PMSG_THAW or with PMSG_RESTORE, depending on the context. Make that happen. Signed-off-by: Rafael J. Wysocki --- kernel/power/disk.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) Index: linux-2.6/kernel/power/disk.c =================================================================== --- linux-2.6.orig/kernel/power/disk.c +++ linux-2.6/kernel/power/disk.c @@ -225,7 +225,8 @@ static int create_image(int platform_mod /* NOTE: device_power_up() is just a resume() for devices * that suspended with irqs off ... no overall powerup. */ - device_power_up(in_suspend ? PMSG_RECOVER : PMSG_RESTORE); + device_power_up(in_suspend ? + (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); Enable_irqs: local_irq_enable(); device_pm_unlock(); @@ -282,7 +283,8 @@ int hibernation_snapshot(int platform_mo Finish: platform_finish(platform_mode); Resume_devices: - device_resume(in_suspend ? PMSG_RECOVER : PMSG_RESTORE); + device_resume(in_suspend ? + (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); Resume_console: resume_console(); Close: @@ -332,7 +334,7 @@ static int resume_target_kernel(void) swsusp_free(); restore_processor_state(); touch_softlockup_watchdog(); - device_power_up(PMSG_THAW); + device_power_up(PMSG_RECOVER); Enable_irqs: local_irq_enable(); device_pm_unlock();