[GIT PULL] Updates related to suspend-to-idle for 3.20-rc1

From: Rafael J. Wysocki
Date: Mon Feb 16 2015 - 14:24:29 EST

Hi Linus,

Please pull from

git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \

to receive changes adding support for quiescing timers during suspend-to-idle
for v3.20-rc1 with top-most commit c7fb90dfbef49b03e6f3fd6a32338e59cbcf34ee

ACPI / idle: Implement ->enter_freeze callback routine

on top of commit 18320f2a6871aaf2522f793fee4a67eccf5e131a

Merge tag 'pm+acpi-3.20-rc1-2' of

This has been in the works for a few months and reached the point
when it is not useful to hold off pushing it any more.

Till now suspend-to-idle has not been able to save much more energy
than runtime PM because of timer interrupts that periodically bring
CPUs out of idle while they are waiting for a wakeup interrupt. Of
course, the timer interrupts are not wakeup ones, so the handling of
them can be deferred until a real wakeup interrupt happens, but at
the same time we don't want to mass-expire timers at that point.

The solution is to suspend the entire timekeeping when the last CPU
is entering an idle state and resume it when the first CPU goes out
of idle. That has to be done with care, though, so as to avoid
accessing suspended clocksources etc. end we need extra support
from idle drivers for that.

This series of commits adds support for quiescing timers during
suspend-to-idle and adds the requisite callbacks to intel_idle
and the ACPI cpuidle driver. It contains a fix for an issue present
today which is very very difficult to trip over (that would involve
an NMI being traced during very late suspend or very early resume
when we're running with suspended timekeeping).



Rafael J. Wysocki (6):
PM / sleep: Re-implement suspend-to-idle handling
timekeeping: Pass readout base to update_fast_timekeeper()
timekeeping: Make it safe to use the fast timekeeper while suspended
PM / sleep: Make it possible to quiesce timers during suspend-to-idle
intel_idle: Add ->enter_freeze callbacks
ACPI / idle: Implement ->enter_freeze callback routine


drivers/acpi/processor_idle.c | 48 +++++++++--
drivers/cpuidle/cpuidle.c | 94 ++++++++++++++++------
drivers/idle/intel_idle.c | 179 +++++++++++++++++++++++++++++-------------
include/linux/cpuidle.h | 13 ++-
include/linux/suspend.h | 16 ++++
include/linux/tick.h | 6 +-
kernel/power/suspend.c | 43 ++++++++--
kernel/sched/idle.c | 16 ++++
kernel/time/tick-common.c | 50 ++++++++++++
kernel/time/timekeeping.c | 48 ++++++++---
kernel/time/timekeeping.h | 2 +
11 files changed, 407 insertions(+), 108 deletions(-)
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/