xref: /linux/Documentation/driver-api/thermal/intel_dptf.rst (revision 23ca32e4ead48f68e37000f2552b973ef1439acb)
1.. SPDX-License-Identifier: GPL-2.0
2
3===============================================================
4Intel(R) Dynamic Platform and Thermal Framework Sysfs Interface
5===============================================================
6
7:Copyright: © 2022 Intel Corporation
8
9:Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
10
11Introduction
12------------
13
14Intel(R) Dynamic Platform and Thermal Framework (DPTF) is a platform
15level hardware/software solution for power and thermal management.
16
17As a container for multiple power/thermal technologies, DPTF provides
18a coordinated approach for different policies to effect the hardware
19state of a system.
20
21Since it is a platform level framework, this has several components.
22Some parts of the technology is implemented in the firmware and uses
23ACPI and PCI devices to expose various features for monitoring and
24control. Linux has a set of kernel drivers exposing hardware interface
25to user space. This allows user space thermal solutions like
26"Linux Thermal Daemon" to read platform specific thermal and power
27tables to deliver adequate performance while keeping the system under
28thermal limits.
29
30DPTF ACPI Drivers interface
31----------------------------
32
33:file:`/sys/bus/platform/devices/<N>/uuids`, where <N>
34=INT3400|INTC1040|INTC1041|INTC10A0
35
36``available_uuids`` (RO)
37	A set of UUIDs strings presenting available policies
38	which should be notified to the firmware when the
39	user space can support those policies.
40
41	UUID strings:
42
43	"42A441D6-AE6A-462b-A84B-4A8CE79027D3" : Passive 1
44
45	"3A95C389-E4B8-4629-A526-C52C88626BAE" : Active
46
47	"97C68AE7-15FA-499c-B8C9-5DA81D606E0A" : Critical
48
49	"63BE270F-1C11-48FD-A6F7-3AF253FF3E2D" : Adaptive performance
50
51	"5349962F-71E6-431D-9AE8-0A635B710AEE" : Emergency call
52
53	"9E04115A-AE87-4D1C-9500-0F3E340BFE75" : Passive 2
54
55	"F5A35014-C209-46A4-993A-EB56DE7530A1" : Power Boss
56
57	"6ED722A7-9240-48A5-B479-31EEF723D7CF" : Virtual Sensor
58
59	"16CAF1B7-DD38-40ED-B1C1-1B8A1913D531" : Cooling mode
60
61	"BE84BABF-C4D4-403D-B495-3128FD44dAC1" : HDC
62
63``current_uuid`` (RW)
64	User space can write strings from available UUIDs, one at a
65	time.
66
67:file:`/sys/bus/platform/devices/<N>/`, where <N>
68=INT3400|INTC1040|INTC1041|INTC10A0
69
70``imok`` (WO)
71	User space daemon write 1 to respond to firmware event
72	for sending keep alive notification. User space receives
73	THERMAL_EVENT_KEEP_ALIVE kobject uevent notification when
74	firmware calls for user space to respond with imok ACPI
75	method.
76
77``odvp*`` (RO)
78	Firmware thermal status variable values. Thermal tables
79	calls for different processing based on these variable
80	values.
81
82``data_vault`` (RO)
83	Binary thermal table. Refer to
84	https:/github.com/intel/thermal_daemon for decoding
85	thermal table.
86
87``production_mode`` (RO)
88	When different from zero, manufacturer locked thermal configuration
89	from further changes.
90
91ACPI Thermal Relationship table interface
92------------------------------------------
93
94:file:`/dev/acpi_thermal_rel`
95
96	This device provides IOCTL interface to read standard ACPI
97	thermal relationship tables via ACPI methods _TRT and _ART.
98	These IOCTLs are defined in
99	drivers/thermal/intel/int340x_thermal/acpi_thermal_rel.h
100
101	IOCTLs:
102
103	ACPI_THERMAL_GET_TRT_LEN: Get length of TRT table
104
105	ACPI_THERMAL_GET_ART_LEN: Get length of ART table
106
107	ACPI_THERMAL_GET_TRT_COUNT: Number of records in TRT table
108
109	ACPI_THERMAL_GET_ART_COUNT: Number of records in ART table
110
111	ACPI_THERMAL_GET_TRT: Read binary TRT table, length to read is
112	provided via argument to ioctl().
113
114	ACPI_THERMAL_GET_ART: Read binary ART table, length to read is
115	provided via argument to ioctl().
116
117DPTF ACPI Sensor drivers
118-------------------------
119
120DPTF Sensor drivers are presented as standard thermal sysfs thermal_zone.
121
122
123DPTF ACPI Cooling drivers
124--------------------------
125
126DPTF cooling drivers are presented as standard thermal sysfs cooling_device.
127
128
129DPTF Processor thermal PCI Driver interface
130--------------------------------------------
131
132:file:`/sys/bus/pci/devices/0000\:00\:04.0/power_limits/`
133
134Refer to Documentation/power/powercap/powercap.rst for powercap
135ABI.
136
137``power_limit_0_max_uw`` (RO)
138	Maximum powercap sysfs constraint_0_power_limit_uw for Intel RAPL
139
140``power_limit_0_step_uw`` (RO)
141	Power limit increment/decrements for Intel RAPL constraint 0 power limit
142
143``power_limit_0_min_uw`` (RO)
144	Minimum powercap sysfs constraint_0_power_limit_uw for Intel RAPL
145
146``power_limit_0_tmin_us`` (RO)
147	Minimum powercap sysfs constraint_0_time_window_us for Intel RAPL
148
149``power_limit_0_tmax_us`` (RO)
150	Maximum powercap sysfs constraint_0_time_window_us for Intel RAPL
151
152``power_limit_1_max_uw`` (RO)
153	Maximum powercap sysfs constraint_1_power_limit_uw for Intel RAPL
154
155``power_limit_1_step_uw`` (RO)
156	Power limit increment/decrements for Intel RAPL constraint 1 power limit
157
158``power_limit_1_min_uw`` (RO)
159	Minimum powercap sysfs constraint_1_power_limit_uw for Intel RAPL
160
161``power_limit_1_tmin_us`` (RO)
162	Minimum powercap sysfs constraint_1_time_window_us for Intel RAPL
163
164``power_limit_1_tmax_us`` (RO)
165	Maximum powercap sysfs constraint_1_time_window_us for Intel RAPL
166
167``power_floor_status`` (RO)
168	When set to 1, the power floor of the system in the current
169	configuration has been reached.  It needs to be reconfigured to allow
170	power to be reduced any further.
171
172``power_floor_enable`` (RW)
173	When set to 1, enable reading and notification of the power floor
174	status. Notifications are triggered for the power_floor_status
175	attribute value changes.
176
177:file:`/sys/bus/pci/devices/0000\:00\:04.0/`
178
179``tcc_offset_degree_celsius`` (RW)
180	TCC offset from the critical temperature where hardware will throttle
181	CPU.
182
183:file:`/sys/bus/pci/devices/0000\:00\:04.0/workload_request`
184
185``workload_available_types`` (RO)
186	Available workload types. User space can specify one of the workload type
187	it is currently executing via workload_type. For example: idle, bursty,
188	sustained etc.
189
190``workload_type`` (RW)
191	User space can specify any one of the available workload type using
192	this interface.
193
194:file:`/sys/bus/pci/devices/0000\:00\:04.0/ptc_0_control`
195:file:`/sys/bus/pci/devices/0000\:00\:04.0/ptc_1_control`
196:file:`/sys/bus/pci/devices/0000\:00\:04.0/ptc_2_control`
197
198All these controls needs admin privilege to update.
199
200``enable`` (RW)
201	1 for enable, 0 for disable. Shows the current enable status of
202	platform temperature control feature. User space can enable/disable
203	hardware controls.
204
205``temperature_target`` (RW)
206	Update a new temperature target in milli degree celsius for hardware to
207	use for the temperature control.
208
209Given that this is platform temperature control, it is expected that a
210single user-level manager owns and manages the controls. If multiple
211user-level software applications attempt to write different targets, it
212can lead to unexpected behavior.
213
214
215DPTF Processor thermal RFIM interface
216--------------------------------------------
217
218RFIM interface allows adjustment of FIVR (Fully Integrated Voltage Regulator),
219DDR (Double Data Rate) and DLVR (Digital Linear Voltage Regulator)
220frequencies to avoid RF interference with WiFi and 5G.
221
222Switching voltage regulators (VR) generate radiated EMI or RFI at the
223fundamental frequency and its harmonics. Some harmonics may interfere
224with very sensitive wireless receivers such as Wi-Fi and cellular that
225are integrated into host systems like notebook PCs.  One of mitigation
226methods is requesting SOC integrated VR (IVR) switching frequency to a
227small % and shift away the switching noise harmonic interference from
228radio channels.  OEM or ODMs can use the driver to control SOC IVR
229operation within the range where it does not impact IVR performance.
230
231Some products use DLVR instead of FIVR as switching voltage regulator.
232In this case attributes of DLVR must be adjusted instead of FIVR.
233
234While shifting the frequencies additional clock noise can be introduced,
235which is compensated by adjusting Spread spectrum percent. This helps
236to reduce the clock noise to meet regulatory compliance. This spreading
237% increases bandwidth of signal transmission and hence reduces the
238effects of interference, noise and signal fading.
239
240DRAM devices of DDR IO interface and their power plane can generate EMI
241at the data rates. Similar to IVR control mechanism, Intel offers a
242mechanism by which DDR data rates can be changed if several conditions
243are met: there is strong RFI interference because of DDR; CPU power
244management has no other restriction in changing DDR data rates;
245PC ODMs enable this feature (real time DDR RFI Mitigation referred to as
246DDR-RFIM) for Wi-Fi from BIOS.
247
248
249FIVR attributes
250
251:file:`/sys/bus/pci/devices/0000\:00\:04.0/fivr/`
252
253``vco_ref_code_lo`` (RW)
254	The VCO reference code is an 11-bit field and controls the FIVR
255	switching frequency. This is the 3-bit LSB field.
256
257``vco_ref_code_hi`` (RW)
258	The VCO reference code is an 11-bit field and controls the FIVR
259	switching frequency. This is the 8-bit MSB field.
260
261``spread_spectrum_pct`` (RW)
262	Set the FIVR spread spectrum clocking percentage
263
264``spread_spectrum_clk_enable`` (RW)
265	Enable/disable of the FIVR spread spectrum clocking feature
266
267``rfi_vco_ref_code`` (RW)
268	This field is a read only status register which reflects the
269	current FIVR switching frequency
270
271``fivr_fffc_rev`` (RW)
272	This field indicated the revision of the FIVR HW.
273
274
275DVFS attributes
276
277:file:`/sys/bus/pci/devices/0000\:00\:04.0/dvfs/`
278
279``rfi_restriction_run_busy`` (RW)
280	Request the restriction of specific DDR data rate and set this
281	value 1. Self reset to 0 after operation.
282
283``rfi_restriction_err_code`` (RW)
284	0 :Request is accepted, 1:Feature disabled,
285	2: the request restricts more points than it is allowed
286
287``rfi_restriction_data_rate_Delta`` (RW)
288	Restricted DDR data rate for RFI protection: Lower Limit
289
290``rfi_restriction_data_rate_Base`` (RW)
291	Restricted DDR data rate for RFI protection: Upper Limit
292
293``ddr_data_rate_point_0`` (RO)
294	DDR data rate selection 1st point
295
296``ddr_data_rate_point_1`` (RO)
297	DDR data rate selection 2nd point
298
299``ddr_data_rate_point_2`` (RO)
300	DDR data rate selection 3rd point
301
302``ddr_data_rate_point_3`` (RO)
303	DDR data rate selection 4th point
304
305``rfi_disable (RW)``
306	Disable DDR rate change feature
307
308DLVR attributes
309
310:file:`/sys/bus/pci/devices/0000\:00\:04.0/dlvr/`
311
312``dlvr_hardware_rev`` (RO)
313	DLVR hardware revision.
314
315``dlvr_freq_mhz`` (RO)
316	Current DLVR PLL frequency in MHz.
317
318``dlvr_freq_select`` (RW)
319	Sets DLVR PLL clock frequency. Once set, and enabled via
320	dlvr_rfim_enable, the dlvr_freq_mhz will show the current
321	DLVR PLL frequency.
322
323``dlvr_pll_busy`` (RO)
324	PLL can't accept frequency change when set.
325
326``dlvr_rfim_enable`` (RW)
327	0: Disable RF frequency hopping, 1: Enable RF frequency hopping.
328
329``dlvr_spread_spectrum_pct`` (RW)
330	Sets DLVR spread spectrum percent value.
331
332``dlvr_control_mode`` (RW)
333        Specifies how frequencies are spread using spread spectrum.
334        0: Down spread,
335        1: Spread in the Center.
336
337``dlvr_control_lock`` (RW)
338    1: future writes are ignored.
339
340DPTF Power supply and Battery Interface
341----------------------------------------
342
343Refer to Documentation/ABI/testing/sysfs-platform-dptf
344
345DPTF Fan Control
346----------------------------------------
347
348Refer to Documentation/admin-guide/acpi/fan_performance_states.rst
349
350Workload Type Hints
351----------------------------------------
352
353The firmware in Meteor Lake processor generation is capable of identifying
354workload type and passing hints regarding it to the OS. A special sysfs
355interface is provided to allow user space to obtain workload type hints from
356the firmware and control the rate at which they are provided.
357
358User space can poll attribute "workload_type_index" for the current hint or
359can receive a notification whenever the value of this attribute is updated.
360
361file:`/sys/bus/pci/devices/0000:00:04.0/workload_hint/`
362Segment 0, bus 0, device 4, function 0 is reserved for the processor thermal
363device on all Intel client processors. So, the above path doesn't change
364based on the processor generation.
365
366``workload_hint_enable`` (RW)
367	Enable firmware to send workload type hints to user space.
368
369``notification_delay_ms`` (RW)
370	Minimum delay in milliseconds before firmware will notify OS. This is
371	for the rate control of notifications. This delay is between changing
372	the workload type prediction in the firmware and notifying the OS about
373	the change. The default delay is 1024 ms. The delay of 0 is invalid.
374	The delay is rounded up to the nearest power of 2 to simplify firmware
375	programming of the delay value. The read of notification_delay_ms
376	attribute shows the effective value used.
377
378``workload_type_index`` (RO)
379	Predicted workload type index. User space can get notification of
380	change via existing sysfs attribute change notification mechanism.
381
382	The supported index values and their meaning for the Meteor Lake
383	processor generation are as follows:
384
385	0 -  Idle: System performs no tasks, power and idle residency are
386		consistently low for long periods of time.
387
388	1 – Battery Life: Power is relatively low, but the processor may
389		still be actively performing a task, such as video playback for
390		a long period of time.
391
392	2 – Sustained: Power level that is relatively high for a long period
393		of time, with very few to no periods of idleness, which will
394		eventually exhaust RAPL Power Limit 1 and 2.
395
396	3 – Bursty: Consumes a relatively constant average amount of power, but
397		periods of relative idleness are interrupted by bursts of
398		activity. The bursts are relatively short and the periods of
399		relative idleness between them typically prevent RAPL Power
400		Limit 1 from being exhausted.
401
402	4 – Unknown: Can't classify.
403