1
0
Fork 0

Compare commits

...

4 Commits

6 changed files with 46 additions and 42 deletions

View File

@ -10,7 +10,8 @@
- '046d:c539' # Logitech, Inc. USB Receiver
- '046d:c08d' # Logitech, Inc. G502 LIGHTSPEED Wireless Gaming Mouse
keyboards:
- '/dev/input/by-id/usb-0d3d_USBPS2-event-kbd'
# - '/dev/input/by-id/usb-0d3d_USBPS2-event-kbd'
- '/dev/input/by-path/platform-i8042-serio-0-event-kbd'
mice: []
roles:
- win10

View File

@ -7,8 +7,8 @@ prepare() {
drop-caches \
compact-memory \
irq-affinity mask C1-3,5-7 \
cpuset-create --cpus C0,4 /host.slice \
cpuset-create --cpus C1-3,5-7 -nlb /win10.slice \
cpuset-modify --cpus C0,4 /system.slice \
cpuset-modify --cpus C0,4 /user.slice \
move-tasks / /host.slice \
cpu-governor performance C0-7
@ -21,15 +21,8 @@ prepare() {
}
release() {
echo "Restore system"
# restore cgroupv2
systemctl set-property --runtime -- user.slice AllowedCPUs=0,1,2,3,4,5,6,7
systemctl set-property --runtime -- system.slice AllowedCPUs=0,1,2,3,4,5,6,7
systemctl set-property --runtime -- init.scope AllowedCPUs=0,1,2,3,4,5,6,7
vfio-isolate restore /tmp/win10.undo
systemctl stop win10-usb
vfio-isolate restore /tmp/win10.undo
sysctl -w vm.nr_hugepages=0
}

View File

@ -0,0 +1 @@
options kvm_intel nested=1

View File

@ -7,6 +7,7 @@
- virt-manager
- python-evdev
- python-pyudev
# - vendor-reset-dkms-git
notify:
- restart libvirtd.service
- restart virtlogd.socket
@ -47,9 +48,15 @@
line: 'MODULES=(vfio_pci vfio vfio_iommu_type1 vfio_virqfd i915)'
notify: regenerate linux initramfs
- name: configure vfio-pci device ids
- name: configure kvm kernel module
copy:
src: modprobe/kvm.conf
dest: /etc/modprobe.d/kvm.conf
notify: regenerate linux initramfs
- name: configure vfio-pci kernel module
template:
src: vfio.conf.j2
src: modprobe/vfio.conf.j2
dest: /etc/modprobe.d/vfio.conf
notify: regenerate linux initramfs

View File

@ -42,41 +42,42 @@
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<vpindex state='on'/>
<runtime state='on'/>
<synic state='on'/>
<stimer state='on'/>
<tlbflush state='on'/>
<ipi state='on'/>
<stimer state="on">
<direct state="on"/>
</stimer>
<reset state='on'/>
<!-- <vendor_id state='on' value='other'/> -->
<frequencies state='on'/>
<reenlightenment state='on'/>
<!-- nvidia code 43 fix -->
<vendor_id state='on' value='fNvidia'/>
<tlbflush state='on'/>
<ipi state='on'/>
<evmcs state='off'/>
</hyperv>
<kvm>
<!-- nvidia code 43 fix -->
<hidden state='on'/>
</kvm>
<vmport state='off'/>
<ioapic driver='kvm'/>
</features>
<cpu mode='host-passthrough' check='none'>
<cpu mode='host-passthrough' check='partial'>
<topology sockets='1' cores='3' threads='2'/>
<cache mode='passthrough'/>
<feature policy='require' name='invtsc'/>
<!-- required for Genshin Impact, come with a performance hit -->
<feature policy="disable" name="hypervisor"/>
<!-- <feature policy="disable" name="hypervisor"/> -->
</cpu>
<clock offset='localtime'>
<timer name='rtc' present='no' tickpolicy='catchup'/>
<timer name='pit' present='no' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='kvmclock' present='no'/>
<timer name='hypervclock' present='yes'/>
<timer name='tsc' present='yes' mode='native'/>
<timer name='hypervclock' present='yes'/>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<!-- Because of the reset bug, we cannot actually restart without restarting the host -->
<on_reboot>destroy</on_reboot>
<!-- Because of the AMD reset bug, we cannot actually restart normally -->
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
@ -173,9 +174,11 @@
<address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='mouse' bus='virtio'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice'>
<listen type='socket' socket='/tmp/win10-spice.sock'/>
<input type='keyboard' bus='virtio'/>
<graphics type='spice' listen='127.0.0.1' port='5900' defaultMode='insecure'>
<listen type='address' address='127.0.0.1'/>
<image compression='off' />
<mouse mode='server'/>
<filetransfer enable='no'/>
@ -210,25 +213,24 @@
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='none'/>
<!-- <memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
</memballoon> -->
<shmem name='looking-glass'>
<model type='ivshmem-plain'/>
<size unit='M'>32</size>
<address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x0'/>
</shmem>
</devices>
<qemu:commandline>
<!-- keyboard evdev passthrough -->
{% for item in keyboards %}
<qemu:arg value='-object'/>
<qemu:arg value='input-linux,id=kbd1,evdev=/dev/input/by-id/uinput-persist-keyboard{{ loop.index0 }},grab_all=off,repeat=on'/>
{% endfor %}
<!-- mouse evdev passthrough -->
{% for item in mice %}
<qemu:arg value='-object'/>
<qemu:arg value='input-linux,id=input5,evdev=/dev/input/by-id/uinput-persist-mouse{{ loop.index0 }}'/>
<input type='evdev'>
<source dev='/dev/input/by-id/uinput-persist-mouse{{ loop.index0 }}'/>
</input>
{% endfor %}
<!-- keyboard evdev passthrough -->
{% for item in keyboards %}
<input type='evdev'>
<source dev='/dev/input/by-id/uinput-persist-keyboard{{ loop.index0 }}' grab='all' repeat='on'/>
</input>
{% endfor %}
</devices>
<qemu:commandline>
</qemu:commandline>
</domain>