KVM error with device pass through

jwbensley asked:

I am running the following command booting a Debian live CD passing a host PCI device to the guest as a test and KVM errors out;

kvm  -m 512 -boot c -net none -hda /media/AA502592502565F3/debian.iso -device pci-assign,host=07:00.0
PCI region 1 at address 0xf7920000 has size 0x80, which is not a multiple of 4K. You might experience some performance hit due to that.
No IOMMU found.  Unable to assign device "(null)"
kvm: -device pci-assign,host=07:00.0: Device 'pci-assign' could not be initialized

lspci | grep 07
07:00.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74)

I shoved an old spare NIC into my motherboard to test PCI pass through. I have searched the Internet with Goolge and found that errors relating to “No IOMMU found” often mean the PCI device is not supported by KVM.

Does KVM have to support the device being “passed-through”? I though the point was to pass the device through and let the guest worry about it? Ultimately I want to pass-through a PCI random number generator, is this not going to be possible with KVM?

Thank you.

My answer:


PCI passthrough requires CPU/motherboard features to be explicitly enabled in the system BIOS.

AMD

For AMD processors, you must enable IOMMU in the system BIOS.

Intel

For Intel processors, you must:

  1. Enable VT-d in the system BIOS.
  2. You may also need to add intel_iommu=on to the kernel boot command line.

For more information, see the KVM wiki.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.