1*7688df22SAndroid Build Coastguard Worker /*
2*7688df22SAndroid Build Coastguard Worker * Copyright 2014 Advanced Micro Devices, Inc.
3*7688df22SAndroid Build Coastguard Worker *
4*7688df22SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a
5*7688df22SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"),
6*7688df22SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation
7*7688df22SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*7688df22SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the
9*7688df22SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions:
10*7688df22SAndroid Build Coastguard Worker *
11*7688df22SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included in
12*7688df22SAndroid Build Coastguard Worker * all copies or substantial portions of the Software.
13*7688df22SAndroid Build Coastguard Worker *
14*7688df22SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*7688df22SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*7688df22SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*7688df22SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18*7688df22SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19*7688df22SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20*7688df22SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE.
21*7688df22SAndroid Build Coastguard Worker *
22*7688df22SAndroid Build Coastguard Worker */
23*7688df22SAndroid Build Coastguard Worker
24*7688df22SAndroid Build Coastguard Worker #ifndef _AMDGPU_TEST_H_
25*7688df22SAndroid Build Coastguard Worker #define _AMDGPU_TEST_H_
26*7688df22SAndroid Build Coastguard Worker
27*7688df22SAndroid Build Coastguard Worker #include "amdgpu.h"
28*7688df22SAndroid Build Coastguard Worker #include "amdgpu_drm.h"
29*7688df22SAndroid Build Coastguard Worker
30*7688df22SAndroid Build Coastguard Worker /**
31*7688df22SAndroid Build Coastguard Worker * Define max. number of card in system which we are able to handle
32*7688df22SAndroid Build Coastguard Worker */
33*7688df22SAndroid Build Coastguard Worker #define MAX_CARDS_SUPPORTED 128
34*7688df22SAndroid Build Coastguard Worker
35*7688df22SAndroid Build Coastguard Worker /* Forward reference for array to keep "drm" handles */
36*7688df22SAndroid Build Coastguard Worker extern int drm_amdgpu[MAX_CARDS_SUPPORTED];
37*7688df22SAndroid Build Coastguard Worker
38*7688df22SAndroid Build Coastguard Worker /* Global variables */
39*7688df22SAndroid Build Coastguard Worker extern int open_render_node;
40*7688df22SAndroid Build Coastguard Worker
41*7688df22SAndroid Build Coastguard Worker /************************* Basic test suite ********************************/
42*7688df22SAndroid Build Coastguard Worker
43*7688df22SAndroid Build Coastguard Worker /*
44*7688df22SAndroid Build Coastguard Worker * Define basic test suite to serve as the starting point for future testing
45*7688df22SAndroid Build Coastguard Worker */
46*7688df22SAndroid Build Coastguard Worker
47*7688df22SAndroid Build Coastguard Worker /**
48*7688df22SAndroid Build Coastguard Worker * Initialize basic test suite
49*7688df22SAndroid Build Coastguard Worker */
50*7688df22SAndroid Build Coastguard Worker int suite_basic_tests_init();
51*7688df22SAndroid Build Coastguard Worker
52*7688df22SAndroid Build Coastguard Worker /**
53*7688df22SAndroid Build Coastguard Worker * Deinitialize basic test suite
54*7688df22SAndroid Build Coastguard Worker */
55*7688df22SAndroid Build Coastguard Worker int suite_basic_tests_clean();
56*7688df22SAndroid Build Coastguard Worker
57*7688df22SAndroid Build Coastguard Worker /**
58*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
59*7688df22SAndroid Build Coastguard Worker */
60*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_basic_tests_enable(void);
61*7688df22SAndroid Build Coastguard Worker
62*7688df22SAndroid Build Coastguard Worker /**
63*7688df22SAndroid Build Coastguard Worker * Tests in basic test suite
64*7688df22SAndroid Build Coastguard Worker */
65*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo basic_tests[];
66*7688df22SAndroid Build Coastguard Worker
67*7688df22SAndroid Build Coastguard Worker /**
68*7688df22SAndroid Build Coastguard Worker * Initialize bo test suite
69*7688df22SAndroid Build Coastguard Worker */
70*7688df22SAndroid Build Coastguard Worker int suite_bo_tests_init();
71*7688df22SAndroid Build Coastguard Worker
72*7688df22SAndroid Build Coastguard Worker /**
73*7688df22SAndroid Build Coastguard Worker * Deinitialize bo test suite
74*7688df22SAndroid Build Coastguard Worker */
75*7688df22SAndroid Build Coastguard Worker int suite_bo_tests_clean();
76*7688df22SAndroid Build Coastguard Worker
77*7688df22SAndroid Build Coastguard Worker /**
78*7688df22SAndroid Build Coastguard Worker * Tests in bo test suite
79*7688df22SAndroid Build Coastguard Worker */
80*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo bo_tests[];
81*7688df22SAndroid Build Coastguard Worker
82*7688df22SAndroid Build Coastguard Worker /**
83*7688df22SAndroid Build Coastguard Worker * Initialize cs test suite
84*7688df22SAndroid Build Coastguard Worker */
85*7688df22SAndroid Build Coastguard Worker int suite_cs_tests_init();
86*7688df22SAndroid Build Coastguard Worker
87*7688df22SAndroid Build Coastguard Worker /**
88*7688df22SAndroid Build Coastguard Worker * Deinitialize cs test suite
89*7688df22SAndroid Build Coastguard Worker */
90*7688df22SAndroid Build Coastguard Worker int suite_cs_tests_clean();
91*7688df22SAndroid Build Coastguard Worker
92*7688df22SAndroid Build Coastguard Worker /**
93*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
94*7688df22SAndroid Build Coastguard Worker */
95*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_cs_tests_enable(void);
96*7688df22SAndroid Build Coastguard Worker
97*7688df22SAndroid Build Coastguard Worker /**
98*7688df22SAndroid Build Coastguard Worker * Tests in cs test suite
99*7688df22SAndroid Build Coastguard Worker */
100*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo cs_tests[];
101*7688df22SAndroid Build Coastguard Worker
102*7688df22SAndroid Build Coastguard Worker /**
103*7688df22SAndroid Build Coastguard Worker * Initialize vce test suite
104*7688df22SAndroid Build Coastguard Worker */
105*7688df22SAndroid Build Coastguard Worker int suite_vce_tests_init();
106*7688df22SAndroid Build Coastguard Worker
107*7688df22SAndroid Build Coastguard Worker /**
108*7688df22SAndroid Build Coastguard Worker * Deinitialize vce test suite
109*7688df22SAndroid Build Coastguard Worker */
110*7688df22SAndroid Build Coastguard Worker int suite_vce_tests_clean();
111*7688df22SAndroid Build Coastguard Worker
112*7688df22SAndroid Build Coastguard Worker /**
113*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
114*7688df22SAndroid Build Coastguard Worker */
115*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_vce_tests_enable(void);
116*7688df22SAndroid Build Coastguard Worker
117*7688df22SAndroid Build Coastguard Worker /**
118*7688df22SAndroid Build Coastguard Worker * Tests in vce test suite
119*7688df22SAndroid Build Coastguard Worker */
120*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo vce_tests[];
121*7688df22SAndroid Build Coastguard Worker
122*7688df22SAndroid Build Coastguard Worker /**
123*7688df22SAndroid Build Coastguard Worker + * Initialize vcn test suite
124*7688df22SAndroid Build Coastguard Worker + */
125*7688df22SAndroid Build Coastguard Worker int suite_vcn_tests_init();
126*7688df22SAndroid Build Coastguard Worker
127*7688df22SAndroid Build Coastguard Worker /**
128*7688df22SAndroid Build Coastguard Worker + * Deinitialize vcn test suite
129*7688df22SAndroid Build Coastguard Worker + */
130*7688df22SAndroid Build Coastguard Worker int suite_vcn_tests_clean();
131*7688df22SAndroid Build Coastguard Worker
132*7688df22SAndroid Build Coastguard Worker /**
133*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
134*7688df22SAndroid Build Coastguard Worker */
135*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_vcn_tests_enable(void);
136*7688df22SAndroid Build Coastguard Worker
137*7688df22SAndroid Build Coastguard Worker /**
138*7688df22SAndroid Build Coastguard Worker + * Tests in vcn test suite
139*7688df22SAndroid Build Coastguard Worker + */
140*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo vcn_tests[];
141*7688df22SAndroid Build Coastguard Worker
142*7688df22SAndroid Build Coastguard Worker /**
143*7688df22SAndroid Build Coastguard Worker + * Initialize jpeg test suite
144*7688df22SAndroid Build Coastguard Worker + */
145*7688df22SAndroid Build Coastguard Worker int suite_jpeg_tests_init();
146*7688df22SAndroid Build Coastguard Worker
147*7688df22SAndroid Build Coastguard Worker /**
148*7688df22SAndroid Build Coastguard Worker + * Deinitialize jpeg test suite
149*7688df22SAndroid Build Coastguard Worker + */
150*7688df22SAndroid Build Coastguard Worker int suite_jpeg_tests_clean();
151*7688df22SAndroid Build Coastguard Worker
152*7688df22SAndroid Build Coastguard Worker /**
153*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
154*7688df22SAndroid Build Coastguard Worker */
155*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_jpeg_tests_enable(void);
156*7688df22SAndroid Build Coastguard Worker
157*7688df22SAndroid Build Coastguard Worker /**
158*7688df22SAndroid Build Coastguard Worker + * Tests in vcn test suite
159*7688df22SAndroid Build Coastguard Worker + */
160*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo jpeg_tests[];
161*7688df22SAndroid Build Coastguard Worker
162*7688df22SAndroid Build Coastguard Worker /**
163*7688df22SAndroid Build Coastguard Worker * Initialize uvd enc test suite
164*7688df22SAndroid Build Coastguard Worker */
165*7688df22SAndroid Build Coastguard Worker int suite_uvd_enc_tests_init();
166*7688df22SAndroid Build Coastguard Worker
167*7688df22SAndroid Build Coastguard Worker /**
168*7688df22SAndroid Build Coastguard Worker * Deinitialize uvd enc test suite
169*7688df22SAndroid Build Coastguard Worker */
170*7688df22SAndroid Build Coastguard Worker int suite_uvd_enc_tests_clean();
171*7688df22SAndroid Build Coastguard Worker
172*7688df22SAndroid Build Coastguard Worker /**
173*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
174*7688df22SAndroid Build Coastguard Worker */
175*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_uvd_enc_tests_enable(void);
176*7688df22SAndroid Build Coastguard Worker
177*7688df22SAndroid Build Coastguard Worker /**
178*7688df22SAndroid Build Coastguard Worker * Tests in uvd enc test suite
179*7688df22SAndroid Build Coastguard Worker */
180*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo uvd_enc_tests[];
181*7688df22SAndroid Build Coastguard Worker
182*7688df22SAndroid Build Coastguard Worker /**
183*7688df22SAndroid Build Coastguard Worker * Initialize deadlock test suite
184*7688df22SAndroid Build Coastguard Worker */
185*7688df22SAndroid Build Coastguard Worker int suite_deadlock_tests_init();
186*7688df22SAndroid Build Coastguard Worker
187*7688df22SAndroid Build Coastguard Worker /**
188*7688df22SAndroid Build Coastguard Worker * Deinitialize deadlock test suite
189*7688df22SAndroid Build Coastguard Worker */
190*7688df22SAndroid Build Coastguard Worker int suite_deadlock_tests_clean();
191*7688df22SAndroid Build Coastguard Worker
192*7688df22SAndroid Build Coastguard Worker /**
193*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
194*7688df22SAndroid Build Coastguard Worker */
195*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_deadlock_tests_enable(void);
196*7688df22SAndroid Build Coastguard Worker
197*7688df22SAndroid Build Coastguard Worker /**
198*7688df22SAndroid Build Coastguard Worker * Tests in uvd enc test suite
199*7688df22SAndroid Build Coastguard Worker */
200*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo deadlock_tests[];
201*7688df22SAndroid Build Coastguard Worker
202*7688df22SAndroid Build Coastguard Worker /**
203*7688df22SAndroid Build Coastguard Worker * Initialize vm test suite
204*7688df22SAndroid Build Coastguard Worker */
205*7688df22SAndroid Build Coastguard Worker int suite_vm_tests_init();
206*7688df22SAndroid Build Coastguard Worker
207*7688df22SAndroid Build Coastguard Worker /**
208*7688df22SAndroid Build Coastguard Worker * Deinitialize deadlock test suite
209*7688df22SAndroid Build Coastguard Worker */
210*7688df22SAndroid Build Coastguard Worker int suite_vm_tests_clean();
211*7688df22SAndroid Build Coastguard Worker
212*7688df22SAndroid Build Coastguard Worker /**
213*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
214*7688df22SAndroid Build Coastguard Worker */
215*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_vm_tests_enable(void);
216*7688df22SAndroid Build Coastguard Worker
217*7688df22SAndroid Build Coastguard Worker /**
218*7688df22SAndroid Build Coastguard Worker * Tests in vm test suite
219*7688df22SAndroid Build Coastguard Worker */
220*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo vm_tests[];
221*7688df22SAndroid Build Coastguard Worker
222*7688df22SAndroid Build Coastguard Worker
223*7688df22SAndroid Build Coastguard Worker /**
224*7688df22SAndroid Build Coastguard Worker * Initialize ras test suite
225*7688df22SAndroid Build Coastguard Worker */
226*7688df22SAndroid Build Coastguard Worker int suite_ras_tests_init();
227*7688df22SAndroid Build Coastguard Worker
228*7688df22SAndroid Build Coastguard Worker /**
229*7688df22SAndroid Build Coastguard Worker * Deinitialize deadlock test suite
230*7688df22SAndroid Build Coastguard Worker */
231*7688df22SAndroid Build Coastguard Worker int suite_ras_tests_clean();
232*7688df22SAndroid Build Coastguard Worker
233*7688df22SAndroid Build Coastguard Worker /**
234*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
235*7688df22SAndroid Build Coastguard Worker */
236*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_ras_tests_enable(void);
237*7688df22SAndroid Build Coastguard Worker
238*7688df22SAndroid Build Coastguard Worker /**
239*7688df22SAndroid Build Coastguard Worker * Tests in ras test suite
240*7688df22SAndroid Build Coastguard Worker */
241*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo ras_tests[];
242*7688df22SAndroid Build Coastguard Worker
243*7688df22SAndroid Build Coastguard Worker
244*7688df22SAndroid Build Coastguard Worker /**
245*7688df22SAndroid Build Coastguard Worker * Initialize syncobj timeline test suite
246*7688df22SAndroid Build Coastguard Worker */
247*7688df22SAndroid Build Coastguard Worker int suite_syncobj_timeline_tests_init();
248*7688df22SAndroid Build Coastguard Worker
249*7688df22SAndroid Build Coastguard Worker /**
250*7688df22SAndroid Build Coastguard Worker * Deinitialize syncobj timeline test suite
251*7688df22SAndroid Build Coastguard Worker */
252*7688df22SAndroid Build Coastguard Worker int suite_syncobj_timeline_tests_clean();
253*7688df22SAndroid Build Coastguard Worker
254*7688df22SAndroid Build Coastguard Worker /**
255*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
256*7688df22SAndroid Build Coastguard Worker */
257*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_syncobj_timeline_tests_enable(void);
258*7688df22SAndroid Build Coastguard Worker
259*7688df22SAndroid Build Coastguard Worker /**
260*7688df22SAndroid Build Coastguard Worker * Tests in syncobj timeline test suite
261*7688df22SAndroid Build Coastguard Worker */
262*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo syncobj_timeline_tests[];
263*7688df22SAndroid Build Coastguard Worker
264*7688df22SAndroid Build Coastguard Worker
265*7688df22SAndroid Build Coastguard Worker /**
266*7688df22SAndroid Build Coastguard Worker * Initialize cp dma test suite
267*7688df22SAndroid Build Coastguard Worker */
268*7688df22SAndroid Build Coastguard Worker int suite_cp_dma_tests_init();
269*7688df22SAndroid Build Coastguard Worker
270*7688df22SAndroid Build Coastguard Worker /**
271*7688df22SAndroid Build Coastguard Worker * Deinitialize cp dma test suite
272*7688df22SAndroid Build Coastguard Worker */
273*7688df22SAndroid Build Coastguard Worker int suite_cp_dma_tests_clean();
274*7688df22SAndroid Build Coastguard Worker
275*7688df22SAndroid Build Coastguard Worker /**
276*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
277*7688df22SAndroid Build Coastguard Worker */
278*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_cp_dma_tests_enable(void);
279*7688df22SAndroid Build Coastguard Worker
280*7688df22SAndroid Build Coastguard Worker /**
281*7688df22SAndroid Build Coastguard Worker * Tests in cp dma test suite
282*7688df22SAndroid Build Coastguard Worker */
283*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo cp_dma_tests[];
284*7688df22SAndroid Build Coastguard Worker
285*7688df22SAndroid Build Coastguard Worker /**
286*7688df22SAndroid Build Coastguard Worker * Initialize security test suite
287*7688df22SAndroid Build Coastguard Worker */
288*7688df22SAndroid Build Coastguard Worker int suite_security_tests_init();
289*7688df22SAndroid Build Coastguard Worker
290*7688df22SAndroid Build Coastguard Worker /**
291*7688df22SAndroid Build Coastguard Worker * Deinitialize security test suite
292*7688df22SAndroid Build Coastguard Worker */
293*7688df22SAndroid Build Coastguard Worker int suite_security_tests_clean();
294*7688df22SAndroid Build Coastguard Worker
295*7688df22SAndroid Build Coastguard Worker /**
296*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
297*7688df22SAndroid Build Coastguard Worker */
298*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_security_tests_enable(void);
299*7688df22SAndroid Build Coastguard Worker
300*7688df22SAndroid Build Coastguard Worker /**
301*7688df22SAndroid Build Coastguard Worker * Tests in security test suite
302*7688df22SAndroid Build Coastguard Worker */
303*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo security_tests[];
304*7688df22SAndroid Build Coastguard Worker
305*7688df22SAndroid Build Coastguard Worker extern void
306*7688df22SAndroid Build Coastguard Worker amdgpu_command_submission_write_linear_helper_with_secure(amdgpu_device_handle
307*7688df22SAndroid Build Coastguard Worker device,
308*7688df22SAndroid Build Coastguard Worker unsigned ip_type,
309*7688df22SAndroid Build Coastguard Worker bool secure);
310*7688df22SAndroid Build Coastguard Worker
311*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_dispatch_helper(amdgpu_device_handle device_handle, unsigned ip);
312*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_dispatch_hang_helper(amdgpu_device_handle device_handle, uint32_t ip);
313*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_dispatch_hang_slow_helper(amdgpu_device_handle device_handle, uint32_t ip);
314*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_draw_helper(amdgpu_device_handle device_handle);
315*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_draw_hang_helper(amdgpu_device_handle device_handle);
316*7688df22SAndroid Build Coastguard Worker extern void amdgpu_test_draw_hang_slow_helper(amdgpu_device_handle device_handle);
317*7688df22SAndroid Build Coastguard Worker
318*7688df22SAndroid Build Coastguard Worker /**
319*7688df22SAndroid Build Coastguard Worker * Initialize hotunplug test suite
320*7688df22SAndroid Build Coastguard Worker */
321*7688df22SAndroid Build Coastguard Worker int suite_hotunplug_tests_init();
322*7688df22SAndroid Build Coastguard Worker
323*7688df22SAndroid Build Coastguard Worker /**
324*7688df22SAndroid Build Coastguard Worker * Deinitialize hotunplug test suite
325*7688df22SAndroid Build Coastguard Worker */
326*7688df22SAndroid Build Coastguard Worker int suite_hotunplug_tests_clean();
327*7688df22SAndroid Build Coastguard Worker
328*7688df22SAndroid Build Coastguard Worker /**
329*7688df22SAndroid Build Coastguard Worker * Decide if the suite is enabled by default or not.
330*7688df22SAndroid Build Coastguard Worker */
331*7688df22SAndroid Build Coastguard Worker CU_BOOL suite_hotunplug_tests_enable(void);
332*7688df22SAndroid Build Coastguard Worker
333*7688df22SAndroid Build Coastguard Worker /**
334*7688df22SAndroid Build Coastguard Worker * Tests in uvd enc test suite
335*7688df22SAndroid Build Coastguard Worker */
336*7688df22SAndroid Build Coastguard Worker extern CU_TestInfo hotunplug_tests[];
337*7688df22SAndroid Build Coastguard Worker
338*7688df22SAndroid Build Coastguard Worker
339*7688df22SAndroid Build Coastguard Worker /**
340*7688df22SAndroid Build Coastguard Worker * Helper functions
341*7688df22SAndroid Build Coastguard Worker */
gpu_mem_alloc(amdgpu_device_handle device_handle,uint64_t size,uint64_t alignment,uint32_t type,uint64_t flags,uint64_t * vmc_addr,amdgpu_va_handle * va_handle)342*7688df22SAndroid Build Coastguard Worker static inline amdgpu_bo_handle gpu_mem_alloc(
343*7688df22SAndroid Build Coastguard Worker amdgpu_device_handle device_handle,
344*7688df22SAndroid Build Coastguard Worker uint64_t size,
345*7688df22SAndroid Build Coastguard Worker uint64_t alignment,
346*7688df22SAndroid Build Coastguard Worker uint32_t type,
347*7688df22SAndroid Build Coastguard Worker uint64_t flags,
348*7688df22SAndroid Build Coastguard Worker uint64_t *vmc_addr,
349*7688df22SAndroid Build Coastguard Worker amdgpu_va_handle *va_handle)
350*7688df22SAndroid Build Coastguard Worker {
351*7688df22SAndroid Build Coastguard Worker struct amdgpu_bo_alloc_request req = {0};
352*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle buf_handle = NULL;
353*7688df22SAndroid Build Coastguard Worker int r;
354*7688df22SAndroid Build Coastguard Worker
355*7688df22SAndroid Build Coastguard Worker req.alloc_size = size;
356*7688df22SAndroid Build Coastguard Worker req.phys_alignment = alignment;
357*7688df22SAndroid Build Coastguard Worker req.preferred_heap = type;
358*7688df22SAndroid Build Coastguard Worker req.flags = flags;
359*7688df22SAndroid Build Coastguard Worker
360*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_alloc(device_handle, &req, &buf_handle);
361*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
362*7688df22SAndroid Build Coastguard Worker if (r)
363*7688df22SAndroid Build Coastguard Worker return NULL;
364*7688df22SAndroid Build Coastguard Worker
365*7688df22SAndroid Build Coastguard Worker if (vmc_addr && va_handle) {
366*7688df22SAndroid Build Coastguard Worker r = amdgpu_va_range_alloc(device_handle,
367*7688df22SAndroid Build Coastguard Worker amdgpu_gpu_va_range_general,
368*7688df22SAndroid Build Coastguard Worker size, alignment, 0, vmc_addr,
369*7688df22SAndroid Build Coastguard Worker va_handle, 0);
370*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
371*7688df22SAndroid Build Coastguard Worker if (r)
372*7688df22SAndroid Build Coastguard Worker goto error_free_bo;
373*7688df22SAndroid Build Coastguard Worker
374*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_va_op(buf_handle, 0, size, *vmc_addr, 0,
375*7688df22SAndroid Build Coastguard Worker AMDGPU_VA_OP_MAP);
376*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
377*7688df22SAndroid Build Coastguard Worker if (r)
378*7688df22SAndroid Build Coastguard Worker goto error_free_va;
379*7688df22SAndroid Build Coastguard Worker }
380*7688df22SAndroid Build Coastguard Worker
381*7688df22SAndroid Build Coastguard Worker return buf_handle;
382*7688df22SAndroid Build Coastguard Worker
383*7688df22SAndroid Build Coastguard Worker error_free_va:
384*7688df22SAndroid Build Coastguard Worker r = amdgpu_va_range_free(*va_handle);
385*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
386*7688df22SAndroid Build Coastguard Worker
387*7688df22SAndroid Build Coastguard Worker error_free_bo:
388*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_free(buf_handle);
389*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
390*7688df22SAndroid Build Coastguard Worker
391*7688df22SAndroid Build Coastguard Worker return NULL;
392*7688df22SAndroid Build Coastguard Worker }
393*7688df22SAndroid Build Coastguard Worker
gpu_mem_free(amdgpu_bo_handle bo,amdgpu_va_handle va_handle,uint64_t vmc_addr,uint64_t size)394*7688df22SAndroid Build Coastguard Worker static inline int gpu_mem_free(amdgpu_bo_handle bo,
395*7688df22SAndroid Build Coastguard Worker amdgpu_va_handle va_handle,
396*7688df22SAndroid Build Coastguard Worker uint64_t vmc_addr,
397*7688df22SAndroid Build Coastguard Worker uint64_t size)
398*7688df22SAndroid Build Coastguard Worker {
399*7688df22SAndroid Build Coastguard Worker int r;
400*7688df22SAndroid Build Coastguard Worker
401*7688df22SAndroid Build Coastguard Worker if (!bo)
402*7688df22SAndroid Build Coastguard Worker return 0;
403*7688df22SAndroid Build Coastguard Worker
404*7688df22SAndroid Build Coastguard Worker if (va_handle) {
405*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_va_op(bo, 0, size, vmc_addr, 0,
406*7688df22SAndroid Build Coastguard Worker AMDGPU_VA_OP_UNMAP);
407*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
408*7688df22SAndroid Build Coastguard Worker if (r)
409*7688df22SAndroid Build Coastguard Worker return r;
410*7688df22SAndroid Build Coastguard Worker
411*7688df22SAndroid Build Coastguard Worker r = amdgpu_va_range_free(va_handle);
412*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
413*7688df22SAndroid Build Coastguard Worker if (r)
414*7688df22SAndroid Build Coastguard Worker return r;
415*7688df22SAndroid Build Coastguard Worker }
416*7688df22SAndroid Build Coastguard Worker
417*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_free(bo);
418*7688df22SAndroid Build Coastguard Worker CU_ASSERT_EQUAL(r, 0);
419*7688df22SAndroid Build Coastguard Worker
420*7688df22SAndroid Build Coastguard Worker return r;
421*7688df22SAndroid Build Coastguard Worker }
422*7688df22SAndroid Build Coastguard Worker
423*7688df22SAndroid Build Coastguard Worker static inline int
amdgpu_bo_alloc_wrap(amdgpu_device_handle dev,unsigned size,unsigned alignment,unsigned heap,uint64_t flags,amdgpu_bo_handle * bo)424*7688df22SAndroid Build Coastguard Worker amdgpu_bo_alloc_wrap(amdgpu_device_handle dev, unsigned size,
425*7688df22SAndroid Build Coastguard Worker unsigned alignment, unsigned heap, uint64_t flags,
426*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle *bo)
427*7688df22SAndroid Build Coastguard Worker {
428*7688df22SAndroid Build Coastguard Worker struct amdgpu_bo_alloc_request request = {};
429*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle buf_handle;
430*7688df22SAndroid Build Coastguard Worker int r;
431*7688df22SAndroid Build Coastguard Worker
432*7688df22SAndroid Build Coastguard Worker request.alloc_size = size;
433*7688df22SAndroid Build Coastguard Worker request.phys_alignment = alignment;
434*7688df22SAndroid Build Coastguard Worker request.preferred_heap = heap;
435*7688df22SAndroid Build Coastguard Worker request.flags = flags;
436*7688df22SAndroid Build Coastguard Worker
437*7688df22SAndroid Build Coastguard Worker r = amdgpu_bo_alloc(dev, &request, &buf_handle);
438*7688df22SAndroid Build Coastguard Worker if (r)
439*7688df22SAndroid Build Coastguard Worker return r;
440*7688df22SAndroid Build Coastguard Worker
441*7688df22SAndroid Build Coastguard Worker *bo = buf_handle;
442*7688df22SAndroid Build Coastguard Worker
443*7688df22SAndroid Build Coastguard Worker return 0;
444*7688df22SAndroid Build Coastguard Worker }
445*7688df22SAndroid Build Coastguard Worker
446*7688df22SAndroid Build Coastguard Worker int amdgpu_bo_alloc_and_map_raw(amdgpu_device_handle dev, unsigned size,
447*7688df22SAndroid Build Coastguard Worker unsigned alignment, unsigned heap, uint64_t alloc_flags,
448*7688df22SAndroid Build Coastguard Worker uint64_t mapping_flags, amdgpu_bo_handle *bo, void **cpu,
449*7688df22SAndroid Build Coastguard Worker uint64_t *mc_address,
450*7688df22SAndroid Build Coastguard Worker amdgpu_va_handle *va_handle);
451*7688df22SAndroid Build Coastguard Worker
452*7688df22SAndroid Build Coastguard Worker static inline int
amdgpu_bo_alloc_and_map(amdgpu_device_handle dev,unsigned size,unsigned alignment,unsigned heap,uint64_t alloc_flags,amdgpu_bo_handle * bo,void ** cpu,uint64_t * mc_address,amdgpu_va_handle * va_handle)453*7688df22SAndroid Build Coastguard Worker amdgpu_bo_alloc_and_map(amdgpu_device_handle dev, unsigned size,
454*7688df22SAndroid Build Coastguard Worker unsigned alignment, unsigned heap, uint64_t alloc_flags,
455*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle *bo, void **cpu, uint64_t *mc_address,
456*7688df22SAndroid Build Coastguard Worker amdgpu_va_handle *va_handle)
457*7688df22SAndroid Build Coastguard Worker {
458*7688df22SAndroid Build Coastguard Worker return amdgpu_bo_alloc_and_map_raw(dev, size, alignment, heap,
459*7688df22SAndroid Build Coastguard Worker alloc_flags, 0, bo, cpu, mc_address, va_handle);
460*7688df22SAndroid Build Coastguard Worker }
461*7688df22SAndroid Build Coastguard Worker
462*7688df22SAndroid Build Coastguard Worker static inline int
amdgpu_bo_unmap_and_free(amdgpu_bo_handle bo,amdgpu_va_handle va_handle,uint64_t mc_addr,uint64_t size)463*7688df22SAndroid Build Coastguard Worker amdgpu_bo_unmap_and_free(amdgpu_bo_handle bo, amdgpu_va_handle va_handle,
464*7688df22SAndroid Build Coastguard Worker uint64_t mc_addr, uint64_t size)
465*7688df22SAndroid Build Coastguard Worker {
466*7688df22SAndroid Build Coastguard Worker amdgpu_bo_cpu_unmap(bo);
467*7688df22SAndroid Build Coastguard Worker amdgpu_bo_va_op(bo, 0, size, mc_addr, 0, AMDGPU_VA_OP_UNMAP);
468*7688df22SAndroid Build Coastguard Worker amdgpu_va_range_free(va_handle);
469*7688df22SAndroid Build Coastguard Worker amdgpu_bo_free(bo);
470*7688df22SAndroid Build Coastguard Worker
471*7688df22SAndroid Build Coastguard Worker return 0;
472*7688df22SAndroid Build Coastguard Worker
473*7688df22SAndroid Build Coastguard Worker }
474*7688df22SAndroid Build Coastguard Worker
475*7688df22SAndroid Build Coastguard Worker static inline int
amdgpu_get_bo_list(amdgpu_device_handle dev,amdgpu_bo_handle bo1,amdgpu_bo_handle bo2,amdgpu_bo_list_handle * list)476*7688df22SAndroid Build Coastguard Worker amdgpu_get_bo_list(amdgpu_device_handle dev, amdgpu_bo_handle bo1,
477*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle bo2, amdgpu_bo_list_handle *list)
478*7688df22SAndroid Build Coastguard Worker {
479*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle resources[] = {bo1, bo2};
480*7688df22SAndroid Build Coastguard Worker
481*7688df22SAndroid Build Coastguard Worker return amdgpu_bo_list_create(dev, bo2 ? 2 : 1, resources, NULL, list);
482*7688df22SAndroid Build Coastguard Worker }
483*7688df22SAndroid Build Coastguard Worker
484*7688df22SAndroid Build Coastguard Worker
amdgpu_set_suite_active(const char * suite_name,CU_BOOL active)485*7688df22SAndroid Build Coastguard Worker static inline CU_ErrorCode amdgpu_set_suite_active(const char *suite_name,
486*7688df22SAndroid Build Coastguard Worker CU_BOOL active)
487*7688df22SAndroid Build Coastguard Worker {
488*7688df22SAndroid Build Coastguard Worker CU_ErrorCode r = CU_set_suite_active(CU_get_suite(suite_name), active);
489*7688df22SAndroid Build Coastguard Worker
490*7688df22SAndroid Build Coastguard Worker if (r != CUE_SUCCESS)
491*7688df22SAndroid Build Coastguard Worker fprintf(stderr, "Failed to obtain suite %s\n", suite_name);
492*7688df22SAndroid Build Coastguard Worker
493*7688df22SAndroid Build Coastguard Worker return r;
494*7688df22SAndroid Build Coastguard Worker }
495*7688df22SAndroid Build Coastguard Worker
amdgpu_set_test_active(const char * suite_name,const char * test_name,CU_BOOL active)496*7688df22SAndroid Build Coastguard Worker static inline CU_ErrorCode amdgpu_set_test_active(const char *suite_name,
497*7688df22SAndroid Build Coastguard Worker const char *test_name, CU_BOOL active)
498*7688df22SAndroid Build Coastguard Worker {
499*7688df22SAndroid Build Coastguard Worker CU_ErrorCode r;
500*7688df22SAndroid Build Coastguard Worker CU_pSuite pSuite = CU_get_suite(suite_name);
501*7688df22SAndroid Build Coastguard Worker
502*7688df22SAndroid Build Coastguard Worker if (!pSuite) {
503*7688df22SAndroid Build Coastguard Worker fprintf(stderr, "Failed to obtain suite %s\n",
504*7688df22SAndroid Build Coastguard Worker suite_name);
505*7688df22SAndroid Build Coastguard Worker return CUE_NOSUITE;
506*7688df22SAndroid Build Coastguard Worker }
507*7688df22SAndroid Build Coastguard Worker
508*7688df22SAndroid Build Coastguard Worker r = CU_set_test_active(CU_get_test(pSuite, test_name), active);
509*7688df22SAndroid Build Coastguard Worker if (r != CUE_SUCCESS)
510*7688df22SAndroid Build Coastguard Worker fprintf(stderr, "Failed to obtain test %s\n", test_name);
511*7688df22SAndroid Build Coastguard Worker
512*7688df22SAndroid Build Coastguard Worker return r;
513*7688df22SAndroid Build Coastguard Worker }
514*7688df22SAndroid Build Coastguard Worker
515*7688df22SAndroid Build Coastguard Worker
asic_is_gfx_pipe_removed(uint32_t family_id,uint32_t chip_id,uint32_t chip_rev)516*7688df22SAndroid Build Coastguard Worker static inline bool asic_is_gfx_pipe_removed(uint32_t family_id, uint32_t chip_id, uint32_t chip_rev)
517*7688df22SAndroid Build Coastguard Worker {
518*7688df22SAndroid Build Coastguard Worker
519*7688df22SAndroid Build Coastguard Worker if (family_id != AMDGPU_FAMILY_AI)
520*7688df22SAndroid Build Coastguard Worker return false;
521*7688df22SAndroid Build Coastguard Worker
522*7688df22SAndroid Build Coastguard Worker switch (chip_id - chip_rev) {
523*7688df22SAndroid Build Coastguard Worker /* Arcturus */
524*7688df22SAndroid Build Coastguard Worker case 0x32:
525*7688df22SAndroid Build Coastguard Worker /* Aldebaran */
526*7688df22SAndroid Build Coastguard Worker case 0x3c:
527*7688df22SAndroid Build Coastguard Worker return true;
528*7688df22SAndroid Build Coastguard Worker default:
529*7688df22SAndroid Build Coastguard Worker return false;
530*7688df22SAndroid Build Coastguard Worker }
531*7688df22SAndroid Build Coastguard Worker }
532*7688df22SAndroid Build Coastguard Worker
533*7688df22SAndroid Build Coastguard Worker void amdgpu_test_exec_cs_helper_raw(amdgpu_device_handle device_handle,
534*7688df22SAndroid Build Coastguard Worker amdgpu_context_handle context_handle,
535*7688df22SAndroid Build Coastguard Worker unsigned ip_type, int instance, int pm4_dw,
536*7688df22SAndroid Build Coastguard Worker uint32_t *pm4_src, int res_cnt,
537*7688df22SAndroid Build Coastguard Worker amdgpu_bo_handle *resources,
538*7688df22SAndroid Build Coastguard Worker struct amdgpu_cs_ib_info *ib_info,
539*7688df22SAndroid Build Coastguard Worker struct amdgpu_cs_request *ibs_request,
540*7688df22SAndroid Build Coastguard Worker bool secure);
541*7688df22SAndroid Build Coastguard Worker
542*7688df22SAndroid Build Coastguard Worker void amdgpu_close_devices();
543*7688df22SAndroid Build Coastguard Worker int amdgpu_open_device_on_test_index(int render_node);
544*7688df22SAndroid Build Coastguard Worker char *amdgpu_get_device_from_fd(int fd);
545*7688df22SAndroid Build Coastguard Worker
546*7688df22SAndroid Build Coastguard Worker #endif /* #ifdef _AMDGPU_TEST_H_ */
547