android_kernel_motorola_sm6375/drivers/cpuidle
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Rafael J. Wysocki cab09f3d2d cpuidle: teo: Allow tick to be stopped if PM QoS is used
The TEO goveror prevents the scheduler tick from being stopped (unless
stopped already) if there is a PM QoS latency constraint for the given
CPU and the target residency of the deepest idle state matching that
constraint is below the tick boundary.

However, that is problematic if CPUs with PM QoS latency constraints
are idle for long times, because it effectively causes the tick to
run on them all the time which is wasteful.  [It is also confusing
and questionable if they are full dynticks CPUs.]

To address that issue, modify the TEO governor to carry out the
entire search for the most suitable idle state (from the target
residency perspective) even if a latency constraint is present,
to allow it to determine the expected idle duration in all cases.

Also, when using the last several measured idle duration values
to refine the idle state selection, make it compare those values
with the current expected idle duration value (instead of
comparing them with the target residency of the idle state
selected so far) which should prevent the tick from being
retained when it makes sense to stop it sometimes (especially
in the presence of PM QoS latency constraints).

Fixes: b26bf6ab71 ("cpuidle: New timer events oriented governor for tickless systems")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2019-08-05 11:02:44 +02:00
..
governors cpuidle: teo: Allow tick to be stopped if PM QoS is used 2019-08-05 11:02:44 +02:00
coupled.c
cpuidle-arm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-at91.c
cpuidle-big_little.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-calxeda.c
cpuidle-clps711x.c
cpuidle-cps.c
cpuidle-exynos.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-haltpoll.c cpuidle-haltpoll: disable host side polling when kvm virtualized 2019-07-30 17:27:37 +02:00
cpuidle-kirkwood.c
cpuidle-mvebu-v7.c
cpuidle-powernv.c
cpuidle-pseries.c
cpuidle-ux500.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpuidle-zynq.c
cpuidle.c cpuidle: add poll_limit_ns to cpuidle_device structure 2019-07-30 17:27:37 +02:00
cpuidle.h
driver.c
dt_idle_states.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dt_idle_states.h
governor.c PM / QOS: Rename __dev_pm_qos_read_value() and dev_pm_qos_raw_read_value() 2019-07-04 10:40:54 +02:00
Kconfig cpuidle: add haltpoll governor 2019-07-30 17:27:37 +02:00
Kconfig.arm
Kconfig.mips
Kconfig.powerpc
Makefile add cpuidle-haltpoll driver 2019-07-30 17:27:37 +02:00
poll_state.c cpuidle: add poll_limit_ns to cpuidle_device structure 2019-07-30 17:27:37 +02:00
sysfs.c cpuidle: add poll_limit_ns to cpuidle_device structure 2019-07-30 17:27:37 +02:00