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-reattach
after 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=on
in order to enable VT-d support - The
virt_manage_sysfs
selinux 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 |