nova/releasenotes/notes/guest-iommu-device-4795c3a060aca424.yaml
Stephen Finucane 14e3b352c2 libvirt: Add vIOMMU device to guest
Implementation for BP/libvirt-viommu-device.
With provide `hw:viommu_model` property to extra_specs or
`hw_viommu_model` to image property. will enable viommu to libvirt
guest.

[1] https://www.berrange.com/posts/2017/02/16/setting-up-a-nested-kvm-guest-for-developing-testing-pci-device-assignment-with-numa/
[2] https://review.opendev.org/c/openstack/nova-specs/+/840310

Implements: blueprint libvirt-viommu-device
Change-Id: Ief9c550292788160433a28a7a1c36ba38a6bc849
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2022-09-01 04:50:16 +08:00

22 lines
1.1 KiB
YAML

---
features:
- |
The Libvirt driver can now add a virtual IOMMU device
to all created guests, when running on an x86 host and using the Q35
machine type or on AArch64.
To enable this, provide `hw:viommu_model` in flavor extra
spec or equivalent image metadata property `hw_viommu_model` and with the
guest CPU architecture and OS allows, we will enable viommu in Libvirt
driver. Support values intel|smmuv3|virtio|auto. Default to ``auto``.
Which ``auto`` will automatically select ``virtio`` if Libvirt supports it,
else ``intel`` on X86 (Q35) and ``smmuv3`` on AArch64.
vIOMMU config will raise invalid exception if the guest architecture is
neither X86 (Q35) or AArch64.
Note that, enable vIOMMU might introduce significant performance overhead.
You can see performance comparision table from
`AMD vIOMMU session on KVM Forum 2021`_.
For above reason, vIOMMU should only be enable for workflow that require it.
.. _`AMD vIOMMU session on KVM Forum 2021`: https://static.sched.com/hosted_files/kvmforum2021/da/vIOMMU%20KVM%20Forum%202021%20-%20v4.pdf