Re: Question about suspending a system

David Brownell
2007-10-16T17:31:19Z

> > In conjunction with that model, the last step of entering a system
> > suspend state should involve disabling all IRQs that aren't flagged as
> > wakeup sources by enable_irq_wake().
>
> Ok, I missed that because I'm using a 2.6.17 kernel.

Yeah, that part went mainline with the genirq framework, which
ISTR merged sometime after that. But then, few non-{ARM,x86}
platforms do much with power management yet either.

> > That's shortly before the magic
> > which powers down memory and CPU, but after devices have all been told
> > to suspend themselves.
>
> Is it done in pm_ops->enter method ?

Yes, that's the last step of entering the system power state.
After IRQs are off, etc.

> > Of course, the CPU itself is often only a small part of the system's
> > power usage. More power is saved by powering devices down, or even
> > off.
>
> I'm thinking of making powering the disk off because when suspended it
> still uses more that 5W !

That would make me want to power it off too!

> > In that example of a disk drive, one way to handle that would
> > be to introduce a power domain within which the drive's controller
> > and the drive both live. If that's properly located in the driver
> > model tree, as a device node, then its suspend and resume methods
> > could poer the drive off and on (respectively).
>
> Do you have any examples that you could give ?

No example, sorry -- Linux has weak support of power/voltage domains,
unlike clock domains. Hence my suggestion of packaging it as a device
tree node, so at least the suspend() and resume() methods get called
in the right place in the system sleep/wake sequence.

Most of the systems I've worked with don't have rotating media, unless
someone sticks a MicroDrive into a CF slot.

- Dave