xref: /linux/Documentation/gpu/amdgpu/thermal.rst (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1===========================================
2 GPU Power/Thermal Controls and Monitoring
3===========================================
4
5HWMON Interfaces
6================
7
8.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
9   :doc: hwmon
10
11GPU sysfs Power State Interfaces
12================================
13
14GPU power controls are exposed via sysfs files.
15
16power_dpm_state
17---------------
18
19.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
20   :doc: power_dpm_state
21
22power_dpm_force_performance_level
23---------------------------------
24
25.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
26   :doc: power_dpm_force_performance_level
27
28pp_table
29--------
30
31.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
32   :doc: pp_table
33
34pp_od_clk_voltage
35-----------------
36
37.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
38   :doc: pp_od_clk_voltage
39
40pp_dpm_*
41--------
42
43.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
44   :doc: pp_dpm_sclk pp_dpm_mclk pp_dpm_socclk pp_dpm_fclk pp_dpm_dcefclk pp_dpm_pcie
45
46pp_power_profile_mode
47---------------------
48
49.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
50   :doc: pp_power_profile_mode
51
52pm_policy
53---------------------
54
55.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
56   :doc: pm_policy
57
58\*_busy_percent
59---------------
60
61.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
62   :doc: gpu_busy_percent
63
64.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
65   :doc: mem_busy_percent
66
67gpu_metrics
68-----------
69
70.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
71   :doc: gpu_metrics
72
73fan_curve
74---------
75
76.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
77   :doc: fan_curve
78
79acoustic_limit_rpm_threshold
80----------------------------
81
82.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
83   :doc: acoustic_limit_rpm_threshold
84
85acoustic_target_rpm_threshold
86-----------------------------
87
88.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
89   :doc: acoustic_target_rpm_threshold
90
91fan_target_temperature
92----------------------
93
94.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
95   :doc: fan_target_temperature
96
97fan_minimum_pwm
98---------------
99
100.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
101   :doc: fan_minimum_pwm
102
103GFXOFF
104======
105
106GFXOFF is a feature found in most recent GPUs that saves power at runtime. The
107card's RLC (RunList Controller) firmware powers off the gfx engine
108dynamically when there is no workload on gfx or compute pipes. GFXOFF is on by
109default on supported GPUs.
110
111Userspace can interact with GFXOFF through a debugfs interface (all values in
112`uint32_t`, unless otherwise noted):
113
114``amdgpu_gfxoff``
115-----------------
116
117Use it to enable/disable GFXOFF, and to check if it's current enabled/disabled::
118
119  $ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff
120  01
121
122- Write 0 to disable it, and 1 to enable it.
123- Read 0 means it's disabled, 1 it's enabled.
124
125If it's enabled, that means that the GPU is free to enter into GFXOFF mode as
126needed. Disabled means that it will never enter GFXOFF mode.
127
128``amdgpu_gfxoff_status``
129------------------------
130
131Read it to check current GFXOFF's status of a GPU::
132
133  $ xxd -l1 -p /sys/kernel/debug/dri/0/amdgpu_gfxoff_status
134  02
135
136- 0: GPU is in GFXOFF state, the gfx engine is powered down.
137- 1: Transition out of GFXOFF state
138- 2: Not in GFXOFF state
139- 3: Transition into GFXOFF state
140
141If GFXOFF is enabled, the value will be transitioning around [0, 3], always
142getting into 0 when possible. When it's disabled, it's always at 2. Returns
143``-EINVAL`` if it's not supported.
144
145``amdgpu_gfxoff_count``
146-----------------------
147
148Read it to get the total GFXOFF entry count at the time of query since system
149power-up. The value is an `uint64_t` type, however, due to firmware limitations,
150it can currently overflow as an `uint32_t`. *Only supported in vangogh*
151
152``amdgpu_gfxoff_residency``
153---------------------------
154
155Write 1 to amdgpu_gfxoff_residency to start logging, and 0 to stop. Read it to
156get average GFXOFF residency % multiplied by 100 during the last logging
157interval. E.g. a value of 7854 means 78.54% of the time in the last logging
158interval the GPU was in GFXOFF mode. *Only supported in vangogh*
159