I am running KVM on Ubuntu 11.10 on an Intel-based machine, with G33 chipset and Q6600 processor (Supports VT-d).
I am having problems when I want to add my PCI TV Card to my virtual machine.
I get this error "No IOMMU found. Unable to assign device "hostdev0"".
Can anyone guide me how to set this up correctly, so my PCI TV Card is passed through to the virtual machine?
I have added this to my configuration file:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address bus='0x03' slot='0x00' function='0x00'/>
</source>
</hostdev>
And this is the device information:
<device>
<name>pci_0000_03_00_0</name>
<parent>pci_0000_00_1c_1</parent>
<driver>
<name>cx23885</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>3</bus>
<slot>0</slot>
<function>0</function>
<product id='0x8852'>CX23885 PCI Video and Audio Decoder</product>
<vendor id='0x14f1'>Conexant Systems, Inc.</vendor>
</capability>
</device>
Thanks for your help ;-)
Intel has made a mess of this as the Vt-d functionality can actually live on the chipset.
http://www.intel.com/assets/pdf/prodbrief/317312.pdf
The Q33 does not have it, but the Q35 does. The criteria for where Vt-d support lives is relative to where your memory controller is. With your CPU, it's not on die, so you have an opportunity to add Vt-d with a chipset upgrade. Chips like the Nehalam however, have integrated memory controllers, so all your memory related features are locked up in the CPU.
http://www.intel.com/Assets/PDF/datasheet/316966.pdf
1.3.12 Intel® Virtualization Technology for Directed I/O (Intel® VT-d) (Intel® 82Q35 GMCH Only) Intel® Virtualization Technology for Directed I/O comprises technology components to support virtualization of platforms based on Intel architecture microprocessors. This document describes the chipset hardware components supporting I/O virtualization that are in the (G)MCH. Intel® VT-d is only supported by the Intel® Q35 Express chipset.
Maybe you can find a deal on a Q35 though I'm guessing it'll be more cost effective in the long run to upgrade both board and chip with an on die memory controller.