Select the CPU DVFS governors
You can select a governor to tune the system for power or performance while changing theCPUfreq governor (powersave/performance/schedutil). By default, the CPU frequency governor is set to performance on Qualcomm® Linux kernel.
Table: CPU DVFS variables
| Variable | Description | Path |
|---|---|---|
| scaling_governor | Set the governor to performance. | echo performance > /sys/devices/system/cpu/cpufreq/policy*/scaling_governor |
| scaling_max_freq | Set the maximum frequency of the CPU cluster. | /sys/devices/system/cpu/cpufreq/policy*/scaling_max_freq |
| scaling_min_freq | Set the minimum frequency of the CPU cluster. | /sys/devices/system/cpu/cpufreq/policy*/scaling_min_freq |
CPUfreq, see CPU frequency and voltage scaling code in the Linux(TM) kernel.
Configure cache and memory DVFS governors
The static map DVFS governors align the CPU operating frequencies with the following:- Level 3 cache (L3)
- Last level cache controller (LLCC)
- DDR RAM
drivers/cpufreq/qcom-cpufreq-hw.c file, and static mapping is present in the arch/arm64/boot/dts/qcom/sc7280.dtsi file.
For Qualcomm SoCs, see the platform-specific DTSI files to get this information.
drivers/soc/qcom/icc-bwmon.c file.
The mapping between CPU frequency and L3/DDR frequency is adjusted based on the power or performance requirements.
In DTSI, for each CPUx node, there is an operating-points-v2 = <&cpux_opp_table> entry. The cpux_opp_table holds a static mapping between CPU, L3, and DDR frequencies.
For example:
- For DDR, ‘w’ is 4 (each channel performs two transactions per cycle, with each transaction being 2 bytes).
- For L3, ‘w’ is 32 (one transaction per cycle at 32 bytes per transaction).
These values are set per channel for DDR, and the mapping relates CPU frequency to the memory controller (MC) channel bandwidth. Adjusting this map table can impact power and performance characteristics.

