[PATCH 2/2] tests/amdgpu: Add user queue tests for SDMA in deadlock tests

vitaly prosyak vprosyak at amd.com
Wed Aug 27 00:31:24 UTC 2025


Both patches looks good to me. Reviewed-by Vitaly Prosyak <vitaly.prosyak at amd.com>

On 2025-08-26 02:45, Jesse.Zhang wrote:
> - Modify existing tests to pass an additional 'false' parameter to the
>   amdgpu_wait_memory_helper function to disable the reset functionality.
> - Add new tests to cover various GPU reset scenarios triggered by SDMA:
>   - Test GPU reset by SDMA with bad opcode
>   - Test GPU reset by SDMA with bad memory access
>   - Test GPU reset by SDMA with bad register access
>   - Test GPU reset by SDMA with bad packet length
>   - Test GPU reset by flooding the SDMA ring with jobs
> - Update the test descriptions to reflect the new test cases and their purposes.
>
> Signed-off-by: Jesse Zhang <Jesse.Zhang at amd.com>
> ---
>  tests/amdgpu/amd_deadlock.c | 54 ++++++++++++++++++++++++++++++++++---
>  1 file changed, 51 insertions(+), 3 deletions(-)
>
> diff --git a/tests/amdgpu/amd_deadlock.c b/tests/amdgpu/amd_deadlock.c
> index 3456f42c8..41b3aa15e 100644
> --- a/tests/amdgpu/amd_deadlock.c
> +++ b/tests/amdgpu/amd_deadlock.c
> @@ -78,7 +78,7 @@ igt_main
>  	igt_subtest_with_dynamic("amdgpu-deadlock-sdma") {
>  		if (arr_cap[AMD_IP_DMA]) {
>  			igt_dynamic_f("amdgpu-deadlock-sdma")
> -			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_DMA, &pci);
> +			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_DMA, &pci, false);
>  		}
>  	}
>  
> @@ -107,7 +107,7 @@ igt_main
>  	igt_subtest_with_dynamic("amdgpu-deadlock-gfx") {
>  		if (arr_cap[AMD_IP_GFX]) {
>  			igt_dynamic_f("amdgpu-deadlock-gfx")
> -			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_GFX, &pci);
> +			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_GFX, &pci, false);
>  		}
>  	}
>  
> @@ -124,7 +124,7 @@ igt_main
>  	igt_subtest_with_dynamic("amdgpu-deadlock-compute") {
>  		if (arr_cap[AMD_IP_COMPUTE]) {
>  			igt_dynamic_f("amdgpu-deadlock-compute")
> -			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_COMPUTE, &pci);
> +			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_COMPUTE, &pci, false);
>  		}
>  	}
>  
> @@ -196,6 +196,54 @@ igt_main
>  					       AMDGPU_HW_IP_GFX, &pci, true);
>  		}
>  	}
> +
> +	igt_describe("Test-GPU-reset-by-sdma-badop-with-jobs");
> +	igt_subtest_with_dynamic("amdgpu-deadlock-sdma-badop-test-umq") {
> +		if (enable_test && userq_arr_cap[AMD_IP_DMA] &&
> +			is_reset_enable(AMD_IP_DMA, AMDGPU_RESET_TYPE_PER_QUEUE, &pci)) {
> +			igt_dynamic_f("amdgpu-deadlock-sdma-badop-test-umq")
> +			bad_access_ring_helper(device, CMD_STREAM_EXEC_INVALID_OPCODE,
> +					AMDGPU_HW_IP_DMA, &pci, true);
> +		}
> +	}
> +
> +	igt_describe("Test-GPU-reset-by-sdma-bad-mem-with-jobs");
> +	igt_subtest_with_dynamic("amdgpu-deadlock-sdma-bad-mem-test-umq") {
> +		if (enable_test && userq_arr_cap[AMD_IP_DMA] &&
> +			is_reset_enable(AMD_IP_DMA, AMDGPU_RESET_TYPE_PER_QUEUE, &pci)) {
> +			igt_dynamic_f("amdgpu-deadlock-sdma-bad-mem-test-umq")
> +			bad_access_ring_helper(device, CMD_STREAM_TRANS_BAD_MEM_ADDRESS,
> +					AMDGPU_HW_IP_DMA, &pci, true);
> +		}
> +	}
> +
> +	igt_describe("Test-GPU-reset-by-sdma-bad-reg-with-jobs");
> +	igt_subtest_with_dynamic("amdgpu-deadlock-sdma-bad-reg-test-umq") {
> +		if (enable_test && userq_arr_cap[AMD_IP_DMA] &&
> +			is_reset_enable(AMD_IP_DMA, AMDGPU_RESET_TYPE_PER_QUEUE, &pci)) {
> +			igt_dynamic_f("amdgpu-deadlock-sdma-bad-reg-test-umq")
> +			bad_access_ring_helper(device, CMD_STREAM_TRANS_BAD_REG_ADDRESS,
> +					AMDGPU_HW_IP_DMA, &pci, true);
> +		}
> +	}
> +
> +	igt_describe("Test-GPU-reset-by-sdma-bad-length-with-jobs");
> +	igt_subtest_with_dynamic("amdgpu-deadlock-sdma-bad-length-test-umq") {
> +		if (enable_test && userq_arr_cap[AMD_IP_DMA] &&
> +			is_reset_enable(AMD_IP_DMA, AMDGPU_RESET_TYPE_PER_QUEUE, &pci)) {
> +			igt_dynamic_f("amdgpu-deadlock-sdma-bad-length-test-umq")
> +			bad_access_ring_helper(device, CMD_STREAM_EXEC_INVALID_PACKET_LENGTH,
> +					AMDGPU_HW_IP_DMA, &pci, true);
> +		}
> +	}
> +
> +	igt_describe("Test-GPU-reset-by-flooding-sdma-ring-with-jobs");
> +	igt_subtest_with_dynamic("amdgpu-deadlock-sdma-umq") {
> +		if (enable_test && userq_arr_cap[AMD_IP_DMA]) {
> +			igt_dynamic_f("amdgpu-deadlock-sdma-umq")
> +			amdgpu_wait_memory_helper(device, AMDGPU_HW_IP_DMA, &pci, true);
> +		}
> +	}
>  #endif
>  
>  	igt_fixture {


More information about the igt-dev mailing list