2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-26 06:04:14 +08:00
linux-next/Documentation/cpu-freq
Mattia Dongili 9c9a43ed27 [CPUFREQ] return error when failing to set minfreq
I just stumbled on this bug/feature, this is how to reproduce it:

# echo 450000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
# echo 450000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# cpufreq-info -p
450000 450000 powersave
# echo 1800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq ; echo $?
0
# cpufreq-info -p
450000 450000 powersave

Here it is. The kernel refuses to set a min_freq higher than the
max_freq but it allows a max_freq lower than min_freq (lowering min_freq
also).

This behaviour is pretty straightforward (but undocumented) and it
doesn't return an error altough failing to accomplish the requested
action (set min_freq).
The problem (IMO) is basically that userspace is not allowed to set a
full policy atomically while the kernel always does that thus it must
enforce an ordering on operations.

The attached patch returns -EINVAL if trying to increase frequencies
starting from scaling_min_freq and documents the correct ordering of writes.

Signed-off-by: Mattia Dongili <malattia@linux.it>
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
Signed-off-by: Dave Jones <davej@redhat.com>

--
2006-07-31 18:37:05 -04:00
..
amd-powernow.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpu-drivers.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpufreq-nforce2.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpufreq-stats.txt [PATCH] Spelling fixes for Documentation/ 2005-09-10 10:06:28 -07:00
governors.txt [PATCH] cpufreq: documentation for 'ondemand' and 'conservative' 2005-12-01 01:23:23 -08:00
index.txt [CPUFREQ] Update LART site URL 2006-04-03 07:25:54 -05:00
user-guide.txt [CPUFREQ] return error when failing to set minfreq 2006-07-31 18:37:05 -04:00