VirtIO-IOMMU Comes To x86 With Linux 5.14
The VirtIO-IOMMU driver now works on x86/x86_64 hardware with the Linux 5.14 kernel.
Added two years ago to the Linux kernel was the VirtIO-IOMMU driver (merged in Linux 5.3) with an original focus on AArch64 for hardware for paravirtual IOMMU after being worked on out-of-tree for years prior. Now with Linux 5.14 in 2021 the VirtIO-IOMMU code is adapted to work on x86 Intel/AMD hardware too.
The IOMMU specification within VirtIO allows for the device to manage DMA from one or more end points and can act as a proxy for physical IOMMUs managing devices assigned to the guest. VirtIO-IOMMU can deal with managing both emulated and para-virtualized devices.
This x86 support for VirtIO-IOMMU comes after supporting the new VIOT ACPI table. The ACPI Virtual I/O Translation Table (VIOT) is used for describing the topology of para-virtual platforms and in this case on x86 is used for describing the relation between virtio-iommu and endpoints.
Besides virtio-iommu for x86, the IOMMU changes for Linux 5.14 also include Arm SMMU updates, Intel VT-d now supporting asynchronous nested capabilities, and a variety of other improvements. Also one new is the "amd_iommu=force_enable" kernel command line option for forcing IOMMU on platforms where it's normally problematic. AMD Stoney is among the platforms often exhibiting buggy IOMMU behavior.
Added two years ago to the Linux kernel was the VirtIO-IOMMU driver (merged in Linux 5.3) with an original focus on AArch64 for hardware for paravirtual IOMMU after being worked on out-of-tree for years prior. Now with Linux 5.14 in 2021 the VirtIO-IOMMU code is adapted to work on x86 Intel/AMD hardware too.
The IOMMU specification within VirtIO allows for the device to manage DMA from one or more end points and can act as a proxy for physical IOMMUs managing devices assigned to the guest. VirtIO-IOMMU can deal with managing both emulated and para-virtualized devices.
This x86 support for VirtIO-IOMMU comes after supporting the new VIOT ACPI table. The ACPI Virtual I/O Translation Table (VIOT) is used for describing the topology of para-virtual platforms and in this case on x86 is used for describing the relation between virtio-iommu and endpoints.
Besides virtio-iommu for x86, the IOMMU changes for Linux 5.14 also include Arm SMMU updates, Intel VT-d now supporting asynchronous nested capabilities, and a variety of other improvements. Also one new is the "amd_iommu=force_enable" kernel command line option for forcing IOMMU on platforms where it's normally problematic. AMD Stoney is among the platforms often exhibiting buggy IOMMU behavior.
9 Comments