blob: af104ad791b7ec4568293345410807efdce4a71a [file] [log] [blame]
#!/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