Permanently change maximum CPU frequency
Ok, the problem was at bios_limit.
To start, override any BIOS limitations by setting ignore_ppc to 1:
echo 1 > /sys/module/processor/parameters/ignore_ppc
Then, change CPU scaling_max_freq for all cores using this script [pay attention to core's numbers! In my case quad-core, core's numbers: 0, 1, 2, 3]:
for x in /sys/devices/system/cpu/cpu[0-3]/cpufreq/;do
echo 2400000 > $x/scaling_max_freq
done
Source: http://blog.patshead.com/2013/04/my-bios-is-limiting-my-cpu-clock-speed.html
Now, since you can't edit bios_limit files, you have to force kernel to ignore it.
Edit /etc/default/grub (you need to do this using root privilege) and change
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
to
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash processor.ignore_ppc=1"
then run:
sudo update-grub
and reboot.
Source: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/856233 Comment Nº 24.
Now the CPU frequencies are at 2.4GHz, as desired, while using AC power.
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 800000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 2400000 [kHz]
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq = 800000 [kHz]
/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq = 2400000 [kHz]
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq = 800000 [kHz]
/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq = 2400000 [kHz]
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = ondemand
/sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq = 800000 [kHz]
/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq = 2400000 [kHz]