Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- dvideo="$1"
- daudio="$2"
- mode="$3"
- case "$mode" in
- unbind)
- # ****************
- # * UNBIND BEGIN *
- # ****************
- echo "mode: unbind driver and bind vfio"
- # Unbind VTconsoles
- echo 0 > /sys/class/vtconsole/vtcon0/bind
- echo 0 > /sys/class/vtconsole/vtcon1/bind
- # Unbind EFI-Framebuffer
- #echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
- #echo simple-framebuffer.0 > /sys/bus/platform/drivers/simple-framebuffer/unbind
- # Avoid a Race condition by waiting 2 seconds. This can be calibrated to be shorter or longer if required for your system
- sleep 2
- for d in "$dvideo" "$daudio"
- do
- id="$(lspci -n -s "$d" | cut -d' ' -f3 | tr ':' ' ')"
- echo "$d $id"
- echo "$id" > /sys/bus/pci/drivers/vfio-pci/new_id
- echo "$d" > /sys/bus/pci/devices/"$d"/driver/unbind
- echo "$d" > /sys/bus/pci/drivers/vfio-pci/bind
- echo "$id" > /sys/bus/pci/drivers/vfio-pci/remove_id
- done
- # ****************
- # * UNBIND END *
- # ****************
- ;;
- bind)
- # ****************
- # * REBIND BEGIN *
- # ****************
- echo "mode: unbind vfio and bind driver"
- echo 1 > /sys/bus/pci/devices/"$dvideo"/remove
- echo 1 > /sys/bus/pci/devices/"$daudio"/remove
- echo 1 > /sys/bus/pci/rescan
- #echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
- #echo "simple-framebuffer.0" > /sys/bus/platform/drivers/simple-framebuffer/bind
- # Rebind VT consoles
- echo 1 > /sys/class/vtconsole/vtcon0/bind
- # Some machines might have more than 1 virtual console. Add a line for each corresponding VTConsole
- echo 1 > /sys/class/vtconsole/vtcon1/bind
- # ****************
- # * REBIND END *
- # ****************
- ;;
- *)
- echo "error: unkown mode '$mode'"
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment