#!/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_path

if [ ! -f i915_ring_stop ] ; then
	echo "kernel doesn't support ring stopping"
	exit 77
fi

if cat i915_error_state | grep -v "no error state collected" > /dev/null ; then
	echo "gpu hang dectected"
	exit 1
fi

# stop rings
echo 0xf > i915_ring_stop
echo "rings stopped"

(cd $oldpath; $SOURCE_DIR/gem_exec_nop) > /dev/null

if cat i915_error_state | grep -v "no error state collected" > /dev/null ; then
	echo "gpu hang correctly dectected"
else
	echo "gpu hang not dectected"
	exit 2
fi

# clear error state
echo > i915_error_state

exit 0
