66 lines
2.1 KiB
Bash
Executable file
66 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function get_GROUP () {
|
|
clear
|
|
# Get the config paths
|
|
source "$SCRIPTDIR/lib/paths.sh"
|
|
|
|
printf "For this card to be passthrough-able, it must contain only:
|
|
* The GPU/Graphic card
|
|
* The GPU Audio Controller
|
|
|
|
Optionally it may also include:
|
|
* GPU USB Host Controller
|
|
* GPU Serial Port
|
|
* GPU USB Type-C UCSI Controller
|
|
|
|
"
|
|
echo "#------------------------------------------#"
|
|
exec "$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 1-4,8- | perl -pe "s/\[[0-9a-f]{4}\]: //"
|
|
echo "#------------------------------------------#"
|
|
|
|
printf "
|
|
To use any of these devices for passthrough ALL of them has to be passed through to the VMs\
|
|
|
|
To return to the previous page just press ENTER without typing in anything.
|
|
"
|
|
read -r -p "Do you want to use these devices for passthrough? [y/N]: " YESNO
|
|
|
|
case "${YESNO}" in
|
|
[Yy]*)
|
|
# Get the hardware ids from the selected group
|
|
local GPU_DEVID
|
|
GPU_DEVID=$("$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | perl -pe "s/.+\[([0-9a-f]{4}:[0-9a-f]{4})\].+/\1/" | perl -pe "s/\n/,/" | perl -pe "s/,$/\n/")
|
|
|
|
# Get the PCI ids
|
|
local PCI_ID
|
|
PCI_ID=$("$SCRIPTDIR/utils/ls-iommu" | grep -i "group $1" | cut -d " " -f 4 | perl -pe "s/([0-9a-f]{2}:[0-9a-f]{2}.[0-9a-f]{1})\n/\"\1\" /" | perl -pe "s/\s$//")
|
|
|
|
# Write the GPU_PCI_IDs to the config that quickemu might make use of in the future
|
|
echo "GPU_PCI_ID=($PCI_ID)
|
|
USB_CTL_ID=()
|
|
" > "$SCRIPTDIR/$QUICKEMU/qemu-vfio_vars.conf"
|
|
|
|
# Get the rom PCI_ID
|
|
local ROM_PCI_ID
|
|
ROM_PCI_ID=$("$SCRIPTDIR/utils/ls-iommu" | grep -i "vga" | grep -i "group $1" | cut -d " " -f 4)
|
|
|
|
# Get the GPU ROM
|
|
"$SCRIPTDIR/lib/get_GPU_ROM.sh" "$ROM_PCI_ID"
|
|
|
|
# Start setting up modules
|
|
exec "$SCRIPTDIR/lib/set_INITRAMFSTOOLS.sh" "$GPU_DEVID"
|
|
;;
|
|
*)
|
|
exec "$SCRIPTDIR/lib/get_GPU.sh"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function main () {
|
|
SCRIPTDIR=$(dirname "$(realpath $0)" | perl -pe "s/\/\.\.\/lib//" | perl -pe "s/\/lib$//")
|
|
|
|
get_GROUP "$1"
|
|
}
|
|
|
|
main "$1"
|