On Sat, February 4, 2012 10:39, Nenad Opsenica wrote:
On 02/03/2012 05:32 PM, James B. Byrne wrote:
Where does this go inside the rest of the guest configuration?
virt-manager GUI places PCI device pass-through inside <devices> ...
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualiza...
I have followed the instructions in the RedHat reference above to the best of my ability to understand them. I add the pci multi-port serial io card through virt-manager and it was indeed entered into the virtual machine's configuration file inside the <devices> tag:
<hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </hostdev>
However, when I try and start the virtual machine I get this error:
Error starting domain: internal error Unable to reset PCI device 0000:00:03.0: no FLR, PM reset or bus reset available
Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 44, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in tmpcb callback(*args, **kwargs) File "/usr/share/virt-manager/virtManager/domain.py", line 1050, in startup self._backend.create() File "/usr/lib64/python2.6/site-packages/libvirt.py", line 511, in create if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self) libvirtError: internal error Unable to reset PCI device 0000:00:03.0: no FLR, PM reset or bus reset available
The steps I followed were:
1. Check VT-D extensions available and enabled in BIOS - yes
2. Restart virtual host - yes
3. Identify device - yes <address domain='0x000' bus='0x00' slot='0x03' function='0x0'/>
4. Add device to virtual machine configuration - yes . . . <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </hostdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices> </domain>
5. Enable SELinux boolean - yes getsebool virt_use_sysfs virt_use_sysfs --> on
6. Start virtual machine - fails
Am I making any obvious errors? Has anyone here configured and managed to get a multi-port serial card working with a virtual guest?
Take a look at http://wiki.xensource.com/xenwiki/VTdHowTo
Two things in particular about PCI passthrough:
- Only devices with FLR capabilities are supported. - Some motherboards are buggy. They advertised that they support Vt-d but do not correctly handle it (those with a broken ACPI DMAR table)
I think lspci -vv will tell you if the device supports FLR. It will show 'FLReset+' I believe.