Re: [linux-pm] [PATCH 0/8] Suspend block api (version 6)

From: Tony Lindgren
Date: Thu May 13 2010 - 18:08:35 EST


* Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> [100513 14:56]:
> On Thu, 13 May 2010, Tony Lindgren wrote:
>
> > > > And that's why
> > > > it should be handled by runtime power management instead.
> > >
> > > Runtime PM is not capable of freezing userspace and shutting down CPUs.
> > > More or less by definition -- if it could then it wouldn't be "runtime"
> > > any more, since the processor wouldn't be running.
> >
> > Not true. We are already powering off CPUs and rebooting them for
> > at least omaps in every idle loop using cpuidle. The memory stays on.
>
> Okay, that's a valid point. But is that approach usable in general
> (i.e., on non-OMAP systems)?

Yes if your system wakes to interrupts at least. If your system does
not wake to timer events, then you'll get missed timers. So it should
work on PC too with CONFIG_NO_HZ and if RTC was used for the timer
wake event.

> How do you handle situations where the CPU is currently idle but an
> event (such as I/O completion) is expected to occur in the near future?
> You don't want to power-off and reboot then, do you?

The idle code looks at next_timer_interrupt() value, then if the
next timer event if far enough ahead, the system powers down and
wakes to the timer interrupt. It also wakes to device interrupts.

For the drivers to block hitting off-idle custom idle functions
can be used. Paul Walmsley and Kevin Hilman have some ideas on
having generic latency information available for that. So there
are similar issues to opportunistic suspend + suspend blocks
that should be sorted out in a generic way.

For the drivers to power down, some timeout value seems to work
best.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/