Intel(R) 动态平台和散热框架 Sysfs 接口¶
- 版权:
© 2022 英特尔公司
- 作者:
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
简介¶
Intel(R) 动态平台和散热框架 (DPTF) 是用于电源和散热管理的平台级硬件/软件解决方案。
作为多种电源/散热技术的容器,DPTF 提供了一种协调方法,使不同策略能够影响系统的硬件状态。
由于它是一个平台级框架,因此包含多个组件。部分技术在固件中实现,并使用 ACPI 和 PCI 设备暴露各种监控和控制功能。Linux 有一套内核驱动程序,将硬件接口暴露给用户空间。这使得“Linux Thermal Daemon”等用户空间散热解决方案能够读取平台特定的散热和电源表,以在保持系统在散热限制内的情况下提供足够的性能。
DPTF ACPI 驱动程序接口¶
/sys/bus/platform/devices/<N>/uuids
,其中 <N> =INT3400|INTC1040|INTC1041|INTC10A0
available_uuids
(只读)一组 UUID 字符串,表示当用户空间支持这些策略时应通知固件的可用策略。
UUID 字符串
“42A441D6-AE6A-462b-A84B-4A8CE79027D3” : 被动 1
“3A95C389-E4B8-4629-A526-C52C88626BAE” : 主动
“97C68AE7-15FA-499c-B8C9-5DA81D606E0A” : 临界
“63BE270F-1C11-48FD-A6F7-3AF253FF3E2D” : 自适应性能
“5349962F-71E6-431D-9AE8-0A635B710AEE” : 紧急呼叫
“9E04115A-AE87-4D1C-9500-0F3E340BFE75” : 被动 2
“F5A35014-C209-46A4-993A-EB56DE7530A1” : 电源管理器
“6ED722A7-9240-48A5-B479-31EEF723D7CF” : 虚拟传感器
“16CAF1B7-DD38-40ED-B1C1-1B8A1913D531” : 冷却模式
“BE84BABF-C4D4-403D-B495-3128FD44dAC1” : HDC
current_uuid
(读写)用户空间可以一次写入一个可用 UUID 字符串。
/sys/bus/platform/devices/<N>/
,其中 <N> =INT3400|INTC1040|INTC1041|INTC10A0
imok
(只写)用户空间守护程序写入 1 以响应固件事件,用于发送保持活动通知。当固件要求用户空间通过 imok ACPI 方法响应时,用户空间会收到 THERMAL_EVENT_KEEP_ALIVE kobject uevent 通知。
odvp*
(只读)固件散热状态变量值。散热表根据这些变量值进行不同的处理。
data_vault
(只读)二进制散热表。有关散热表解码,请参阅 https:/github.com/intel/thermal_daemon。
production_mode
(只读)当非零时,制造商锁定散热配置,禁止进一步更改。
ACPI 散热关系表接口¶
/dev/acpi_thermal_rel
此设备提供 IOCTL 接口,通过 ACPI 方法 _TRT 和 _ART 读取标准 ACPI 散热关系表。这些 IOCTL 定义在 drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.h 中
IOCTL
ACPI_THERMAL_GET_TRT_LEN: 获取 TRT 表长度
ACPI_THERMAL_GET_ART_LEN: 获取 ART 表长度
ACPI_THERMAL_GET_TRT_COUNT: TRT 表中的记录数
ACPI_THERMAL_GET_ART_COUNT: ART 表中的记录数
ACPI_THERMAL_GET_TRT: 读取二进制 TRT 表,要读取的长度通过 ioctl() 的参数提供。
ACPI_THERMAL_GET_ART: 读取二进制 ART 表,要读取的长度通过 ioctl() 的参数提供。
DPTF ACPI 传感器驱动程序¶
DPTF 传感器驱动程序表示为标准散热 sysfs thermal_zone。
DPTF ACPI 冷却驱动程序¶
DPTF 冷却驱动程序表示为标准散热 sysfs cooling_device。
DPTF 处理器散热 PCI 驱动程序接口¶
/sys/bus/pci/devices/0000:00:04.0/power_limits/
有关 powercap ABI,请参阅 电源上限框架。
power_limit_0_max_uw
(只读)Intel RAPL 的最大 powercap sysfs constraint_0_power_limit_uw
power_limit_0_step_uw
(只读)Intel RAPL 约束 0 功率限制的功率限制增量/减量
power_limit_0_min_uw
(只读)Intel RAPL 的最小 powercap sysfs constraint_0_power_limit_uw
power_limit_0_tmin_us
(只读)Intel RAPL 的最小 powercap sysfs constraint_0_time_window_us
power_limit_0_tmax_us
(只读)Intel RAPL 的最大 powercap sysfs constraint_0_time_window_us
power_limit_1_max_uw
(只读)Intel RAPL 的最大 powercap sysfs constraint_1_power_limit_uw
power_limit_1_step_uw
(只读)Intel RAPL 约束 1 功率限制的功率限制增量/减量
power_limit_1_min_uw
(只读)Intel RAPL 的最小 powercap sysfs constraint_1_power_limit_uw
power_limit_1_tmin_us
(只读)Intel RAPL 的最小 powercap sysfs constraint_1_time_window_us
power_limit_1_tmax_us
(只读)Intel RAPL 的最大 powercap sysfs constraint_1_time_window_us
power_floor_status
(只读)当设置为 1 时,表示系统在当前配置中已达到功率下限。需要重新配置才能进一步降低功率。
power_floor_enable
(读写)当设置为 1 时,启用功率下限状态的读取和通知。当 power_floor_status 属性值更改时会触发通知。
/sys/bus/pci/devices/0000:00:04.0/
tcc_offset_degree_celsius
(读写)TCC 从硬件将限制 CPU 的临界温度的偏移量。
/sys/bus/pci/devices/0000:00:04.0/workload_request
workload_available_types
(只读)可用工作负载类型。用户空间可以通过 workload_type 指定当前正在执行的工作负载类型。例如:idle(空闲)、bursty(突发)、sustained(持续)等。
workload_type
(读写)用户空间可以使用此接口指定任何一种可用的工作负载类型。
/sys/bus/pci/devices/0000:00:04.0/ptc_0_control
/sys/bus/pci/devices/0000:00:04.0/ptc_1_control
/sys/bus/pci/devices/0000:00:04.0/ptc_2_control
所有这些控制都需要管理员权限才能更新。
enable
(读写)1 为启用,0 为禁用。显示平台温度控制功能的当前启用状态。用户空间可以启用/禁用硬件控制。
temperature_target
(读写)更新硬件用于温度控制的新温度目标(毫摄氏度)。
鉴于这是平台温度控制,预计单个用户级管理器拥有并管理这些控制。如果多个用户级软件应用程序尝试写入不同的目标,可能导致意外行为。
DPTF 处理器散热 RFIM 接口¶
RFIM 接口允许调整 FIVR(全集成电压调节器)、DDR(双倍数据速率)和 DLVR(数字线性电压调节器)的频率,以避免与 WiFi 和 5G 产生射频干扰。
开关电压调节器 (VR) 在基频及其谐波处产生辐射 EMI 或 RFI。某些谐波可能会干扰集成到笔记本电脑等主机系统中的高度敏感的无线接收器,例如 Wi-Fi 和蜂窝网络。一种缓解方法是将 SOC 集成 VR (IVR) 开关频率请求到一小部分百分比,并将开关噪声谐波干扰从无线电通道中移开。OEM 或 ODM 可以使用该驱动程序在不影响 IVR 性能的范围内控制 SOC IVR 操作。
某些产品使用 DLVR 而不是 FIVR 作为开关电压调节器。在这种情况下,必须调整 DLVR 的属性而不是 FIVR 的属性。
在改变频率时可能会引入额外的时钟噪声,这可以通过调整扩频百分比来补偿。这有助于降低时钟噪声以符合法规要求。这种扩频百分比增加了信号传输的带宽,从而减少了干扰、噪声和信号衰落的影响。
DDR IO 接口的 DRAM 设备及其电源平面可以在数据速率下产生 EMI。与 IVR 控制机制类似,Intel 提供了一种机制,可以在满足以下几个条件时更改 DDR 数据速率:由于 DDR 存在强 RFI 干扰;CPU 功耗管理在更改 DDR 数据速率方面没有其他限制;PC ODM 从 BIOS 启用此功能(实时 DDR RFI 缓解,简称 DDR-RFIM)用于 Wi-Fi。
FIVR 属性
/sys/bus/pci/devices/0000:00:04.0/fivr/
vco_ref_code_lo
(读写)VCO 参考代码是一个 11 位字段,控制 FIVR 开关频率。这是 3 位 LSB 字段。
vco_ref_code_hi
(读写)VCO 参考代码是一个 11 位字段,控制 FIVR 开关频率。这是 8 位 MSB 字段。
spread_spectrum_pct
(读写)设置 FIVR 扩频时钟百分比
spread_spectrum_clk_enable
(读写)启用/禁用 FIVR 扩频时钟功能
rfi_vco_ref_code
(读写)此字段是一个只读状态寄存器,反映当前 FIVR 开关频率
fivr_fffc_rev
(读写)此字段指示 FIVR 硬件的版本。
DVFS 属性
/sys/bus/pci/devices/0000:00:04.0/dvfs/
rfi_restriction_run_busy
(读写)请求限制特定的 DDR 数据速率并将其值设置为 1。操作后自动重置为 0。
rfi_restriction_err_code
(读写)0 :请求已接受, 1:功能已禁用, 2: 请求限制的点数超过允许
rfi_restriction_data_rate_Delta
(读写)用于 RFI 保护的受限 DDR 数据速率:下限
rfi_restriction_data_rate_Base
(读写)用于 RFI 保护的受限 DDR 数据速率:上限
ddr_data_rate_point_0
(只读)DDR 数据速率选择第一点
ddr_data_rate_point_1
(只读)DDR 数据速率选择第二点
ddr_data_rate_point_2
(只读)DDR 数据速率选择第三点
ddr_data_rate_point_3
(只读)DDR 数据速率选择第四点
rfi_disable (读写)
禁用 DDR 速率更改功能
DLVR 属性
/sys/bus/pci/devices/0000:00:04.0/dlvr/
dlvr_hardware_rev
(只读)DLVR 硬件版本。
dlvr_freq_mhz
(只读)当前 DLVR PLL 频率(MHz)。
dlvr_freq_select
(读写)设置 DLVR PLL 时钟频率。设置并启用 dlvr_rfim_enable 后,dlvr_freq_mhz 将显示当前 DLVR PLL 频率。
dlvr_pll_busy
(只读)当设置为此值时,PLL 无法接受频率更改。
dlvr_rfim_enable
(读写)0: 禁用射频跳频, 1: 启用射频跳频。
dlvr_spread_spectrum_pct
(读写)设置 DLVR 扩频百分比值。
dlvr_control_mode
(读写)指定如何使用扩频技术散布频率。0: 向下扩频, 1: 中心扩频。
dlvr_control_lock
(读写)1: 将来的写入将被忽略。
DPTF 电源和电池接口¶
DPTF 风扇控制¶
请参阅 ACPI 风扇性能状态
工作负载类型提示¶
Meteor Lake 处理器代的固件能够识别工作负载类型并向操作系统传递相关提示。提供了一个特殊的 sysfs 接口,允许用户空间从固件获取工作负载类型提示并控制其提供的速率。
用户空间可以轮询属性“workload_type_index”以获取当前提示,或者在每次此属性值更新时接收通知。
文件:/sys/bus/pci/devices/0000:00:04.0/workload_hint/ 段 0、总线 0、设备 4、功能 0 在所有 Intel 客户端处理器上都保留给处理器散热设备。因此,上述路径不会根据处理器代次而改变。
workload_hint_enable
(读写)启用固件向用户空间发送工作负载类型提示。
notification_delay_ms
(读写)固件通知操作系统的最小延迟(毫秒)。这是用于通知的速率控制。此延迟是固件中更改工作负载类型预测与将更改通知操作系统之间的时间。默认延迟为 1024 毫秒。延迟 0 是无效的。延迟四舍五入到最接近的 2 的幂,以简化固件对延迟值的编程。读取 notification_delay_ms 属性会显示使用的有效值。
workload_type_index
(只读)预测的工作负载类型索引。用户空间可以通过现有的 sysfs 属性更改通知机制获取更改通知。
Meteor Lake 处理器代支持的索引值及其含义如下:
- 0 - 空闲: 系统不执行任务,长时间内功耗和空闲驻留时间持续较低。
1 - 电池续航: 功耗相对较低,但处理器可能仍积极执行任务,例如长时间的视频播放。
- 2 - 持续: 功耗水平在长时间内相对较高,几乎没有空闲期,最终将耗尽 RAPL 功率限制 1 和 2。
3 - 突发: 消耗相对恒定的平均功耗,但相对空闲期被活动突发中断。突发相对较短,它们之间的相对空闲期通常会阻止 RAPL 功率限制 1 被耗尽。
- 4 - 未知: 无法分类。
©内核开发社区。 | 由 Sphinx 5.3.0 和 Alabaster 0.7.16 提供支持 | 页面源
- 3 – 突发型:消耗相对恒定的平均功耗,但
相对空闲期会被突发活动打断。突发活动相对较短,其间的相对空闲期通常能防止RAPL功耗限制1被耗尽。
4 – 未知:无法分类。