#!/bin/bash prepare() { systemctl start win10-usb # https://github.com/gnif/vendor-reset/issues/46#issuecomment-992282166 {% for pci_device_id in pci_device_ids %} echo 'device_specific' >'/sys/bus/pci/devices/{{ pci_device_id.domain }}:{{ pci_device_id.bus }}:{{ pci_device_id.slot }}.{{ pci_device_id.function }}/reset_method' {% endfor %} vfio-isolate -u /tmp/win10.undo \ drop-caches \ compact-memory \ irq-affinity mask C1-3,5-7 \ cpuset-modify --cpus C0,4 /system.slice \ cpuset-modify --cpus C0,4 /user.slice \ move-tasks / /host.slice \ cpu-governor performance C0-7 for _ in $(seq 5); do sleep 3 # assign hugepages sysctl -w vm.nr_hugepages=8192 && break done sleep 10 } release() { systemctl stop win10-usb vfio-isolate restore /tmp/win10.undo sysctl -w vm.nr_hugepages=0 } if [ "$1" == "win10" ]; then if [ "$2" == "prepare" ]; then prepare fi if [ "$2" == "release" ]; then release fi fi