Mijn vraag
Ik wil graag beide delen van mijn FireWire PCI kaart doorgeven aan een VM. Dit is een klassieke PCI kaart, in zo'n antiek slot op 33MHz
Helaas gaat het niet goed als ik beide delen doorgeef, ik krijg dan de foutmelding:
Als ik vervolgens slim denk te zijn en de PCI Bridge door te geven dan wil dat ook niet, de foutmelding is dan:
Omdat mijn platform geen interrupt remapping toestaat ben ik verplicht om de volgende regel toe te voegen in /etc/modprobe.d/vfio_iommu_type1.conf, anders wil deze niet meewerken:
Wat doe ik fout? En wat moet ik doen om dit wel werkend te krijgen?
Relevante software en hardware die ik gebruik
Allereerst heb ik gezorgd dat Intel VT-d aan stond, dit was mijn eerste fout
Vervolgens netjes de intel_iommu=on toegevoegd aan de opstartregel van CentOS. Nu zie ik in ieder geval een listing van alle IOMMUs en waar ze voor verantwoordelijk zijn, namelijk:
So far so good! Er is dus één IOMMU voor de hele PCI bus die ik door wil geven, inclusief de PCI Bridge. Als we lspci erbij pakken dan kunnen we al deze devices terugvinden:
En met een lspci -tv zien we ook dat de devices op bus 08, slot 08 ook allemaal onder de eerder genoemde PCI Bridge op 00:1e.0 vallen:
Ik wil graag beide delen van mijn FireWire PCI kaart doorgeven aan een VM. Dit is een klassieke PCI kaart, in zo'n antiek slot op 33MHz
code:
1
2
3
| Error starting domain: internal error: qemu unexpectedly closed the monitor: 2017-08-14T18:55:17.974505Z qemu-kvm: -device vfio-pci,host=08:08.0,id=hostdev1,bus=pci.0,addr=0xd: vfio: Error: Failed to setup INTx fd: Device or resource busy 2017-08-14T18:55:17.996865Z qemu-kvm: -device vfio-pci,host=08:08.0,id=hostdev1,bus=pci.0,addr=0xd: Device initialization failed. 2017-08-14T18:55:17.996894Z qemu-kvm: -device vfio-pci,host=08:08.0,id=hostdev1,bus=pci.0,addr=0xd: Device 'vfio-pci' could not be initialized |
Als ik vervolgens slim denk te zijn en de PCI Bridge door te geven dan wil dat ook niet, de foutmelding is dan:
code:
1
| Error starting domain: Failed to bind PCI device '0000:00:1e.0' to vfio-pci: No such device |
Omdat mijn platform geen interrupt remapping toestaat ben ik verplicht om de volgende regel toe te voegen in /etc/modprobe.d/vfio_iommu_type1.conf, anders wil deze niet meewerken:
code:
1
| options vfio_iommu_type1 allow_unsafe_interrupts=1 |
Wat doe ik fout? En wat moet ik doen om dit wel werkend te krijgen?
Relevante software en hardware die ik gebruik
- CentOS 7.3
- Supermicro X7DWA-N
- Texas Instruments FireWire kaart op PCI
Allereerst heb ik gezorgd dat Intel VT-d aan stond, dit was mijn eerste fout

code:
1
2
3
4
5
6
| $ find /sys/kernel/iommu_groups/ -type l ... /sys/kernel/iommu_groups/12/devices/0000:00:1e.0 /sys/kernel/iommu_groups/12/devices/0000:08:04.0 /sys/kernel/iommu_groups/12/devices/0000:08:08.0 ... |
So far so good! Er is dus één IOMMU voor de hele PCI bus die ik door wil geven, inclusief de PCI Bridge. Als we lspci erbij pakken dan kunnen we al deze devices terugvinden:
code:
1
2
3
4
5
6
| $ lspci ... 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d9) ... 08:04.0 FireWire (IEEE 1394): Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller (rev 01) 08:08.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] |
En met een lspci -tv zien we ook dat de devices op bus 08, slot 08 ook allemaal onder de eerder genoemde PCI Bridge op 00:1e.0 vallen:
code:
1
2
3
4
5
6
| $ lspci -tv -[0000:00]-+-00.0 Intel Corporation 5400 Chipset Memory Controller Hub +-... +-1e.0-[08]--+-04.0 Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller | \-08.0 Texas Instruments TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] \-... |