mirror of
https://github.com/ben-grande/qusal.git
synced 2024-10-01 02:35:49 -04:00
bdd4c789c1
Echo can interpret operand as an option and checking every variable to be echoed is troublesome while with printf, if the format specifier is present before the operand, printing as string can be enforced.
44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
## Credits: https://www.qubes-os.org/doc/how-to-use-pci-devices/#bringing-pci-devices-back-to-dom0
|
|
##
|
|
## After attaching a PCI device and detaching it, the device is not available
|
|
## in Dom0 anymore. This is an intended feature. A device which was previously
|
|
## assigned to a less trusted qube could attack dom0 if it were automatically
|
|
## reassigned there. In order to re-enable the device in dom0, either reboot
|
|
## physical machine or run the following script.
|
|
##
|
|
## This is useful for testing purposes when testing PCI devices, not
|
|
## recommended for users to attach a device to Dom0.
|
|
|
|
set -eu
|
|
|
|
usage(){
|
|
printf '%s\n' "Usage: ${0##*/} --i-like-danger <DEVICE>"
|
|
printf '%s\n' "Example: ${0##*/} --i-like-danger 0000:00:1b.0"
|
|
printf '%s\n' "Warning: Strongly discouraged to reattach PCI devices to"
|
|
printf '%s\n' "Warning: dom0, especially if it doesn't support resetting!"
|
|
exit 1
|
|
}
|
|
|
|
case "${1-}" in
|
|
--i-like-danger) ;;
|
|
*) usage;;
|
|
esac
|
|
case "${2-}" in
|
|
"") usage;;
|
|
*) device="${2}"
|
|
esac
|
|
|
|
uid="$(id -u)"
|
|
test "${uid}" = "0" || exec sudo "${0}"
|
|
|
|
printf '%s\n' "${device}" | tee -- /sys/bus/pci/drivers/pciback/unbind
|
|
modalias="$(cat -- "/sys/bus/pci/devices/${device}/modalias")"
|
|
module="$(modprobe -R "${modalias}" | head -n 1)"
|
|
printf '%s\n' "${device}" | tee -- "/sys/bus/pci/drivers/${module}/bind"
|