On Sat, 5 Jun 2010, Rafael J. Wysocki wrote: > I kind of agree here, so I'd like to focus a bit on that. > > Here's my idea in the very general terms: > > (1) Use the cgroup freezer to "suspend" the "untrusted" apps (ie. the ones > that don't use suspend blockers aka wakelocks in the Android world) at the > point Android would normally start opportunistic suspend. There is an additional benefit to this approach: In the current android world a background task (e.g. download initiated before the screensaver kicked in) prevents the suspend, but that also means that the crapplications can still suck power completely unconfined. With the cgroup freezer you can "suspend" them right away and just keep the trusted background task(s) alive which allows us to go into deeper idle states instead of letting the crapplications run unconfined until the download finished and the suspend blocker goes away. > (2) Allow the cpuidle framework to put CPUs into low-power states after the > "trusted" apps (ie. the ones that use suspend blockers in the Android > world) have gone idle. > > (3) Teach the cpuidle framework to schedule runtime suspend of I/O devices > before idling the last CPU (*). > > (4) Design a mechanism to resume the I/O devices suspended in (3) so that > they are not powered up unnecessarily (that's going to be difficult as far > as I can see). > > This way, in principle, we should be able to save (at least almost) as much > energy as the opportunistic suspend currently used by Android, provided that > things will be capable of staying idle for extended periods of time. > > (*) That may require per-device PM QoS requirements to be used, in which case > devices may even be suspended earlier if the PM QoS requirements of all > of their users are met. > > I wonder what people think. Is this realistic and if so, would it be difficult > to implement? I think it's realistic and not overly complicated to implement. Thanks, tglx _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm