#!/bin/bash
#
# Testcase: Reload the drm module
#
# ... we've broken this way too often :(
#

SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )"
. $SOURCE_DIR/drm_lib.sh

# no other drm service should be running, so we can just unbind

# vtcon0 is vga, vtcon1 fbcon and let's pray that won't change due to boot load
# time changes
if ! echo 0 > /sys/class/vtconsole/vtcon1/bind ; then
	echo -e "no kms unload support"
	echo "please enable CONFIG_VT_HW_CONSOLE_BINDING in the kernel"
	exit 77
fi

#ignore errors in ips - gen5 only
rmmod intel_ips &> /dev/null
rmmod i915
#ignore errors in intel-gtt, often built-in
rmmod intel-gtt &> /dev/null
# drm may be used by other devices (nouveau, radeon, udl, etc)
rmmod drm_kms_helper &> /dev/null
rmmod drm &> /dev/null

if lsmod | grep i915 &> /dev/null ; then
	echo WARNING: i915.ko still loaded!
	exitcode=1
else
	echo module successfully unloaded
	exitcode=0
fi

modprobe i915
echo 1 > /sys/class/vtconsole/vtcon1/bind

# try to run something
$SOURCE_DIR/gem_exec_nop > /dev/null && echo "module successfully loaded again"

exit $exitcode
