cpufreq: schedutilX: Introduce initial bringup
Import from linux 4.9 android-common plus additional changes hardcode up and down rates
This commit is contained in:
parent
366405377c
commit
3f3d5aeacd
4 changed files with 1141 additions and 1 deletions
|
@ -696,6 +696,7 @@ CONFIG_CPU_FREQ_STAT=y
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||||
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
|
||||||
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTILX is not set
|
||||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||||
|
@ -704,6 +705,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||||
# CONFIG_CPU_FREQ_GOV_SCHED is not set
|
# CONFIG_CPU_FREQ_GOV_SCHED is not set
|
||||||
# CONFIG_CPU_FREQ_GOV_INTERACTIVE is not set
|
# CONFIG_CPU_FREQ_GOV_INTERACTIVE is not set
|
||||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||||
|
CONFIG_CPU_FREQ_GOV_SCHEDUTILX=y
|
||||||
CONFIG_FREQVAR_TUNE=y
|
CONFIG_FREQVAR_TUNE=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -128,6 +128,16 @@ config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
|
||||||
have a look at the help section of that governor. The fallback
|
have a look at the help section of that governor. The fallback
|
||||||
governor will be 'performance'.
|
governor will be 'performance'.
|
||||||
|
|
||||||
|
|
||||||
|
config CPU_FREQ_DEFAULT_GOV_SCHEDUTILX
|
||||||
|
bool "schedutilX"
|
||||||
|
depends on SMP
|
||||||
|
select CPU_FREQ_GOV_SCHEDUTILX
|
||||||
|
help
|
||||||
|
Use the 'schedutilX' CPUFreq governor by default. If unsure,
|
||||||
|
have a look at the help section of that governor. The fallback
|
||||||
|
governor will be 'performance'.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config CPU_FREQ_GOV_PERFORMANCE
|
config CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
@ -259,6 +269,23 @@ config CPU_FREQ_GOV_SCHEDUTIL
|
||||||
|
|
||||||
If in doubt, say N.
|
If in doubt, say N.
|
||||||
|
|
||||||
|
config CPU_FREQ_GOV_SCHEDUTILX
|
||||||
|
bool "'schedutilX' cpufreq policy governor"
|
||||||
|
depends on CPU_FREQ && SMP
|
||||||
|
select CPU_FREQ_GOV_ATTR_SET
|
||||||
|
select IRQ_WORK
|
||||||
|
help
|
||||||
|
This governor makes decisions based on the utilization data provided
|
||||||
|
by the scheduler. It sets the CPU frequency to be proportional to
|
||||||
|
the utilization/capacity ratio coming from the scheduler. If the
|
||||||
|
utilization is frequency-invariant, the new frequency is also
|
||||||
|
proportional to the maximum available frequency. If that is not the
|
||||||
|
case, it is proportional to the current frequency of the CPU. The
|
||||||
|
frequency tipping point is at utilization/capacity equal to 80% in
|
||||||
|
both cases.
|
||||||
|
|
||||||
|
If in doubt, say N.
|
||||||
|
|
||||||
config FREQVAR_TUNE
|
config FREQVAR_TUNE
|
||||||
bool "CPU frequency variant tuner"
|
bool "CPU frequency variant tuner"
|
||||||
depends on SCHED_EMS && CPU_FREQ_GOV_SCHEDUTIL
|
depends on SCHED_EMS && CPU_FREQ_GOV_SCHEDUTIL
|
||||||
|
|
|
@ -27,6 +27,6 @@ obj-$(CONFIG_SCHED_TUNE) += tune.o
|
||||||
obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o
|
obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o
|
||||||
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
|
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
|
||||||
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
|
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
|
||||||
|
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTILX) += cpufreq_schedutilX.o
|
||||||
obj-$(CONFIG_PSI) += psi.o
|
obj-$(CONFIG_PSI) += psi.o
|
||||||
obj-$(CONFIG_SCHED_EMS) += ems/
|
obj-$(CONFIG_SCHED_EMS) += ems/
|
||||||
|
|
||||||
|
|
1111
kernel/sched/cpufreq_schedutilX.c
Normal file
1111
kernel/sched/cpufreq_schedutilX.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue