13f012e29Smrg/* 23f012e29Smrg * Copyright 2014 Advanced Micro Devices, Inc. 33f012e29Smrg * 43f012e29Smrg * Permission is hereby granted, free of charge, to any person obtaining a 53f012e29Smrg * copy of this software and associated documentation files (the "Software"), 63f012e29Smrg * to deal in the Software without restriction, including without limitation 73f012e29Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 83f012e29Smrg * and/or sell copies of the Software, and to permit persons to whom the 93f012e29Smrg * Software is furnished to do so, subject to the following conditions: 103f012e29Smrg * 113f012e29Smrg * The above copyright notice and this permission notice shall be included in 123f012e29Smrg * all copies or substantial portions of the Software. 133f012e29Smrg * 143f012e29Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 153f012e29Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 163f012e29Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 173f012e29Smrg * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 183f012e29Smrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 193f012e29Smrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 203f012e29Smrg * OTHER DEALINGS IN THE SOFTWARE. 213f012e29Smrg * 223f012e29Smrg*/ 233f012e29Smrg 243f012e29Smrg#ifndef _AMDGPU_TEST_H_ 253f012e29Smrg#define _AMDGPU_TEST_H_ 263f012e29Smrg 273f012e29Smrg#include "amdgpu.h" 283f012e29Smrg#include "amdgpu_drm.h" 293f012e29Smrg 303f012e29Smrg/** 313f012e29Smrg * Define max. number of card in system which we are able to handle 323f012e29Smrg */ 337cdc0497Smrg#define MAX_CARDS_SUPPORTED 128 343f012e29Smrg 353f012e29Smrg/* Forward reference for array to keep "drm" handles */ 363f012e29Smrgextern int drm_amdgpu[MAX_CARDS_SUPPORTED]; 373f012e29Smrg 38037b3c26Smrg/* Global variables */ 39037b3c26Smrgextern int open_render_node; 40037b3c26Smrg 413f012e29Smrg/************************* Basic test suite ********************************/ 423f012e29Smrg 433f012e29Smrg/* 443f012e29Smrg * Define basic test suite to serve as the starting point for future testing 453f012e29Smrg*/ 463f012e29Smrg 473f012e29Smrg/** 483f012e29Smrg * Initialize basic test suite 493f012e29Smrg */ 503f012e29Smrgint suite_basic_tests_init(); 513f012e29Smrg 523f012e29Smrg/** 533f012e29Smrg * Deinitialize basic test suite 543f012e29Smrg */ 553f012e29Smrgint suite_basic_tests_clean(); 563f012e29Smrg 5741687f09Smrg/** 5841687f09Smrg * Decide if the suite is enabled by default or not. 5941687f09Smrg */ 6041687f09SmrgCU_BOOL suite_basic_tests_enable(void); 6141687f09Smrg 623f012e29Smrg/** 633f012e29Smrg * Tests in basic test suite 643f012e29Smrg */ 653f012e29Smrgextern CU_TestInfo basic_tests[]; 663f012e29Smrg 673f012e29Smrg/** 683f012e29Smrg * Initialize bo test suite 693f012e29Smrg */ 703f012e29Smrgint suite_bo_tests_init(); 713f012e29Smrg 723f012e29Smrg/** 733f012e29Smrg * Deinitialize bo test suite 743f012e29Smrg */ 753f012e29Smrgint suite_bo_tests_clean(); 763f012e29Smrg 773f012e29Smrg/** 783f012e29Smrg * Tests in bo test suite 793f012e29Smrg */ 803f012e29Smrgextern CU_TestInfo bo_tests[]; 813f012e29Smrg 823f012e29Smrg/** 833f012e29Smrg * Initialize cs test suite 843f012e29Smrg */ 853f012e29Smrgint suite_cs_tests_init(); 863f012e29Smrg 873f012e29Smrg/** 883f012e29Smrg * Deinitialize cs test suite 893f012e29Smrg */ 903f012e29Smrgint suite_cs_tests_clean(); 913f012e29Smrg 9200a23bdaSmrg/** 9300a23bdaSmrg * Decide if the suite is enabled by default or not. 9400a23bdaSmrg */ 9500a23bdaSmrgCU_BOOL suite_cs_tests_enable(void); 9600a23bdaSmrg 973f012e29Smrg/** 983f012e29Smrg * Tests in cs test suite 993f012e29Smrg */ 1003f012e29Smrgextern CU_TestInfo cs_tests[]; 1013f012e29Smrg 1023f012e29Smrg/** 1033f012e29Smrg * Initialize vce test suite 1043f012e29Smrg */ 1053f012e29Smrgint suite_vce_tests_init(); 1063f012e29Smrg 1073f012e29Smrg/** 1083f012e29Smrg * Deinitialize vce test suite 1093f012e29Smrg */ 1103f012e29Smrgint suite_vce_tests_clean(); 1113f012e29Smrg 11200a23bdaSmrg/** 11300a23bdaSmrg * Decide if the suite is enabled by default or not. 11400a23bdaSmrg */ 11500a23bdaSmrgCU_BOOL suite_vce_tests_enable(void); 11600a23bdaSmrg 1173f012e29Smrg/** 1183f012e29Smrg * Tests in vce test suite 1193f012e29Smrg */ 1203f012e29Smrgextern CU_TestInfo vce_tests[]; 1213f012e29Smrg 122d8807b2fSmrg/** 123d8807b2fSmrg+ * Initialize vcn test suite 124d8807b2fSmrg+ */ 125d8807b2fSmrgint suite_vcn_tests_init(); 126d8807b2fSmrg 127d8807b2fSmrg/** 128d8807b2fSmrg+ * Deinitialize vcn test suite 129d8807b2fSmrg+ */ 130d8807b2fSmrgint suite_vcn_tests_clean(); 131d8807b2fSmrg 13200a23bdaSmrg/** 13300a23bdaSmrg * Decide if the suite is enabled by default or not. 13400a23bdaSmrg */ 13500a23bdaSmrgCU_BOOL suite_vcn_tests_enable(void); 13600a23bdaSmrg 137d8807b2fSmrg/** 138d8807b2fSmrg+ * Tests in vcn test suite 139d8807b2fSmrg+ */ 140d8807b2fSmrgextern CU_TestInfo vcn_tests[]; 141d8807b2fSmrg 1420ed5401bSmrg/** 1430ed5401bSmrg+ * Initialize jpeg test suite 1440ed5401bSmrg+ */ 1450ed5401bSmrgint suite_jpeg_tests_init(); 1460ed5401bSmrg 1470ed5401bSmrg/** 1480ed5401bSmrg+ * Deinitialize jpeg test suite 1490ed5401bSmrg+ */ 1500ed5401bSmrgint suite_jpeg_tests_clean(); 1510ed5401bSmrg 1520ed5401bSmrg/** 1530ed5401bSmrg * Decide if the suite is enabled by default or not. 1540ed5401bSmrg */ 1550ed5401bSmrgCU_BOOL suite_jpeg_tests_enable(void); 1560ed5401bSmrg 1570ed5401bSmrg/** 1580ed5401bSmrg+ * Tests in vcn test suite 1590ed5401bSmrg+ */ 1600ed5401bSmrgextern CU_TestInfo jpeg_tests[]; 1610ed5401bSmrg 162d8807b2fSmrg/** 163d8807b2fSmrg * Initialize uvd enc test suite 164d8807b2fSmrg */ 165d8807b2fSmrgint suite_uvd_enc_tests_init(); 166d8807b2fSmrg 167d8807b2fSmrg/** 168d8807b2fSmrg * Deinitialize uvd enc test suite 169d8807b2fSmrg */ 170d8807b2fSmrgint suite_uvd_enc_tests_clean(); 171d8807b2fSmrg 17200a23bdaSmrg/** 17300a23bdaSmrg * Decide if the suite is enabled by default or not. 17400a23bdaSmrg */ 17500a23bdaSmrgCU_BOOL suite_uvd_enc_tests_enable(void); 17600a23bdaSmrg 177d8807b2fSmrg/** 178d8807b2fSmrg * Tests in uvd enc test suite 179d8807b2fSmrg */ 180d8807b2fSmrgextern CU_TestInfo uvd_enc_tests[]; 181d8807b2fSmrg 18200a23bdaSmrg/** 18300a23bdaSmrg * Initialize deadlock test suite 18400a23bdaSmrg */ 18500a23bdaSmrgint suite_deadlock_tests_init(); 18600a23bdaSmrg 18700a23bdaSmrg/** 18800a23bdaSmrg * Deinitialize deadlock test suite 18900a23bdaSmrg */ 19000a23bdaSmrgint suite_deadlock_tests_clean(); 19100a23bdaSmrg 19200a23bdaSmrg/** 19300a23bdaSmrg * Decide if the suite is enabled by default or not. 19400a23bdaSmrg */ 19500a23bdaSmrgCU_BOOL suite_deadlock_tests_enable(void); 19600a23bdaSmrg 19700a23bdaSmrg/** 19800a23bdaSmrg * Tests in uvd enc test suite 19900a23bdaSmrg */ 20000a23bdaSmrgextern CU_TestInfo deadlock_tests[]; 20100a23bdaSmrg 20200a23bdaSmrg/** 20300a23bdaSmrg * Initialize vm test suite 20400a23bdaSmrg */ 20500a23bdaSmrgint suite_vm_tests_init(); 20600a23bdaSmrg 20700a23bdaSmrg/** 20800a23bdaSmrg * Deinitialize deadlock test suite 20900a23bdaSmrg */ 21000a23bdaSmrgint suite_vm_tests_clean(); 21100a23bdaSmrg 21200a23bdaSmrg/** 21300a23bdaSmrg * Decide if the suite is enabled by default or not. 21400a23bdaSmrg */ 21500a23bdaSmrgCU_BOOL suite_vm_tests_enable(void); 21600a23bdaSmrg 21700a23bdaSmrg/** 21800a23bdaSmrg * Tests in vm test suite 21900a23bdaSmrg */ 22000a23bdaSmrgextern CU_TestInfo vm_tests[]; 22100a23bdaSmrg 2225324fb0dSmrg 2235324fb0dSmrg/** 2245324fb0dSmrg * Initialize ras test suite 2255324fb0dSmrg */ 2265324fb0dSmrgint suite_ras_tests_init(); 2275324fb0dSmrg 2285324fb0dSmrg/** 2295324fb0dSmrg * Deinitialize deadlock test suite 2305324fb0dSmrg */ 2315324fb0dSmrgint suite_ras_tests_clean(); 2325324fb0dSmrg 2335324fb0dSmrg/** 2345324fb0dSmrg * Decide if the suite is enabled by default or not. 2355324fb0dSmrg */ 2365324fb0dSmrgCU_BOOL suite_ras_tests_enable(void); 2375324fb0dSmrg 2385324fb0dSmrg/** 2395324fb0dSmrg * Tests in ras test suite 2405324fb0dSmrg */ 2415324fb0dSmrgextern CU_TestInfo ras_tests[]; 2425324fb0dSmrg 2435324fb0dSmrg 2445324fb0dSmrg/** 2455324fb0dSmrg * Initialize syncobj timeline test suite 2465324fb0dSmrg */ 2475324fb0dSmrgint suite_syncobj_timeline_tests_init(); 2485324fb0dSmrg 2495324fb0dSmrg/** 2505324fb0dSmrg * Deinitialize syncobj timeline test suite 2515324fb0dSmrg */ 2525324fb0dSmrgint suite_syncobj_timeline_tests_clean(); 2535324fb0dSmrg 2545324fb0dSmrg/** 2555324fb0dSmrg * Decide if the suite is enabled by default or not. 2565324fb0dSmrg */ 2575324fb0dSmrgCU_BOOL suite_syncobj_timeline_tests_enable(void); 2585324fb0dSmrg 2595324fb0dSmrg/** 2605324fb0dSmrg * Tests in syncobj timeline test suite 2615324fb0dSmrg */ 2625324fb0dSmrgextern CU_TestInfo syncobj_timeline_tests[]; 2635324fb0dSmrg 2640ed5401bSmrg 2650ed5401bSmrg/** 2660ed5401bSmrg * Initialize cp dma test suite 2670ed5401bSmrg */ 2680ed5401bSmrgint suite_cp_dma_tests_init(); 2690ed5401bSmrg 2700ed5401bSmrg/** 2710ed5401bSmrg * Deinitialize cp dma test suite 2720ed5401bSmrg */ 2730ed5401bSmrgint suite_cp_dma_tests_clean(); 2740ed5401bSmrg 2750ed5401bSmrg/** 2760ed5401bSmrg * Decide if the suite is enabled by default or not. 2770ed5401bSmrg */ 2780ed5401bSmrgCU_BOOL suite_cp_dma_tests_enable(void); 2790ed5401bSmrg 2800ed5401bSmrg/** 2810ed5401bSmrg * Tests in cp dma test suite 2820ed5401bSmrg */ 2830ed5401bSmrgextern CU_TestInfo cp_dma_tests[]; 2840ed5401bSmrg 28541687f09Smrg/** 28641687f09Smrg * Initialize security test suite 28741687f09Smrg */ 28841687f09Smrgint suite_security_tests_init(); 28941687f09Smrg 29041687f09Smrg/** 29141687f09Smrg * Deinitialize security test suite 29241687f09Smrg */ 29341687f09Smrgint suite_security_tests_clean(); 29441687f09Smrg 29541687f09Smrg/** 29641687f09Smrg * Decide if the suite is enabled by default or not. 29741687f09Smrg */ 29841687f09SmrgCU_BOOL suite_security_tests_enable(void); 29941687f09Smrg 30041687f09Smrg/** 30141687f09Smrg * Tests in security test suite 30241687f09Smrg */ 30341687f09Smrgextern CU_TestInfo security_tests[]; 30441687f09Smrg 30541687f09Smrgextern void 30641687f09Smrgamdgpu_command_submission_write_linear_helper_with_secure(amdgpu_device_handle 30741687f09Smrg device, 30841687f09Smrg unsigned ip_type, 30941687f09Smrg bool secure); 31041687f09Smrg 311b0ab5608Smrgextern void amdgpu_test_dispatch_helper(amdgpu_device_handle device_handle, unsigned ip); 312b0ab5608Smrgextern void amdgpu_test_dispatch_hang_helper(amdgpu_device_handle device_handle, uint32_t ip); 313b0ab5608Smrgextern void amdgpu_test_dispatch_hang_slow_helper(amdgpu_device_handle device_handle, uint32_t ip); 314b0ab5608Smrgextern void amdgpu_test_draw_helper(amdgpu_device_handle device_handle); 315b0ab5608Smrgextern void amdgpu_test_draw_hang_helper(amdgpu_device_handle device_handle); 316b0ab5608Smrgextern void amdgpu_test_draw_hang_slow_helper(amdgpu_device_handle device_handle); 3174babd585Smrg 3184babd585Smrg/** 3194babd585Smrg * Initialize hotunplug test suite 3204babd585Smrg */ 3214babd585Smrgint suite_hotunplug_tests_init(); 3224babd585Smrg 3234babd585Smrg/** 3244babd585Smrg * Deinitialize hotunplug test suite 3254babd585Smrg */ 3264babd585Smrgint suite_hotunplug_tests_clean(); 3274babd585Smrg 3284babd585Smrg/** 3294babd585Smrg * Decide if the suite is enabled by default or not. 3304babd585Smrg */ 3314babd585SmrgCU_BOOL suite_hotunplug_tests_enable(void); 3324babd585Smrg 3334babd585Smrg/** 3344babd585Smrg * Tests in uvd enc test suite 3354babd585Smrg */ 3364babd585Smrgextern CU_TestInfo hotunplug_tests[]; 3374babd585Smrg 3384babd585Smrg 3393f012e29Smrg/** 3403f012e29Smrg * Helper functions 3413f012e29Smrg */ 3423f012e29Smrgstatic inline amdgpu_bo_handle gpu_mem_alloc( 3433f012e29Smrg amdgpu_device_handle device_handle, 3443f012e29Smrg uint64_t size, 3453f012e29Smrg uint64_t alignment, 3463f012e29Smrg uint32_t type, 3473f012e29Smrg uint64_t flags, 3483f012e29Smrg uint64_t *vmc_addr, 3493f012e29Smrg amdgpu_va_handle *va_handle) 3503f012e29Smrg{ 3513f012e29Smrg struct amdgpu_bo_alloc_request req = {0}; 3527cdc0497Smrg amdgpu_bo_handle buf_handle = NULL; 3533f012e29Smrg int r; 3543f012e29Smrg 3553f012e29Smrg req.alloc_size = size; 3563f012e29Smrg req.phys_alignment = alignment; 3573f012e29Smrg req.preferred_heap = type; 3583f012e29Smrg req.flags = flags; 3593f012e29Smrg 3603f012e29Smrg r = amdgpu_bo_alloc(device_handle, &req, &buf_handle); 3613f012e29Smrg CU_ASSERT_EQUAL(r, 0); 3627cdc0497Smrg if (r) 3637cdc0497Smrg return NULL; 3647cdc0497Smrg 3657cdc0497Smrg if (vmc_addr && va_handle) { 3667cdc0497Smrg r = amdgpu_va_range_alloc(device_handle, 3677cdc0497Smrg amdgpu_gpu_va_range_general, 3687cdc0497Smrg size, alignment, 0, vmc_addr, 3697cdc0497Smrg va_handle, 0); 3707cdc0497Smrg CU_ASSERT_EQUAL(r, 0); 3717cdc0497Smrg if (r) 3727cdc0497Smrg goto error_free_bo; 3737cdc0497Smrg 3747cdc0497Smrg r = amdgpu_bo_va_op(buf_handle, 0, size, *vmc_addr, 0, 3757cdc0497Smrg AMDGPU_VA_OP_MAP); 3767cdc0497Smrg CU_ASSERT_EQUAL(r, 0); 3777cdc0497Smrg if (r) 3787cdc0497Smrg goto error_free_va; 3797cdc0497Smrg } 3807cdc0497Smrg 3817cdc0497Smrg return buf_handle; 3823f012e29Smrg 3837cdc0497Smrgerror_free_va: 3847cdc0497Smrg r = amdgpu_va_range_free(*va_handle); 3853f012e29Smrg CU_ASSERT_EQUAL(r, 0); 3863f012e29Smrg 3877cdc0497Smrgerror_free_bo: 3887cdc0497Smrg r = amdgpu_bo_free(buf_handle); 3893f012e29Smrg CU_ASSERT_EQUAL(r, 0); 3903f012e29Smrg 3917cdc0497Smrg return NULL; 3923f012e29Smrg} 3933f012e29Smrg 3943f012e29Smrgstatic inline int gpu_mem_free(amdgpu_bo_handle bo, 3953f012e29Smrg amdgpu_va_handle va_handle, 3963f012e29Smrg uint64_t vmc_addr, 3973f012e29Smrg uint64_t size) 3983f012e29Smrg{ 3993f012e29Smrg int r; 4003f012e29Smrg 4017cdc0497Smrg if (!bo) 4027cdc0497Smrg return 0; 4033f012e29Smrg 4047cdc0497Smrg if (va_handle) { 4057cdc0497Smrg r = amdgpu_bo_va_op(bo, 0, size, vmc_addr, 0, 4067cdc0497Smrg AMDGPU_VA_OP_UNMAP); 4077cdc0497Smrg CU_ASSERT_EQUAL(r, 0); 4087cdc0497Smrg if (r) 4097cdc0497Smrg return r; 4107cdc0497Smrg 4117cdc0497Smrg r = amdgpu_va_range_free(va_handle); 4127cdc0497Smrg CU_ASSERT_EQUAL(r, 0); 4137cdc0497Smrg if (r) 4147cdc0497Smrg return r; 4157cdc0497Smrg } 4163f012e29Smrg 4173f012e29Smrg r = amdgpu_bo_free(bo); 4183f012e29Smrg CU_ASSERT_EQUAL(r, 0); 4193f012e29Smrg 4207cdc0497Smrg return r; 4213f012e29Smrg} 4223f012e29Smrg 42300a23bdaSmrgstatic inline int 42400a23bdaSmrgamdgpu_bo_alloc_wrap(amdgpu_device_handle dev, unsigned size, 42500a23bdaSmrg unsigned alignment, unsigned heap, uint64_t flags, 42600a23bdaSmrg amdgpu_bo_handle *bo) 42700a23bdaSmrg{ 42800a23bdaSmrg struct amdgpu_bo_alloc_request request = {}; 42900a23bdaSmrg amdgpu_bo_handle buf_handle; 43000a23bdaSmrg int r; 43100a23bdaSmrg 43200a23bdaSmrg request.alloc_size = size; 43300a23bdaSmrg request.phys_alignment = alignment; 43400a23bdaSmrg request.preferred_heap = heap; 43500a23bdaSmrg request.flags = flags; 43600a23bdaSmrg 43700a23bdaSmrg r = amdgpu_bo_alloc(dev, &request, &buf_handle); 43800a23bdaSmrg if (r) 43900a23bdaSmrg return r; 44000a23bdaSmrg 44100a23bdaSmrg *bo = buf_handle; 44200a23bdaSmrg 44300a23bdaSmrg return 0; 44400a23bdaSmrg} 44500a23bdaSmrg 4467cdc0497Smrgint amdgpu_bo_alloc_and_map_raw(amdgpu_device_handle dev, unsigned size, 4477cdc0497Smrg unsigned alignment, unsigned heap, uint64_t alloc_flags, 4487cdc0497Smrg uint64_t mapping_flags, amdgpu_bo_handle *bo, void **cpu, 4497cdc0497Smrg uint64_t *mc_address, 4507cdc0497Smrg amdgpu_va_handle *va_handle); 4517cdc0497Smrg 4523f012e29Smrgstatic inline int 4533f012e29Smrgamdgpu_bo_alloc_and_map(amdgpu_device_handle dev, unsigned size, 4547cdc0497Smrg unsigned alignment, unsigned heap, uint64_t alloc_flags, 4553f012e29Smrg amdgpu_bo_handle *bo, void **cpu, uint64_t *mc_address, 4563f012e29Smrg amdgpu_va_handle *va_handle) 4573f012e29Smrg{ 4587cdc0497Smrg return amdgpu_bo_alloc_and_map_raw(dev, size, alignment, heap, 4597cdc0497Smrg alloc_flags, 0, bo, cpu, mc_address, va_handle); 4603f012e29Smrg} 4613f012e29Smrg 4623f012e29Smrgstatic inline int 4633f012e29Smrgamdgpu_bo_unmap_and_free(amdgpu_bo_handle bo, amdgpu_va_handle va_handle, 4643f012e29Smrg uint64_t mc_addr, uint64_t size) 4653f012e29Smrg{ 4663f012e29Smrg amdgpu_bo_cpu_unmap(bo); 4673f012e29Smrg amdgpu_bo_va_op(bo, 0, size, mc_addr, 0, AMDGPU_VA_OP_UNMAP); 4683f012e29Smrg amdgpu_va_range_free(va_handle); 4693f012e29Smrg amdgpu_bo_free(bo); 4703f012e29Smrg 4713f012e29Smrg return 0; 4723f012e29Smrg 4733f012e29Smrg} 4743f012e29Smrg 4753f012e29Smrgstatic inline int 4763f012e29Smrgamdgpu_get_bo_list(amdgpu_device_handle dev, amdgpu_bo_handle bo1, 4773f012e29Smrg amdgpu_bo_handle bo2, amdgpu_bo_list_handle *list) 4783f012e29Smrg{ 4793f012e29Smrg amdgpu_bo_handle resources[] = {bo1, bo2}; 4803f012e29Smrg 4813f012e29Smrg return amdgpu_bo_list_create(dev, bo2 ? 2 : 1, resources, NULL, list); 4823f012e29Smrg} 4833f012e29Smrg 48400a23bdaSmrg 48500a23bdaSmrgstatic inline CU_ErrorCode amdgpu_set_suite_active(const char *suite_name, 48600a23bdaSmrg CU_BOOL active) 48700a23bdaSmrg{ 48800a23bdaSmrg CU_ErrorCode r = CU_set_suite_active(CU_get_suite(suite_name), active); 48900a23bdaSmrg 49000a23bdaSmrg if (r != CUE_SUCCESS) 49100a23bdaSmrg fprintf(stderr, "Failed to obtain suite %s\n", suite_name); 49200a23bdaSmrg 49300a23bdaSmrg return r; 49400a23bdaSmrg} 49500a23bdaSmrg 49600a23bdaSmrgstatic inline CU_ErrorCode amdgpu_set_test_active(const char *suite_name, 49700a23bdaSmrg const char *test_name, CU_BOOL active) 49800a23bdaSmrg{ 49900a23bdaSmrg CU_ErrorCode r; 50000a23bdaSmrg CU_pSuite pSuite = CU_get_suite(suite_name); 50100a23bdaSmrg 50200a23bdaSmrg if (!pSuite) { 50300a23bdaSmrg fprintf(stderr, "Failed to obtain suite %s\n", 50400a23bdaSmrg suite_name); 50500a23bdaSmrg return CUE_NOSUITE; 50600a23bdaSmrg } 50700a23bdaSmrg 50800a23bdaSmrg r = CU_set_test_active(CU_get_test(pSuite, test_name), active); 50900a23bdaSmrg if (r != CUE_SUCCESS) 51000a23bdaSmrg fprintf(stderr, "Failed to obtain test %s\n", test_name); 51100a23bdaSmrg 51200a23bdaSmrg return r; 51300a23bdaSmrg} 51400a23bdaSmrg 5154babd585Smrg 5164babd585Smrgstatic inline bool asic_is_gfx_pipe_removed(uint32_t family_id, uint32_t chip_id, uint32_t chip_rev) 51741687f09Smrg{ 5184babd585Smrg 5194babd585Smrg if (family_id != AMDGPU_FAMILY_AI) 5204babd585Smrg return false; 5214babd585Smrg 5224babd585Smrg switch (chip_id - chip_rev) { 5234babd585Smrg /* Arcturus */ 5244babd585Smrg case 0x32: 5254babd585Smrg /* Aldebaran */ 5264babd585Smrg case 0x3c: 52741687f09Smrg return true; 52841687f09Smrg default: 52941687f09Smrg return false; 53041687f09Smrg } 53141687f09Smrg} 53241687f09Smrg 53341687f09Smrgvoid amdgpu_test_exec_cs_helper_raw(amdgpu_device_handle device_handle, 53441687f09Smrg amdgpu_context_handle context_handle, 53541687f09Smrg unsigned ip_type, int instance, int pm4_dw, 53641687f09Smrg uint32_t *pm4_src, int res_cnt, 53741687f09Smrg amdgpu_bo_handle *resources, 53841687f09Smrg struct amdgpu_cs_ib_info *ib_info, 53941687f09Smrg struct amdgpu_cs_request *ibs_request, 54041687f09Smrg bool secure); 54141687f09Smrg 5424babd585Smrgvoid amdgpu_close_devices(); 5434babd585Smrgint amdgpu_open_device_on_test_index(int render_node); 5444babd585Smrgchar *amdgpu_get_device_from_fd(int fd); 5454babd585Smrg 5463f012e29Smrg#endif /* #ifdef _AMDGPU_TEST_H_ */ 547