See Test_Day:2009-05-07_Virtualization.
This test area is concerned with testing the KVM PCI Device Assignment feature added in Fedora 11.
Known bugs include:
- 499259 - svirt denials breaks KVM PCI device assignment
- 499708 - SELinux blocks libvirtd sysfs writes for virNodeDeviceDettach()/Reattach()/Reset()
- Until this is fixed, all but the nodedev ops test case requires you to run SELinux in permissive mode
- 499352 - Re-enable CONFIG_DMAR_DEFAULT_ON
- You will need to boot the host with intel_iommu=on until this is fixed
- 499267 - Assigning a PCI device using virt-manager/virt-install fails
- Fixed in python-virtinst-0.400.3-8.fc11
- 499386 - libvirt's qemu driver interprets the <hostdev> "managed" attribute incorrectly
- Fixed in libvirt-0.6.2-6.fc11
- 499561 - libvirt does not automatically re-attach an assigned device in the host after guest shutdown
- Workaround is to run
virsh nodedev-reattachafter the guest has shut down
- 499637 - IOMMU: no free domain ids
- This may happen after a lot of testing; workaround is to reboot the host
- 499678 - libvirt should be able to reset a PCI function even if it causes other unused devices/functions to be reset
- multi-function PCI devices without Function Level Reset (FLR) can't currently be used; more code to handle this case is required in libvirt
Prerequisites[edit]
In order to test KVM PCI device assignment, you need:
- a host machine which has Intel VT-d or AMD IOMMU support
- the host booted with
intel_iommu=onin order to enable VT-d support - The
virt_manage_sysfsselinux boolean enabled -setsebool virt_manage_sysfs on - At least libvirt-0.6.2-6.fc11 and python-virtinst-0.400.3-8.fc11 installed
Please upload your smolt profile using smoltSendProfile and add its URL to the table below.
Also, it would be useful to post your PCI bus topology - e.g. post the output of lspci -t -v to Fedora's pastebin.
Tests[edit]
The first thing you need to do is choose which PCI device on your KVM host that you will use for testing. Probably the most obvious to test with is a NIC. You'll need the device's nodedev name, and you can find this with
$> virsh nodedev-list --tree
computer
|
...
+-pci_8086_10bd
| |
| +-net_00_13_20_f5_f9_5a
...
$> virsh nodedev-dumpxml pci_8086_10bd
<device>
<name>pci_8086_10bd</name>
<parent>computer</parent>
<capability type='pci'>
<domain>0</domain>
<bus>0</bus>
<slot>25</slot>
<function>0</function>
<product id='0x10bd'>82566DM-2 Gigabit Network Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
Follow each of these test cases:
- libvirt nodedev operations
- assigning a device using libvirt
- assigning a device using virt-manager
- virt-install --host-device
Results[edit]
If you have problems with any of the tests, file a bug report in bugzilla.
Once you have completed the tests, add your results to the table below.
| User | Smolt | lspci | Nodedev Ops | libvirt | virt-manager | virt-install | Comments |
|---|---|---|---|---|---|---|---|
| Mark McLoughlin | smolt | lspci | PASS | PASS | PASS | PASS | Perfect score! Apart from the known bugs listed above, of course :-) |
| Charles Rose | FAIL | reset of multi-function device fails. 499678 | |||||
| Stanley Merkx | smolt | lspci | PASS | FAIL | Assignment of the device fails. 499259 |
