Rafael J. Wysocki
3810631332
PM / sleep: Re-implement suspend-to-idle handling
...
In preparation for adding support for quiescing timers in the final
stage of suspend-to-idle transitions, rework the freeze_enter()
function making the system wait on a wakeup event, the freeze_wake()
function terminating the suspend-to-idle loop and the mechanism by
which deep idle states are entered during suspend-to-idle.
First of all, introduce a simple state machine for suspend-to-idle
and make the code in question use it.
Second, prevent freeze_enter() from losing wakeup events due to race
conditions and ensure that the number of online CPUs won't change
while it is being executed. In addition to that, make it force
all of the CPUs re-enter the idle loop in case they are in idle
states already (so they can enter deeper idle states if possible).
Next, drop cpuidle_use_deepest_state() and replace use_deepest_state
checks in cpuidle_select() and cpuidle_reflect() with a single
suspend-to-idle state check in cpuidle_idle_call().
Finally, introduce cpuidle_enter_freeze() that will simply find the
deepest idle state available to the given CPU and enter it using
cpuidle_enter().
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
2015-02-13 23:49:36 +01:00
..
bpf
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-01-27 13:55:36 -08:00
configs
debug
Surprising number of fixes this merge window :(
2015-01-23 06:40:36 +12:00
events
powerpc updates for 3.20
2015-02-11 18:15:38 -08:00
gcov
gcov: enable GCOV_PROFILE_ALL from ARCH Kconfigs
2014-12-13 12:42:51 -08:00
irq
genirq: Prevent proc race against freeing of irq descriptors
2014-12-13 13:33:07 +01:00
livepatch
livepatch: add missing newline to error message
2015-02-06 21:28:35 +01:00
locking
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
2015-02-11 17:42:32 -08:00
power
PM / sleep: Re-implement suspend-to-idle handling
2015-02-13 23:49:36 +01:00
printk
printk: correct timeout comment, neaten MODULE_PARM_DESC
2015-02-12 18:54:13 -08:00
rcu
Merge branches 'doc.2015.01.07a', 'fixes.2015.01.15a', 'preempt.2015.01.06a', 'srcu.2015.01.06a', 'stall.2015.01.16a' and 'torture.2015.01.11a' into HEAD
2015-01-15 23:34:34 -08:00
sched
PM / sleep: Re-implement suspend-to-idle handling
2015-02-13 23:49:36 +01:00
time
all arches, signal: move restart_block to struct task_struct
2015-02-12 18:54:12 -08:00
trace
The updates included in this pull request for ftrace are:
2015-02-12 08:37:41 -08:00
.gitignore
acct.c
acct: eliminate compile warning
2014-10-09 22:26:04 -04:00
async.c
kernel/async.c: switch to pr_foo()
2014-10-09 22:26:04 -04:00
audit.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-12-30 10:45:47 -08:00
audit.h
audit: reduce scope of audit_log_fcaps
2014-09-23 16:37:51 -04:00
audit_tree.c
fsnotify: unify inode and mount marks handling
2014-12-13 12:42:53 -08:00
audit_watch.c
audit: invalid op= values for rules
2014-09-23 16:37:53 -04:00
auditfilter.c
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2015-02-11 20:07:47 -08:00
auditsc.c
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2014-12-31 14:52:18 -08:00
backtracetest.c
bounds.c
capability.c
cgroup.c
cgroup: release css->id after css_free
2015-02-12 18:54:09 -08:00
cgroup_freezer.c
compat.c
all arches, signal: move restart_block to struct task_struct
2015-02-12 18:54:12 -08:00
configs.c
context_tracking.c
sched: stop the unbound recursion in preempt_schedule_context()
2014-10-28 10:46:05 +01:00
cpu.c
hotplugcpu: Avoid deadlocks by waking active_writer
2015-01-06 11:01:14 -08:00
cpu_pm.c
cpuset.c
kernel/cpuset.c: Mark cpuset_init_current_mems_allowed as __init
2015-02-12 18:54:11 -08:00
crash_dump.c
cred.c
delayacct.c
dma.c
elfcore.c
exec_domain.c
exit.c
oom, PM: make OOM detection in the freezer path raceless
2015-02-11 17:06:03 -08:00
extable.c
ftrace/x86/extable: Add is_ftrace_trampoline() function
2014-11-19 15:25:26 -05:00
fork.c
mm: do not use mm->nr_pmds on !MMU configurations
2015-02-12 18:54:10 -08:00
freezer.c
freezer: remove obsolete comments in __thaw_task()
2014-10-21 23:44:20 +02:00
futex.c
all arches, signal: move restart_block to struct task_struct
2015-02-12 18:54:12 -08:00
futex_compat.c
groups.c
userns: Don't allow setgroups until a gid mapping has been setablished
2014-12-09 16:58:40 -06:00
hung_task.c
irq_work.c
percpu: Convert remaining __get_cpu_var uses in 3.18-rcX
2014-10-29 11:18:18 -04:00
jump_label.c
kallsyms.c
kernel/kallsyms.c: use __seq_open_private()
2014-10-14 02:18:16 +02:00
kcmp.c
kcmp: fix standard comparison bug
2014-09-10 15:42:12 -07:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
locking/mcs: Better differentiate between MCS variants
2015-01-14 15:07:32 +01:00
Kconfig.preempt
kexec.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2015-02-10 18:57:15 -08:00
kmod.c
usermodehelper: kill the kmod_thread_locker logic
2014-12-10 17:41:17 -08:00
kprobes.c
Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
2015-02-12 08:51:56 -08:00
ksysfs.c
kthread.c
kernel/kthread.c: partial revert of 81c98869fa ("kthread: ensure locality of task_struct allocations")
2014-10-09 22:25:51 -04:00
latencytop.c
Makefile
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
2015-02-11 20:25:11 -08:00
module-internal.h
module.c
module: Replace over-engineered nested sleep
2015-02-11 15:02:04 +10:30
module_signing.c
notifier.c
rcu: Make SRCU optional by using CONFIG_SRCU
2015-01-06 11:04:29 -08:00
nsproxy.c
bury struct proc_ns in fs/proc
2014-12-04 14:34:54 -05:00
padata.c
panic.c
livepatch: kernel: add TAINT_LIVEPATCH
2014-12-22 15:40:48 +01:00
params.c
param: fix uninitialized read with CONFIG_DEBUG_LOCK_ALLOC
2015-01-20 11:38:31 +10:30
pid.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-12-16 15:53:03 -08:00
pid_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-12-16 15:53:03 -08:00
profile.c
ptrace.c
exit: ptrace: shift "reap dead" code from exit_ptrace() to forget_original_parent()
2014-12-10 17:41:10 -08:00
range.c
kernel: avoid overflow in cmp_range
2015-01-17 10:02:23 +13:00
reboot.c
kernel: add support for kernel restart handler call chain
2014-09-26 00:00:06 -07:00
relay.c
resource.c
resources: Move struct resource_list_entry from ACPI into resource core
2015-02-05 15:09:25 +01:00
seccomp.c
Merge branch 'x86-seccomp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-14 02:27:06 +02:00
signal.c
all arches, signal: move restart_block to struct task_struct
2015-02-12 18:54:12 -08:00
smp.c
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
smpboot.c
smpboot: Add missing get_online_cpus() in smpboot_register_percpu_thread()
2015-01-23 11:33:51 +01:00
smpboot.h
softirq.c
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2015-02-09 15:24:03 -08:00
stacktrace.c
stacktrace: introduce snprint_stack_trace for buffer output
2014-12-13 12:42:48 -08:00
stop_machine.c
sys.c
x86, mpx: Strictly enforce empty prctl() args
2015-01-22 21:11:06 +01:00
sys_ni.c
syscalls: implement execveat() system call
2014-12-13 12:42:51 -08:00
sysctl.c
mm, hugetlb: remove unnecessary lower bound on sysctl handlers"?
2015-02-10 14:30:34 -08:00
sysctl_binary.c
kernel: add panic_on_warn
2014-12-10 17:41:10 -08:00
system_certificates.S
system_keyring.c
task_work.c
taskstats.c
netlink: make nlmsg_end() and genlmsg_end() void
2015-01-18 01:03:45 -05:00
test_kprobes.c
torture.c
torture: Address race in module cleanup
2014-09-16 13:41:06 -07:00
tracepoint.c
tsacct.c
uid16.c
groups: Consolidate the setgroups permission checks
2014-12-05 17:19:27 -06:00
up.c
user-return-notifier.c
user.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2014-12-17 12:31:40 -08:00
user_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2014-12-17 12:31:40 -08:00
utsname.c
copy address of proc_ns_ops into ns_common
2014-12-04 14:34:47 -05:00
utsname_sysctl.c
watchdog.c
kernel/sched/clock.c: add another clock for use with the soft lockup watchdog
2015-02-12 18:54:13 -08:00
workqueue.c
workqueue: fix subtle pool management issue which can stall whole worker_pool
2015-01-16 14:21:16 -05:00
workqueue_internal.h