mirror of
https://gitlab.com/risingprismtv/single-gpu-passthrough.git
synced 2024-08-30 18:12:14 +00:00
0968ddfee3
This reverts commit 427c5bdd55
75 lines
1.9 KiB
Bash
Executable File
75 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Helpful to read output when debugging
|
|
set -x
|
|
|
|
long_delay=10
|
|
medium_delay=5
|
|
short_delay=1
|
|
echo "Beginning of startup!"
|
|
|
|
function stop_display_manager_if_running {
|
|
# Stop dm using systemd
|
|
if command -v systemctl; then
|
|
if systemctl is-active --quiet "$1.service" ; then
|
|
echo $1 >> /tmp/vfio-store-display-manager
|
|
systemctl stop "$1.service"
|
|
fi
|
|
|
|
while systemctl is-active --quiet "$1.service" ; do
|
|
sleep "${short_delay}"
|
|
done
|
|
|
|
return
|
|
fi
|
|
|
|
# Stop dm using runit
|
|
if command -v sv; then
|
|
if sv status $1 ; then
|
|
echo $1 >> /tmp/vfio-store-display-manager
|
|
sv stop $1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
# Stop currently running display manager
|
|
if test -e "/tmp/vfio-store-display-manager" ; then
|
|
rm -f /tmp/vfio-store-display-manager
|
|
fi
|
|
|
|
stop_display_manager_if_running sddm
|
|
stop_display_manager_if_running gdm
|
|
stop_display_manager_if_running lightdm
|
|
stop_display_manager_if_running lxdm
|
|
stop_display_manager_if_running xdm
|
|
stop_display_manager_if_running mdm
|
|
stop_display_manager_if_running display-manager
|
|
|
|
# Unbind VTconsoles if currently bound (adapted from https://www.kernel.org/doc/Documentation/fb/fbcon.txt)
|
|
if test -e "/tmp/vfio-bound-consoles" ; then
|
|
rm -f /tmp/vfio-bound-consoles
|
|
fi
|
|
for (( i = 0; i < 16; i++))
|
|
do
|
|
if test -x /sys/class/vtconsole/vtcon${i}; then
|
|
if [ `cat /sys/class/vtconsole/vtcon${i}/name | grep -c "frame buffer"` \
|
|
= 1 ]; then
|
|
echo 0 > /sys/class/vtconsole/vtcon${i}/bind
|
|
echo "Unbinding console ${i}"
|
|
echo $i >> /tmp/vfio-bound-consoles
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Unbind EFI-Framebuffer
|
|
if test -e "/tmp/vfio-is-nvidia" ; then
|
|
rm -f /tmp/vfio-is-nvidia
|
|
fi
|
|
|
|
if lsmod | grep "nvidia" &> /dev/null ; then
|
|
echo "true" >> /tmp/vfio-is-nvidia
|
|
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
|
|
fi
|
|
|
|
echo "End of startup!"
|