mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 12:07:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# Testcase: Simulate missed breadcrumb interrupts
 | 
						|
#
 | 
						|
 | 
						|
SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )"
 | 
						|
. $SOURCE_DIR/drm_lib.sh
 | 
						|
 | 
						|
oldpath=`pwd`
 | 
						|
 | 
						|
cd $i915_dfs_path
 | 
						|
 | 
						|
function blt_wait {
 | 
						|
	(cd $oldpath; $SOURCE_DIR/gem_exec_blt 16384) > /dev/null
 | 
						|
	(cd $oldpath; $SOURCE_DIR/gem_exec_blt 65536) > /dev/null
 | 
						|
	(cd $oldpath; $SOURCE_DIR/gem_exec_blt 262144) > /dev/null
 | 
						|
}
 | 
						|
 | 
						|
function check_for_missed_irq {
 | 
						|
	if test `cat i915_ring_missed_irq` = 0x00000000; then
 | 
						|
		echo "missed interrupts undetected"
 | 
						|
		exit $IGT_EXIT_FAILURE
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function check_for_hang {
 | 
						|
	if cat i915_error_state | grep -v "no error state collected" > /dev/null ; then
 | 
						|
		echo "gpu hang reported"
 | 
						|
		exit $IGT_EXIT_FAILURE
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
if [ ! -f i915_ring_missed_irq ] ; then
 | 
						|
	echo "kernel doesn't support interrupt masking"
 | 
						|
	exit $IGT_EXIT_SKIP
 | 
						|
fi
 | 
						|
 | 
						|
# clear error state first
 | 
						|
echo > i915_error_state
 | 
						|
check_for_hang
 | 
						|
 | 
						|
echo 0xf > i915_ring_test_irq
 | 
						|
echo "Interrupts masked"
 | 
						|
if test `cat i915_ring_test_irq` != 0x0000000f; then
 | 
						|
	echo "Failed to set interrupt mask"
 | 
						|
	exit $IGT_EXIT_FAILURE
 | 
						|
fi
 | 
						|
 | 
						|
blt_wait
 | 
						|
check_for_missed_irq
 | 
						|
check_for_hang
 | 
						|
 | 
						|
blt_wait
 | 
						|
check_for_hang
 | 
						|
 | 
						|
echo 0 > i915_ring_test_irq
 | 
						|
echo "Interrupts unmasked"
 | 
						|
if test `cat i915_ring_test_irq` != 0x00000000; then
 | 
						|
	echo "Failed to clear interrupt mask"
 | 
						|
	exit $IGT_EXIT_FAILURE
 | 
						|
fi
 | 
						|
 | 
						|
blt_wait
 | 
						|
check_for_hang
 | 
						|
 | 
						|
echo 0 > i915_ring_missed_irq
 | 
						|
echo "Cleared missed interrupts"
 | 
						|
if test `cat i915_ring_missed_irq` != 0x00000000; then
 | 
						|
	echo "Failed to clear missed interrupts"
 | 
						|
	exit $IGT_EXIT_FAILURE
 | 
						|
fi
 | 
						|
 | 
						|
exit $IGT_EXIT_SUCCESS
 |