initial commit
This commit is contained in:
commit
e1f534996c
|
|
@ -0,0 +1,281 @@
|
||||||
|
# VFIO Changeover Notes
|
||||||
|
|
||||||
|
## Main Procedure
|
||||||
|
|
||||||
|
1. rewrite /etc/modprobe.d/vfio.conf
|
||||||
|
2. rewrite /etc/libvirt/qemu/Windows10.xml (or edit in virt-manager; change gpu)
|
||||||
|
|
||||||
|
## PCI Device Information
|
||||||
|
|
||||||
|
#### AMD Radeon 570
|
||||||
|
|
||||||
|
`IOMMU Group 14 0e:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef)`
|
||||||
|
|
||||||
|
`IOMMU Group 14 0e:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]`
|
||||||
|
|
||||||
|
#### Nvidia GeForce GTX 980Ti
|
||||||
|
|
||||||
|
`IOMMU Group 15 0f:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM200 [GeForce GTX 980 Ti] [10de:17c8] (rev a1)`
|
||||||
|
|
||||||
|
`IOMMU Group 15 0f:00.1 Audio device [0403]: NVIDIA Corporation GM200 High Definition Audio [10de:0fb0] (rev a1)`
|
||||||
|
|
||||||
|
#### USB Controller
|
||||||
|
|
||||||
|
`IOMMU Group 8 11:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function [1022:145a]`
|
||||||
|
|
||||||
|
`IOMMU Group 8 11:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor [1022:1456]`
|
||||||
|
|
||||||
|
`IOMMU Group 8 11:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller [1022:145c]`
|
||||||
|
|
||||||
|
## Nvidia Passthrough Configuration
|
||||||
|
|
||||||
|
### modprobe.d
|
||||||
|
|
||||||
|
##### /etc/modprobe.d/vfio.conf
|
||||||
|
|
||||||
|
`options vfio-pci ids=10de:17c8,10de:0fb0,1022:145a,1022:1456,1022:145c`
|
||||||
|
|
||||||
|
##### /etc/modprobe.d/blacklist.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
blacklist nouveau
|
||||||
|
blacklist lbm-nouveau
|
||||||
|
options nouveau modeset=0
|
||||||
|
alias nouveau off
|
||||||
|
alias lbm-nouveau off
|
||||||
|
```
|
||||||
|
|
||||||
|
##### /etc/libvirt/qemu/Windows10.xml
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<!--
|
||||||
|
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
|
||||||
|
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
|
||||||
|
virsh edit Windows10
|
||||||
|
or other application using the libvirt API.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
|
||||||
|
<name>Windows10</name>
|
||||||
|
<uuid>fad1cb88-81e2-40c3-aaab-e4d00f5cca58</uuid>
|
||||||
|
<memory unit='KiB'>16384000</memory>
|
||||||
|
<currentMemory unit='KiB'>16384000</currentMemory>
|
||||||
|
<memoryBacking>
|
||||||
|
<hugepages/>
|
||||||
|
</memoryBacking>
|
||||||
|
<vcpu placement='static'>8</vcpu>
|
||||||
|
<iothreads>4</iothreads>
|
||||||
|
<cputune>
|
||||||
|
<vcpupin vcpu='0' cpuset='0'/>
|
||||||
|
<vcpupin vcpu='2' cpuset='2'/>
|
||||||
|
<vcpupin vcpu='3' cpuset='3'/>
|
||||||
|
<vcpupin vcpu='4' cpuset='4'/>
|
||||||
|
<vcpupin vcpu='5' cpuset='5'/>
|
||||||
|
<vcpupin vcpu='6' cpuset='6'/>
|
||||||
|
<vcpupin vcpu='7' cpuset='7'/>
|
||||||
|
<iothreadpin iothread='1' cpuset='0-1'/>
|
||||||
|
<iothreadpin iothread='2' cpuset='2-3'/>
|
||||||
|
<iothreadpin iothread='3' cpuset='4-5'/>
|
||||||
|
<iothreadpin iothread='4' cpuset='6-7'/>
|
||||||
|
</cputune>
|
||||||
|
<os>
|
||||||
|
<type arch='x86_64' machine='pc-i440fx-2.11'>hvm</type>
|
||||||
|
<loader readonly='yes' type='pflash'>/usr/share/ovmf/x64/ovmf_code_x64.bin</loader>
|
||||||
|
<nvram>/var/lib/libvirt/qemu/nvram/Windows10_VARS.fd</nvram>
|
||||||
|
<bootmenu enable='no'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<acpi/>
|
||||||
|
<apic/>
|
||||||
|
<hyperv>
|
||||||
|
<relaxed state='on'/>
|
||||||
|
<vapic state='on'/>
|
||||||
|
<spinlocks state='on' retries='8191'/>
|
||||||
|
<vendor_id state='on' value='whatever'/>
|
||||||
|
</hyperv>
|
||||||
|
<kvm>
|
||||||
|
<hidden state='on'/>
|
||||||
|
</kvm>
|
||||||
|
<vmport state='off'/>
|
||||||
|
</features>
|
||||||
|
<cpu mode='host-passthrough' check='none'>
|
||||||
|
<topology sockets='1' cores='4' threads='2'/>
|
||||||
|
<cache level='3' mode='emulate'/>
|
||||||
|
<feature policy='require' name='topoext'/>
|
||||||
|
</cpu>
|
||||||
|
<clock offset='localtime'>
|
||||||
|
<timer name='rtc' tickpolicy='catchup'/>
|
||||||
|
<timer name='pit' tickpolicy='delay'/>
|
||||||
|
<timer name='hpet' present='no'/>
|
||||||
|
<timer name='hypervclock' present='yes'/>
|
||||||
|
</clock>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<pm>
|
||||||
|
<suspend-to-mem enabled='no'/>
|
||||||
|
<suspend-to-disk enabled='no'/>
|
||||||
|
</pm>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='raw' cache='none' io='native'/>
|
||||||
|
<source dev='/dev/nvme1n1'/>
|
||||||
|
<target dev='vdc' bus='virtio'/>
|
||||||
|
<boot order='1'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='raw' cache='none' io='native'/>
|
||||||
|
<source dev='/dev/sda'/>
|
||||||
|
<target dev='vdd' bus='virtio'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='raw' cache='none' io='native'/>
|
||||||
|
<source dev='/dev/sdc'/>
|
||||||
|
<target dev='vde' bus='virtio'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='raw' cache='none' io='native'/>
|
||||||
|
<source dev='/dev/sdb'/>
|
||||||
|
<target dev='vdf' bus='virtio'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='usb' index='0' model='ich9-ehci1'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='usb' index='0' model='ich9-uhci1'>
|
||||||
|
<master startport='0'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='usb' index='0' model='ich9-uhci2'>
|
||||||
|
<master startport='2'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='usb' index='0' model='ich9-uhci3'>
|
||||||
|
<master startport='4'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='pci' index='0' model='pci-root'/>
|
||||||
|
<controller type='ide' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='virtio-serial' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='sata' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='scsi' index='0' model='virtio-scsi'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
|
||||||
|
</controller>
|
||||||
|
<interface type='network'>
|
||||||
|
<mac address='52:54:00:f3:ef:a6'/>
|
||||||
|
<source network='default'/>
|
||||||
|
<model type='virtio'/>
|
||||||
|
<link state='up'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
|
||||||
|
</interface>
|
||||||
|
<interface type='direct'>
|
||||||
|
<mac address='52:54:00:a4:95:88'/>
|
||||||
|
<source dev='enp11s0' mode='bridge'/>
|
||||||
|
<model type='virtio'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0e' function='0x0'/>
|
||||||
|
</interface>
|
||||||
|
<serial type='pty'>
|
||||||
|
<target type='isa-serial' port='0'>
|
||||||
|
<model name='isa-serial'/>
|
||||||
|
</target>
|
||||||
|
</serial>
|
||||||
|
<console type='pty'>
|
||||||
|
<target type='serial' port='0'/>
|
||||||
|
</console>
|
||||||
|
<input type='mouse' bus='ps2'/>
|
||||||
|
<input type='keyboard' bus='ps2'/>
|
||||||
|
<video>
|
||||||
|
<model type='cirrus' vram='16384' heads='1' primary='yes'/>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
|
||||||
|
</video>
|
||||||
|
<hostdev mode='subsystem' type='pci' managed='yes'>
|
||||||
|
<driver name='vfio'/>
|
||||||
|
<source>
|
||||||
|
<address domain='0x0000' bus='0x11' slot='0x00' function='0x0'/>
|
||||||
|
</source>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||||
|
</hostdev>
|
||||||
|
<hostdev mode='subsystem' type='pci' managed='yes'>
|
||||||
|
<driver name='vfio'/>
|
||||||
|
<source>
|
||||||
|
<address domain='0x0000' bus='0x11' slot='0x00' function='0x2'/>
|
||||||
|
</source>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
|
||||||
|
</hostdev>
|
||||||
|
<hostdev mode='subsystem' type='pci' managed='yes'>
|
||||||
|
<driver name='vfio'/>
|
||||||
|
<source>
|
||||||
|
<address domain='0x0000' bus='0x11' slot='0x00' function='0x3'/>
|
||||||
|
</source>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
||||||
|
</hostdev>
|
||||||
|
<hostdev mode='subsystem' type='pci' managed='yes'>
|
||||||
|
<driver name='vfio'/>
|
||||||
|
<source>
|
||||||
|
<address domain='0x0000' bus='0x0f' slot='0x00' function='0x0'/>
|
||||||
|
</source>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
|
||||||
|
</hostdev>
|
||||||
|
<hostdev mode='subsystem' type='pci' managed='yes'>
|
||||||
|
<driver name='vfio'/>
|
||||||
|
<source>
|
||||||
|
<address domain='0x0000' bus='0x0f' slot='0x00' function='0x1'/>
|
||||||
|
</source>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0d' function='0x0'/>
|
||||||
|
</hostdev>
|
||||||
|
<memballoon model='virtio' autodeflate='on'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
|
||||||
|
</memballoon>$$$$
|
||||||
|
<shmem name='looking-glass'>
|
||||||
|
<model type='ivshmem-plain'/>
|
||||||
|
<size unit='M'>64</size>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||||
|
</shmem>
|
||||||
|
</devices>
|
||||||
|
<qemu:commandline>
|
||||||
|
<qemu:arg value='-spice'/>
|
||||||
|
<qemu:arg value='port=5901,addr=127.0.0.1,disable-ticketing'/>
|
||||||
|
</qemu:commandline>
|
||||||
|
</domain>
|
||||||
|
```
|
||||||
|
|
||||||
|
##### /etc/mkinitcpio.conf
|
||||||
|
|
||||||
|
Line 7
|
||||||
|
`MODULES=(vfio vfio_iommu_type1 vfio_pci vfio_virqfd nvidia nvidia_modeset nvidia_uvm )`
|
||||||
|
|
||||||
|
## AMD Passthrough Configuration
|
||||||
|
|
||||||
|
### modprobe.d
|
||||||
|
|
||||||
|
##### /etc/modprobe.d/vfio.conf
|
||||||
|
|
||||||
|
`options vfio-pci ids=1002:67df,1002:aaf0,1022:145a,1022:1456,1022:145c`
|
||||||
|
|
||||||
|
##### /etc/modprobe.d/blacklist.conf
|
||||||
|
|
||||||
|
```
|
||||||
|
blacklist nouveau
|
||||||
|
blacklist lbm-nouveau
|
||||||
|
options nouveau modeset=0
|
||||||
|
alias nouveau off
|
||||||
|
alias lbm-nouveau off
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Linux Host Drivers
|
||||||
|
|
||||||
|
AMD Radeon driver package: `amdgpu`
|
||||||
|
Nvidia driver package: `nvidia`
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue