[virt-tools-list] pci passthrough fail on fedora 15/kvm/qemu/virt-manager hosting win 7 (all 64 bit)

erik flister erik.flister at gmail.com
Tue Sep 20 04:19:36 UTC 2011


AMD phenom II X6 1075T proc
ASUS M4A87TD mobo
BIOS ver 2001 (built 3/8/11)

advanced/cpu config/secure virtual machine mode enabled in BIOS

not sure if this turns on iommu, how do i verify?

/proc/cpuinfo has hits for svm but not iommu or vmx.

> dmesg | grep -i iommu
[    0.000000] Please enable the IOMMU option in the BIOS setup
[    1.515596] PCI-DMA: using GART IOMMU.
[    1.515599] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture

note my pci cards have windows drivers, but not linux drivers as far as i know.

i have latest yummed kvm/qemu/virt-manager.

i am using this virtualization method:
http://www.techotopia.com/index.php/Running_Windows_on_Fedora_Using_KVM_Virtualization

i didn't know to disconnect the pci cards from the host before adding
them to the guest until finding:
http://docs.fedoraproject.org/en-US/Fedora/13/html/Virtualization_Guide/sect-Virtualization-PCding_a_PCI_device_to_a_host.html

> lspci

02:06.0 Unassigned class [ff00]: National Instruments PCI-6110
02:07.0 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller
02:07.1 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller
02:07.2 Parallel controller: NetMos Technology PCI 9865 Multi-I/O Controller

> lspci -n

02:06.0 ff00: 1093:14e0
02:07.0 0700: 9710:9865
02:07.1 0700: 9710:9865
02:07.2 0701: 9710:9865

> virsh nodedev-list | grep pci

pci_0000_02_06_0
pci_0000_02_07_0
pci_0000_02_07_1
pci_0000_02_07_2

> sudo virsh nodedev-dettach pci_0000_02_06_0
Device pci_0000_02_06_0 dettached


but then, after adding it to the guest and trying to boot it, i get:

Error starting domain: this function is not supported by the
connection driver: Unable to reset PCI device 0000:02:06.0: this
function is not supported by the connection driver: Active
0000:02:07.0 devices on bus with 0000:02:06.0, not doing bus reset

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 45, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/engine.py", line 959, in asyncfunc
    vm.startup()
  File "/usr/share/virt-manager/virtManager/domain.py", line 1128, in startup
    self._backend.create()
  File "/usr/lib64/python2.7/site-packages/libvirt.py", line 330, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)



if i disable the other devices on bus 02 and add them to the guest:
> sudo virsh nodedev-dettach pci_0000_02_07_0
Device pci_0000_02_07_0 dettached

> sudo virsh nodedev-dettach pci_0000_02_07_1
Device pci_0000_02_07_1 dettached

> sudo virsh nodedev-dettach pci_0000_02_07_2
Device pci_0000_02_07_2 dettached

i then get this error on booting the guest (but with the same stack
trace as above):

Error starting domain: cannot send monitor command
'{"execute":"qmp_capabilities"}': Connection reset by peer

and then networking fails on the host until i reboot, and fedora won't
even shutdown all the way (i have to do a hard reboot by holding down
the power button).

any idea how i can fix this?  why isn't detaching the device
automatically done when it is added to the guest?  even if i get this
working, it seems i will have to detach stuff every time i reboot the
host?  finally, in this case, i actually do want to give everything on
bus 02 to the guest, but what if i didn't?

thanks for your help!
-erik


see also iommu/bios stuff here:
http://docs.fedoraproject.org/en-US/Fedora/13/html-single/Virtualization_Guide/index.html




More information about the virt-tools-list mailing list