# 配置动态电压和频率调节 (DVFS) 调节器

Qualcomm Linux 内核基线支持多种 DVFS 实现，以便根据系统要求以动态方式管理频率调节。

## 选择 CPU DVFS 调节器

您可以选择一个调速器来调整系统的功率或性能，同时更改 `CPUfreq` 调节器（`powersave/performace/schedutil`）。默认情况下，在 Qualcomm Linux 内核上，将 CPU 频率调节器设置为 `performance`。

表：CPU DVFS 变量

| 变量 | 说明 | 路径 |
| --- | --- | --- |
| scaling_governor<br>    Copy to clipboard | 将调节器设置为性能模式。 | echo performance > /sys/devices/system/cpu/cpufreq/policy*/scaling_governor<br>    Copy to clipboard |
| scaling_max_freq<br>    Copy to clipboard | 设置 CPU 群集的最高频率。 | /sys/devices/system/cpu/cpufreq/policy*/scaling_max_freq<br>    Copy to clipboard |
| scaling_min_freq<br>    Copy to clipboard | 设置 CPU 群集的最低频率。 | /sys/devices/system/cpu/cpufreq/policy*/scaling_min_freq<br>    Copy to clipboard |

有关 `CPUfreq` 的更多信息，请参阅 [CPU frequency and voltage scaling code in the Linux(TM) kernel](https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt)。

## 配置缓存和内存 DVFS 调节器

静态映射 DVFS 调节器将 CPU 工作频率与以下各项保持一致：

- 三级缓存 (L3)
- 最后一级缓存控制器 (LLCC)
- DDR RAM

如果 CPU 频率达到最高，无论是通过将 CPU 频率调节器设置为性能模式来达到最高，还是因系统中的负载过高而达到最高，L3、LLCC 和 DDR 也以最高频率运行。

该调节器的驱动程序位于 `drivers/cpufreq/qcom-cpufreq-hw.c` 文件，并且静态映射位于 `arch/arm64/boot/dts/qcom/sc7280.dtsi` 文件。

Note

对于 Qualcomm SoC，请参阅特定于平台的 DTSI 文件以获取此信息。

另一个带宽监测 (BWMON) 调节器用于根据 CPU 与 LLCC 和 CPU 与 DDR 之间的流量检测，对 LLCC 和 DDR 的频率进行投票。该调节器的驱动程序位于 `drivers/soc/qcom/icc-bwmon.c` 文件。

**CPU 频率**与 **L3/DDR 频率**之间的映射根据功耗或性能要求调整。

在 DTSI 中，对于每个 CPUx 节点，都有一个 `operating-points-v2 = <&cpux_opp_table>` 条目。`cpux_opp_table` 保存 CPU、L3 和 DDR 频率之间的静态映射。

例如：

cpu0_opp_300mhz: opp-300000000 {
       opp-hz = /bits/ 64 <300000000>;
       opp-peak-kBps = <800000 9600000>;
    };
    Copy to clipboard

当 CPU 0 以 300 MHz 运行时，它对 L3 表决 9600000，这相当于 300,000 Hz（9600000/w）的 L3 频率。如果表决为 DDR 提供 800,000 Hz，则所得 DDR 工作频率为   200,000 Hz (800000 / w)。

在等式中，“w”表示单个周期内可以写入多少个字节：

- 对于 DDR，“w”为 4（每个通道每个周期执行两次事务，每次事务为 2 个字节）。
- 对于 L3，“w”为 32（每个周期一个事务，每个事务 32 个字节）。

Note

这些值是针对 DDR 每条通道设置的，该映射将 CPU 频率与内存控制器 (MC) 通道带宽相关联。调整此映射表会影响功耗和性能特征。

有关工作性能点 (OPP) 框架和语法的更多信息，请参见 [Generic OPP (Operating Performance Points) Bindings](https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt)。

## 配置调度器 DVFS 设置

调度器 DVFS 设置在 `post_boot script` 文件中定义。

所有启动后设置都在 `meta-qcom-hwe/recipes-core/initscripts/files/post_boot.sh` 脚本中。如需了解更多信息，请参阅 [post_boot.sh](https://github.com/qualcomm-linux/meta-qcom-hwe/blob/scarthgap/recipes-core/initscripts/files/post_boot.sh)。

Last Published: Nov 04, 2025

[Previous Topic
配置调度器](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/scheduler.md) [Next Topic
配置 pinctrl 驱动程序](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/pinctrl-configuration.md)