blob: 6b310bc9a7b500620bde465c51266724e509c3a2 [file] [log] [blame]
#!/bin/bash
#
# Testcase: Simulate gpu hang
#
# This check uses the stop_rings facility to exercise the gpu hang code.
# by reading /sys/kernel/debug/dri/0/i915_emon_status too quickly
#
SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )"
. $SOURCE_DIR/drm_lib.sh
oldpath=`pwd`
cd $i915_dfs_path
if [ ! -f i915_ring_stop ] ; then
echo "kernel doesn't support ring stopping"
exit 77
fi
function check_iface {
dir="$1"
file="$2"
mandatory="$3"
[ -z "$dir" ] && return
path="$dir/$file"
echo checking ${path}
if [ ! -f "$path" ] ; then
if [ $mandatory != 0 ] ; then
echo "'${path}' not found";
exit 1;
else
echo "${path} not mandatory";
return;
fi
fi
if cat "$path" | grep -v "no error state collected" > /dev/null ; then
echo "gpu hang detected"
exit 2
fi
echo 0xf > i915_ring_stop
echo "rings stopped"
(cd $oldpath; $SOURCE_DIR/gem_exec_big) > /dev/null
if cat "$path" | grep -v "no error state collected" > /dev/null ; then
echo "gpu hang correctly detected"
else
echo "gpu hang not detected"
exit 3
fi
# clear error state
echo > "$path"
if cat "$path" | grep -v "no error state collected" > /dev/null ; then
echo "gpu hang still present"
exit 4
fi
}
check_iface "$i915_dfs_path" i915_error_state 1
check_iface "$i915_sfs_path" error 0
exit 0