On Fri 2007-04-13 23:45:48, Johannes Berg wrote: > On Fri, 2007-04-13 at 23:33 +0200, Pavel Machek wrote: > > > Still, swsusp shuts down the devices: > > > > if ((error = arch_prepare_suspend())) > > return error; > > > > local_irq_disable(); > > /* At this point, device_suspend() has been called, but *not* > > * device_power_down(). We *must* device_power_down() now. > > * Otherwise, drivers for some devices (e.g. interrupt > > controllers) > > * become desynchronized with the actual state of the hardware > > * at resume time, and evil weirdness ensues. > > */ > > if ((error = device_power_down(PMSG_FREEZE))) { > > printk(KERN_ERR "Some devices failed to power down, aborting suspend\n"); > > goto Enable_irqs; > > } > > > > This local_irq_disable() is very similar to the one you are doing in > > suspend-to-RAM. According to your description, it needs to play with > > the decrementor, too. But I'd really prefer not to have pm_ops call > > here -- exactly because swsusp has nothing to do with pm_ops in > > shutdown mode. > > Right. But we don't actually care because we just power down, we don't > have to put the CPU into a proper state. Look again, this sequence is before taking system snapshot, and then we have to recover and save the snapshot, too. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm