Features/VT-d: Difference between revisions
(Init VT-d page. Also, testing write permission.) |
(A init page for vtd and basic usage) |
||
Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
This page | This page talks about VT-d emulation (guest vIOMMU) in QEMU, and all the related stuffs. | ||
Please see the '''References''' section for detailed information related to the technology. | |||
= Usage = | |||
== General Use == | |||
The guest vIOMMU is a general device in QEMU. Currently only Q35 platform supports guest vIOMMU. Here is a simplest example to boot a Q35 machine with an e1000 card and a guest vIOMMU: | |||
qemu-system-x86_64 -machine q35,accl=kvm,kernel-irqchip=split -m 2G \ | |||
-device intel-iommu,intremap=on \ | |||
-netdev user,id=net0 -device e1000,netdev=net0 \ | |||
$IMAGE_PATH | |||
Here '''intremap=[on|off]''' shows whether the guest vIOMMU will support interrupt remapping. To fully enable vIOMMU functionality, we need to provide '''intremap=on''' here. Currently, interrupt remapping does not support full kernel irqchip, only "split" and "off" are supported. | |||
Most of the full emulated devices (like e1000 mentioned above) should be able to work seamlessly now with Intel vIOMMU. However there are some special devices that need extra cares. These devices are: | |||
* Assigned devices (like, vfio-pci) | |||
* Virtio devices (like, virtio-net-pci) | |||
We'll mention them seperately later. | |||
== With Assigned Devices == | |||
TBD | |||
== With Virtio Devices == | |||
TBD | |||
= References = | |||
* [https://software.intel.com/en-us/blogs/2009/06/25/understanding-vt-d-intel-virtualization-technology-for-directed-io Understanding Intel VT-d] | |||
* [http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/vt-directed-io-spec.pdf VT-d Specification] |
Revision as of 04:13, 23 March 2017
Introduction
This page talks about VT-d emulation (guest vIOMMU) in QEMU, and all the related stuffs.
Please see the References section for detailed information related to the technology.
Usage
General Use
The guest vIOMMU is a general device in QEMU. Currently only Q35 platform supports guest vIOMMU. Here is a simplest example to boot a Q35 machine with an e1000 card and a guest vIOMMU:
qemu-system-x86_64 -machine q35,accl=kvm,kernel-irqchip=split -m 2G \ -device intel-iommu,intremap=on \ -netdev user,id=net0 -device e1000,netdev=net0 \ $IMAGE_PATH
Here intremap=[on|off] shows whether the guest vIOMMU will support interrupt remapping. To fully enable vIOMMU functionality, we need to provide intremap=on here. Currently, interrupt remapping does not support full kernel irqchip, only "split" and "off" are supported.
Most of the full emulated devices (like e1000 mentioned above) should be able to work seamlessly now with Intel vIOMMU. However there are some special devices that need extra cares. These devices are:
- Assigned devices (like, vfio-pci)
- Virtio devices (like, virtio-net-pci)
We'll mention them seperately later.
With Assigned Devices
TBD
With Virtio Devices
TBD