xref: /OK3568_Linux_fs/kernel/Documentation/gpu/amdgpu.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun=========================
2*4882a593Smuzhiyun drm/amdgpu AMDgpu driver
3*4882a593Smuzhiyun=========================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunThe drm/amdgpu driver supports all AMD Radeon GPUs based on the Graphics Core
6*4882a593SmuzhiyunNext (GCN) architecture.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunModule Parameters
9*4882a593Smuzhiyun=================
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunThe amdgpu driver supports the following module parameters:
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunCore Driver Infrastructure
16*4882a593Smuzhiyun==========================
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunThis section covers core driver infrastructure.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun.. _amdgpu_memory_domains:
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunMemory Domains
23*4882a593Smuzhiyun--------------
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun.. kernel-doc:: include/uapi/drm/amdgpu_drm.h
26*4882a593Smuzhiyun   :doc: memory domains
27*4882a593Smuzhiyun
28*4882a593SmuzhiyunBuffer Objects
29*4882a593Smuzhiyun--------------
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
32*4882a593Smuzhiyun   :doc: amdgpu_object
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
35*4882a593Smuzhiyun   :internal:
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunPRIME Buffer Sharing
38*4882a593Smuzhiyun--------------------
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
41*4882a593Smuzhiyun   :doc: PRIME Buffer Sharing
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
44*4882a593Smuzhiyun   :internal:
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunMMU Notifier
47*4882a593Smuzhiyun------------
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
50*4882a593Smuzhiyun   :doc: MMU Notifier
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
53*4882a593Smuzhiyun   :internal:
54*4882a593Smuzhiyun
55*4882a593SmuzhiyunAMDGPU Virtual Memory
56*4882a593Smuzhiyun---------------------
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
59*4882a593Smuzhiyun   :doc: GPUVM
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
62*4882a593Smuzhiyun   :internal:
63*4882a593Smuzhiyun
64*4882a593SmuzhiyunInterrupt Handling
65*4882a593Smuzhiyun------------------
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
68*4882a593Smuzhiyun   :doc: Interrupt Handling
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
71*4882a593Smuzhiyun   :internal:
72*4882a593Smuzhiyun
73*4882a593SmuzhiyunIP Blocks
74*4882a593Smuzhiyun------------------
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/include/amd_shared.h
77*4882a593Smuzhiyun   :doc: IP Blocks
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/include/amd_shared.h
80*4882a593Smuzhiyun   :identifiers: amd_ip_block_type amd_ip_funcs
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunAMDGPU XGMI Support
83*4882a593Smuzhiyun===================
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunAMDGPU RAS Support
88*4882a593Smuzhiyun==================
89*4882a593Smuzhiyun
90*4882a593SmuzhiyunThe AMDGPU RAS interfaces are exposed via sysfs (for informational queries) and
91*4882a593Smuzhiyundebugfs (for error injection).
92*4882a593Smuzhiyun
93*4882a593SmuzhiyunRAS debugfs/sysfs Control and Error Injection Interfaces
94*4882a593Smuzhiyun--------------------------------------------------------
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
97*4882a593Smuzhiyun   :doc: AMDGPU RAS debugfs control interface
98*4882a593Smuzhiyun
99*4882a593SmuzhiyunRAS Reboot Behavior for Unrecoverable Errors
100*4882a593Smuzhiyun--------------------------------------------------------
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
103*4882a593Smuzhiyun   :doc: AMDGPU RAS Reboot Behavior for Unrecoverable Errors
104*4882a593Smuzhiyun
105*4882a593SmuzhiyunRAS Error Count sysfs Interface
106*4882a593Smuzhiyun-------------------------------
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
109*4882a593Smuzhiyun   :doc: AMDGPU RAS sysfs Error Count Interface
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunRAS EEPROM debugfs Interface
112*4882a593Smuzhiyun----------------------------
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
115*4882a593Smuzhiyun   :doc: AMDGPU RAS debugfs EEPROM table reset interface
116*4882a593Smuzhiyun
117*4882a593SmuzhiyunRAS VRAM Bad Pages sysfs Interface
118*4882a593Smuzhiyun----------------------------------
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
121*4882a593Smuzhiyun   :doc: AMDGPU RAS sysfs gpu_vram_bad_pages Interface
122*4882a593Smuzhiyun
123*4882a593SmuzhiyunSample Code
124*4882a593Smuzhiyun-----------
125*4882a593SmuzhiyunSample code for testing error injection can be found here:
126*4882a593Smuzhiyunhttps://cgit.freedesktop.org/mesa/drm/tree/tests/amdgpu/ras_tests.c
127*4882a593Smuzhiyun
128*4882a593SmuzhiyunThis is part of the libdrm amdgpu unit tests which cover several areas of the GPU.
129*4882a593SmuzhiyunThere are four sets of tests:
130*4882a593Smuzhiyun
131*4882a593SmuzhiyunRAS Basic Test
132*4882a593Smuzhiyun
133*4882a593SmuzhiyunThe test verifies the RAS feature enabled status and makes sure the necessary sysfs and debugfs files
134*4882a593Smuzhiyunare present.
135*4882a593Smuzhiyun
136*4882a593SmuzhiyunRAS Query Test
137*4882a593Smuzhiyun
138*4882a593SmuzhiyunThis test checks the RAS availability and enablement status for each supported IP block as well as
139*4882a593Smuzhiyunthe error counts.
140*4882a593Smuzhiyun
141*4882a593SmuzhiyunRAS Inject Test
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunThis test injects errors for each IP.
144*4882a593Smuzhiyun
145*4882a593SmuzhiyunRAS Disable Test
146*4882a593Smuzhiyun
147*4882a593SmuzhiyunThis test tests disabling of RAS features for each IP block.
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun
150*4882a593SmuzhiyunGPU Power/Thermal Controls and Monitoring
151*4882a593Smuzhiyun=========================================
152*4882a593Smuzhiyun
153*4882a593SmuzhiyunThis section covers hwmon and power/thermal controls.
154*4882a593Smuzhiyun
155*4882a593SmuzhiyunHWMON Interfaces
156*4882a593Smuzhiyun----------------
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
159*4882a593Smuzhiyun   :doc: hwmon
160*4882a593Smuzhiyun
161*4882a593SmuzhiyunGPU sysfs Power State Interfaces
162*4882a593Smuzhiyun--------------------------------
163*4882a593Smuzhiyun
164*4882a593SmuzhiyunGPU power controls are exposed via sysfs files.
165*4882a593Smuzhiyun
166*4882a593Smuzhiyunpower_dpm_state
167*4882a593Smuzhiyun~~~~~~~~~~~~~~~
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
170*4882a593Smuzhiyun   :doc: power_dpm_state
171*4882a593Smuzhiyun
172*4882a593Smuzhiyunpower_dpm_force_performance_level
173*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
176*4882a593Smuzhiyun   :doc: power_dpm_force_performance_level
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunpp_table
179*4882a593Smuzhiyun~~~~~~~~
180*4882a593Smuzhiyun
181*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
182*4882a593Smuzhiyun   :doc: pp_table
183*4882a593Smuzhiyun
184*4882a593Smuzhiyunpp_od_clk_voltage
185*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
188*4882a593Smuzhiyun   :doc: pp_od_clk_voltage
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunpp_dpm_*
191*4882a593Smuzhiyun~~~~~~~~
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
194*4882a593Smuzhiyun   :doc: pp_dpm_sclk pp_dpm_mclk pp_dpm_socclk pp_dpm_fclk pp_dpm_dcefclk pp_dpm_pcie
195*4882a593Smuzhiyun
196*4882a593Smuzhiyunpp_power_profile_mode
197*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
200*4882a593Smuzhiyun   :doc: pp_power_profile_mode
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun\*_busy_percent
203*4882a593Smuzhiyun~~~~~~~~~~~~~~~
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
206*4882a593Smuzhiyun   :doc: gpu_busy_percent
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
209*4882a593Smuzhiyun   :doc: mem_busy_percent
210*4882a593Smuzhiyun
211*4882a593Smuzhiyungpu_metrics
212*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
215*4882a593Smuzhiyun   :doc: gpu_metrics
216*4882a593Smuzhiyun
217*4882a593SmuzhiyunGPU Product Information
218*4882a593Smuzhiyun=======================
219*4882a593Smuzhiyun
220*4882a593SmuzhiyunInformation about the GPU can be obtained on certain cards
221*4882a593Smuzhiyunvia sysfs
222*4882a593Smuzhiyun
223*4882a593Smuzhiyunproduct_name
224*4882a593Smuzhiyun------------
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
227*4882a593Smuzhiyun   :doc: product_name
228*4882a593Smuzhiyun
229*4882a593Smuzhiyunproduct_number
230*4882a593Smuzhiyun--------------
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
233*4882a593Smuzhiyun   :doc: product_name
234*4882a593Smuzhiyun
235*4882a593Smuzhiyunserial_number
236*4882a593Smuzhiyun-------------
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
239*4882a593Smuzhiyun   :doc: serial_number
240*4882a593Smuzhiyun
241*4882a593Smuzhiyununique_id
242*4882a593Smuzhiyun---------
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
245*4882a593Smuzhiyun   :doc: unique_id
246*4882a593Smuzhiyun
247*4882a593SmuzhiyunGPU Memory Usage Information
248*4882a593Smuzhiyun============================
249*4882a593Smuzhiyun
250*4882a593SmuzhiyunVarious memory accounting can be accessed via sysfs
251*4882a593Smuzhiyun
252*4882a593Smuzhiyunmem_info_vram_total
253*4882a593Smuzhiyun-------------------
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
256*4882a593Smuzhiyun   :doc: mem_info_vram_total
257*4882a593Smuzhiyun
258*4882a593Smuzhiyunmem_info_vram_used
259*4882a593Smuzhiyun------------------
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
262*4882a593Smuzhiyun   :doc: mem_info_vram_used
263*4882a593Smuzhiyun
264*4882a593Smuzhiyunmem_info_vis_vram_total
265*4882a593Smuzhiyun-----------------------
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
268*4882a593Smuzhiyun   :doc: mem_info_vis_vram_total
269*4882a593Smuzhiyun
270*4882a593Smuzhiyunmem_info_vis_vram_used
271*4882a593Smuzhiyun----------------------
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
274*4882a593Smuzhiyun   :doc: mem_info_vis_vram_used
275*4882a593Smuzhiyun
276*4882a593Smuzhiyunmem_info_gtt_total
277*4882a593Smuzhiyun------------------
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
280*4882a593Smuzhiyun   :doc: mem_info_gtt_total
281*4882a593Smuzhiyun
282*4882a593Smuzhiyunmem_info_gtt_used
283*4882a593Smuzhiyun-----------------
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
286*4882a593Smuzhiyun   :doc: mem_info_gtt_used
287*4882a593Smuzhiyun
288*4882a593SmuzhiyunPCIe Accounting Information
289*4882a593Smuzhiyun===========================
290*4882a593Smuzhiyun
291*4882a593Smuzhiyunpcie_bw
292*4882a593Smuzhiyun-------
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/pm/amdgpu_pm.c
295*4882a593Smuzhiyun   :doc: pcie_bw
296*4882a593Smuzhiyun
297*4882a593Smuzhiyunpcie_replay_count
298*4882a593Smuzhiyun-----------------
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
301*4882a593Smuzhiyun   :doc: pcie_replay_count
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun
304