[PATCH] tests: Simulate missed breadcrumb irqs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 tests/Makefile.am   |  1 +
 tests/ZZ_missed_irq | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)
 create mode 100755 tests/ZZ_missed_irq

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9878a25..e258b1f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -130,6 +130,7 @@ TESTS_scripts = \
 	test_rte_check \
 	tools_test \
 	ZZ_hangman \
+	ZZ_missed_irq \
 	$(NULL)
 
 # This target contains testcases which support automagic subtest enumeration
diff --git a/tests/ZZ_missed_irq b/tests/ZZ_missed_irq
new file mode 100755
index 0000000..86c0123
--- /dev/null
+++ b/tests/ZZ_missed_irq
@@ -0,0 +1,70 @@
+#!/bin/bash
+#
+# Testcase: Simulate missed breadcrumb interrupts
+#
+
+SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )"
+test $SOURCE_DIR = . && SOURCE_DIR="`pwd`"
+. $SOURCE_DIR/drm_lib.sh
+cd $i915_dfs_path
+
+echo $SOURCE_DIR
+
+function check_for_missed_irq {
+	if test `cat i915_ring_missed_irq` = 0x00000000; then
+		echo "missed interrupts undetected"
+		exit 1
+	fi
+}
+
+function check_for_hang {
+	if cat i915_error_state | grep -v "no error state collected" > /dev/null ; then
+		echo "gpu hang reported"
+		exit 2
+	fi
+}
+
+if [ ! -f i915_ring_missed_irq ] ; then
+	echo "kernel doesn't support interrupt masking"
+	exit 77
+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 3
+fi
+
+$SOURCE_DIR/gem_exec_big > /dev/null
+
+check_for_missed_irq
+check_for_hang
+
+$SOURCE_DIR/gem_exec_big > /dev/null
+
+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 3
+fi
+
+$SOURCE_DIR/gem_exec_big > /dev/null
+
+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 3
+fi
+
+exit 0
-- 
1.8.4.rc3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux