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 電源和電池介面

請參閱 ABI 檔案測試/sysfs-platform-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.0Alabaster 0.7.16 提供支援 | 頁面源

3 – 突發型:消耗相對恆定的平均功耗,但

相對空閒期會被突發活動打斷。突發活動相對較短,其間的相對空閒期通常能防止RAPL功耗限制1被耗盡。

4 – 未知:無法分類。