Features/VT-d: Difference between revisions

From QEMU
(Init VT-d page. Also, testing write permission.)
 
(A init page for vtd and basic usage)
Line 1: Line 1:
= Introduction =
= Introduction =


This page introduces the basic usage of Intel vIOMMU (VT-d) emulation in QEMU.
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

References