linux/drivers/cpufreq
Quentin Perret 531b5c9f5c sched/topology: Make Energy Aware Scheduling depend on schedutil
Energy Aware Scheduling (EAS) is designed with the assumption that
frequencies of CPUs follow their utilization value. When using a CPUFreq
governor other than schedutil, the chances of this assumption being true
are small, if any. When schedutil is being used, EAS' predictions are at
least consistent with the frequency requests. Although those requests
have no guarantees to be honored by the hardware, they should at least
guide DVFS in the right direction and provide some hope in regards to the
EAS model being accurate.

To make sure EAS is only used in a sane configuration, create a strong
dependency on schedutil being used. Since having sugov compiled-in does
not provide that guarantee, make CPUFreq call a scheduler function on
governor changes hence letting it rebuild the scheduling domains, check
the governors of the online CPUs, and enable/disable EAS accordingly.

Signed-off-by: Quentin Perret <quentin.perret@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: adharmap@codeaurora.org
Cc: chris.redpath@arm.com
Cc: currojerez@riseup.net
Cc: dietmar.eggemann@arm.com
Cc: edubezval@gmail.com
Cc: gregkh@linuxfoundation.org
Cc: javi.merino@kernel.org
Cc: joel@joelfernandes.org
Cc: juri.lelli@redhat.com
Cc: morten.rasmussen@arm.com
Cc: patrick.bellasi@arm.com
Cc: pkondeti@codeaurora.org
Cc: skannan@codeaurora.org
Cc: smuckle@google.com
Cc: srinivas.pandruvada@linux.intel.com
Cc: thara.gopinath@linaro.org
Cc: tkjos@google.com
Cc: valentin.schneider@arm.com
Cc: vincent.guittot@linaro.org
Cc: viresh.kumar@linaro.org
Link: https://lkml.kernel.org/r/20181203095628.11858-9-quentin.perret@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2018-12-11 15:17:00 +01:00
..
acpi-cpufreq.c cpufreq: Add Hygon Dhyana support 2018-09-27 18:29:00 +02:00
amd_freq_sensitivity.c cpufreq: Add Hygon Dhyana support 2018-09-27 18:29:00 +02:00
arm_big_little.c
arm_big_little.h
armada-37xx-cpufreq.c cpufreq: armada-37xx: Add AVS support 2018-07-18 10:10:25 +02:00
bmips-cpufreq.c
brcmstb-avs-cpufreq.c
cppc_cpufreq.c cpufreq / CPPC: Mark acpi_ids as used 2018-10-03 13:36:27 +02:00
cpufreq-dt-platdev.c cpufreq: dt-platdev: allow RK3399 to have separate tunables per cluster 2018-10-08 08:55:44 +02:00
cpufreq-dt.c cpufreq: dt: Try freeing static OPPs only if we have added them 2018-10-04 09:11:38 +05:30
cpufreq-dt.h
cpufreq-nforce2.c
cpufreq.c sched/topology: Make Energy Aware Scheduling depend on schedutil 2018-12-11 15:17:00 +01:00
cpufreq_conservative.c cpufreq: conservative: Take limits changes into account properly 2018-10-16 12:34:45 +02:00
cpufreq_governor.c cpufreq: governor: Avoid accessing invalid governor_data 2018-08-16 23:03:29 +02:00
cpufreq_governor.h
cpufreq_governor_attr_set.c
cpufreq_ondemand.c
cpufreq_ondemand.h
cpufreq_performance.c
cpufreq_powersave.c
cpufreq_stats.c
cpufreq_userspace.c
davinci-cpufreq.c
e_powersaver.c
elanfreq.c
freq_table.c
gx-suspmod.c
highbank-cpufreq.c
ia64-acpi-cpufreq.c
imx6q-cpufreq.c cpufreq: imx6q: add return value check for voltage scale 2018-11-07 13:31:07 +01:00
intel_pstate.c cpufreq: intel_pstate: Fix compilation for !CONFIG_ACPI 2018-10-25 18:37:06 +02:00
Kconfig
Kconfig.arm cpufreq: remove unused arm_big_little_dt driver 2018-10-25 18:39:02 +02:00
Kconfig.powerpc
Kconfig.x86
kirkwood-cpufreq.c
longhaul.c
longhaul.h
longrun.c
loongson1-cpufreq.c
loongson2_cpufreq.c
Makefile cpufreq: remove unused arm_big_little_dt driver 2018-10-25 18:39:02 +02:00
maple-cpufreq.c
mediatek-cpufreq.c
mvebu-cpufreq.c cpufreq: mvebu: Remove OPPs using dev_pm_opp_remove() 2018-09-19 14:56:44 -07:00
omap-cpufreq.c
p4-clockmod.c
pasemi-cpufreq.c
pcc-cpufreq.c Merge back cpufreq material for 4.19. 2018-07-25 13:28:01 +02:00
pmac32-cpufreq.c
pmac64-cpufreq.c
powernow-k6.c
powernow-k7.c
powernow-k7.h
powernow-k8.c
powernow-k8.h
powernv-cpufreq.c cpufreq: powernv: Remove global pstate ramp-down timer in POWER9 2018-07-09 18:06:02 +10:00
ppc_cbe_cpufreq.c
ppc_cbe_cpufreq.h
ppc_cbe_cpufreq_pervasive.c
ppc_cbe_cpufreq_pmi.c
pxa2xx-cpufreq.c
pxa3xx-cpufreq.c
qcom-cpufreq-kryo.c cpufreq: qcom-kryo: Fix section annotations 2018-09-29 15:01:10 +02:00
qoriq-cpufreq.c
s3c24xx-cpufreq-debugfs.c
s3c24xx-cpufreq.c
s3c64xx-cpufreq.c
s3c2410-cpufreq.c
s3c2412-cpufreq.c
s3c2416-cpufreq.c
s3c2440-cpufreq.c
s5pv210-cpufreq.c cpufreq: Convert to using %pOFn instead of device_node.name 2018-09-10 12:20:28 +02:00
sa1100-cpufreq.c
sa1110-cpufreq.c
sc520_freq.c
scmi-cpufreq.c
scpi-cpufreq.c
sfi-cpufreq.c
sh-cpufreq.c
sparc-us2e-cpufreq.c
sparc-us3-cpufreq.c
spear-cpufreq.c
speedstep-centrino.c
speedstep-ich.c
speedstep-lib.c
speedstep-lib.h
speedstep-smi.c
sti-cpufreq.c
tango-cpufreq.c
tegra20-cpufreq.c
tegra124-cpufreq.c
tegra186-cpufreq.c cpufreq: tegra186: don't pass GFP_DMA32 to dma_alloc_coherent() 2018-10-17 09:25:38 +02:00
ti-cpufreq.c cpufreq: ti-cpufreq: Only register platform_device when supported 2018-11-19 11:26:06 +01:00
unicore2-cpufreq.c
vexpress-spc-cpufreq.c