01qubes-swap-pci-devs 956 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/sh
  2. . "${PM_FUNCTIONS}"
  3. get_domain_pci_devs()
  4. {
  5. VM=$1
  6. TMPFILE=$(mktemp -p /var/run/qubes/)
  7. xm pci-list $VM > $TMPFILE
  8. if grep -i -q vslt $TMPFILE ; then
  9. slt=valid_identifier
  10. else
  11. slt=""
  12. fi
  13. cat $TMPFILE | grep -v domain | sed 's/0x//g'| \
  14. while read $slt a b c d; do echo $a:$b:$c.$d ; done > /var/run/qubes/$VM.pcidevs
  15. rm -f $TMPFILE
  16. }
  17. detach_pcis()
  18. {
  19. NETVM=$(qvm-get-default-netvm)
  20. if [ "X"$NETVM = "X""dom0" -o "X"$NETVM = "X" -o "X"$NETVM = "X""none"] ; then
  21. exit 0
  22. fi
  23. get_domain_pci_devs $NETVM
  24. for dev in $(cat /var/run/qubes/$NETVM.pcidevs) ; do
  25. xm pci-detach $NETVM $dev
  26. done
  27. }
  28. attach_pcis()
  29. {
  30. NETVM=$(qvm-get-default-netvm)
  31. if [ "X"$NETVM = "X""dom0" -o "X"$NETVM = "X" -o "X"$NETVM = "X""none"] ; then
  32. exit 0
  33. fi
  34. for dev in $(cat /var/run/qubes/$NETVM.pcidevs) ; do
  35. xm pci-attach $NETVM $dev
  36. done
  37. }
  38. case "$1" in
  39. resume) attach_pcis ;;
  40. suspend) detach_pcis ;;
  41. *) exit 0 ;;
  42. esac