From 48186febf17490820dc089172c58526664255417 Mon Sep 17 00:00:00 2001 From: Eugeni Dodonov Date: Thu, 10 Nov 2011 11:12:10 -0200 Subject: [PATCH] tests: add test for kernel segmentation fault As asked by Daniel Vetter, this is a tech which checks if we can cause division by zero in kernel by reading the i915_emon_status debugfs entry repeatably. Signed-off-by: Eugeni Dodonov --- tests/Makefile.am | 1 + tests/debugfs_emon_crash | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 tests/debugfs_emon_crash diff --git a/tests/Makefile.am b/tests/Makefile.am index 525380ef..dffda411 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -56,6 +56,7 @@ TESTS_progs = \ TESTS_scripts = \ debugfs_reader \ + debugfs_emon_crash \ $(NULL) kernel_tests = \ diff --git a/tests/debugfs_emon_crash b/tests/debugfs_emon_crash new file mode 100755 index 00000000..63e193d8 --- /dev/null +++ b/tests/debugfs_emon_crash @@ -0,0 +1,34 @@ +#!/bin/sh +# +# This check if we can crash the kernel with segmentation-fault +# by reading /sys/kernel/debug/dri/0/i915_emon_status too quickly +# + +if [ -d /debug/dri ] ; then + debugfs_path=/debug_dri +fi + +if [ -d /sys/kernel/debug/dri ] ; then + debugfs_path=/sys/kernel/debug/dri +fi + +i915_path=x +for dir in `ls $debugfs_path` ; do + if [ -f $debugfs_path/$dir/i915_error_state ] ; then + i915_path=$debugfs_path/$dir + break + fi +done + +if [ $i915_path = "x" ] ; then + echo i915 debugfs path not found. + exit 1 +fi + +for z in $(seq 1 1000); do + cat $i915_path/i915_emon_status > /dev/null +done + +# If we got here, we haven't crashed + +exit 0