AMD IOMMU v2 Page Tables Getting Wired Up For Linux 6.1
The AMD IOMMU v2 page table support is wired up to implement support for the DMA API using the generic I/O page table framework. This work was summed up in the earlier patch series:
One of the target usecases is to support nested IO page tables where the guest uses the guest IO page table (v2) for translating GVA to GPA, and the hypervisor uses the host I/O page table (v1) for translating GPA to SPA. This is a pre-requisite for supporting the new HW-assisted vIOMMU presented at the KVM Forum 2020.
The KVM Forum 2020 presentation and the motivation for this Linux kernel work by AMD was around the AMD vIOMMU for hardware-assisted IOMMU virtualization available since EPYC 7002 "Rome" processors.
Those AMD IOMMU v2 page table patches are now set for Linux 6.1 as stepping towards the hardware-assisted IOMMU virtualization on EPYC but not yet over the finish line for the mainline kernel. It's long overdue with the hardware support being around since Rome, but at least they are finally nearing the point with having all the bits mainlined. The AMD code was sent in as part of the IOMMU updates for Linux 6.1 including some Intel VT-d code improvements, Apple DART support for M1 Pro and M1 MAX SoCs, and other changes.