| #!/bin/bash |
| |
| SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" |
| . $SOURCE_DIR/drm_getopt.sh |
| |
| NAME=$(basename "$0") |
| |
| dynamic_debug= |
| |
| hda_dynamic_debug_enable() { |
| if [ -e "$dynamic_debug" ]; then |
| echo -n "module snd_hda_intel +pf" > $dynamic_debug |
| echo -n "module snd_hda_core +pf" > $dynamic_debug |
| fi |
| } |
| |
| hda_dynamic_debug_disable() { |
| if [ -e "$dynamic_debug" ]; then |
| echo -n "module snd_hda_core =_" > $dynamic_debug |
| echo -n "module snd_hda_intel =_" > $dynamic_debug |
| fi |
| } |
| |
| KERN_EMER="<0>" |
| KERN_ALERT="<1>" |
| KERN_CRIT="<2>" |
| KERN_ERR="<3>" |
| KERN_WARNING="<4>" |
| KERN_NOTICE="<5>" |
| KERN_INFO="<6>" |
| KERN_DEBUG="<7>" |
| |
| kmsg() { |
| echo "$@" > /dev/kmsg |
| } |
| |
| finish() { |
| exitcode=$? |
| hda_dynamic_debug_disable |
| kmsg "${KERN_INFO}[IGT] $NAME: exiting, ret=$exitcode" |
| exit $exitcode |
| } |
| trap finish EXIT |
| |
| kmsg "${KERN_INFO}[IGT] $NAME: executing" |
| |
| skip() { |
| echo "$@" |
| exit $IGT_EXIT_SKIP |
| } |
| |
| die() { |
| echo "$@" |
| exit $IGT_EXIT_FAILURE |
| } |
| |
| do_or_die() { |
| $@ > /dev/null 2>&1 || (echo "FAIL: $@ ($?)" && exit $IGT_EXIT_FAILURE) |
| } |
| |
| if [ -d /sys/kernel/debug ]; then |
| debugfs_path=/sys/kernel/debug |
| elif [ -d /debug ]; then |
| debugfs_path=/debug |
| else |
| skip "debugfs not found" |
| fi |
| |
| dynamic_debug=$debugfs_path/dynamic_debug/control |
| if [ ! -e "$dynamic_debug" ]; then |
| echo "WARNING: dynamic debug control not available" |
| fi |
| |
| if [ ! -d $debugfs_path/dri ]; then |
| skip "dri debugfs not found" |
| fi |
| |
| i915_dfs_path=x |
| for minor in `seq 0 16`; do |
| if [ -f $debugfs_path/dri/$minor/i915_error_state ] ; then |
| i915_dfs_path=$debugfs_path/dri/$minor |
| break |
| fi |
| done |
| |
| if [ $i915_dfs_path = "x" ] ; then |
| skip " i915 debugfs path not found." |
| fi |
| |
| # read everything we can |
| if [ `cat $i915_dfs_path/clients | wc -l` -gt "2" ] ; then |
| [ -n "$DRM_LIB_ALLOW_NO_MASTER" ] || \ |
| die "ERROR: other drm clients running" |
| fi |
| |
| whoami | grep -q root || ( echo ERROR: not running as root; exit $IGT_EXIT_FAILURE ) |
| |
| i915_sfs_path= |
| if [ -d /sys/class/drm ] ; then |
| sysfs_path=/sys/class/drm |
| if [ -f $sysfs_path/card$minor/error ] ; then |
| i915_sfs_path="$sysfs_path/card$minor" |
| fi |
| fi |
| # sysfs may not exist as the 'error' is a new interface in 3.11 |
| |
| function drmtest_skip_on_simulation() |
| { |
| [ -n "$INTEL_SIMULATION" ] && exit $IGT_EXIT_SKIP |
| } |
| |
| drmtest_skip_on_simulation |