[PATCH 0/9] iommu/amd: Add AMD IOMMU emulation support for SEV-SNP guest kernel

From: Suravee Suthikulpanit
Date: Tue Apr 30 2024 - 11:25:19 EST


To boot a VM w/ x2APIC ID > 255, guest interrupt remapping emulation
is required. For SEV guest, this can be achieved using an emulated
AMD IOMMU.

In order to support emulated AMD IOMMU in SEV guest, memory pages used
by the guest IOMMU data structures must be in decrypted mode. Also GPAs
for these pages must not have the memory encryption bit set.

Testing:
- Booting Linux SEV guest w/ 512 vcpus w/ QEMU emulated amd-iommu with
qemu-system-x86_64 option: -device amd-iommu,intremap=on,xtsup=on
(emulated devices only for now).

GIT repos:
* https://github.com/AMDESE/linux-iommu/tree/iommu_next_sev-iommu-v1

Thanks,
Suravee

Suravee Suthikulpanit (9):
iommu/amd: Introduce helper functions for managing IOMMU memory
iommu/amd: Convert Device Table pointer to use struct amd_iommu_mem
iommu/amd: Convert Command Buffer pointer to use struct amd_iommu_mem
iommu/amd: Convert Completion-Wait Semaphore pointer to use struct
amd_iommu_mem
iommu/amd: Convert Event Log pointer to use struct amd_iommu_mem
iommu/amd: Convert PPR Log pointer to use the struct amd_iommu_mem
iommu/amd: Remove iommu_alloc_4k_pages() helper function
iommu/amd: Decrypt interrupt remapping table for AMD IOMMU emulation
in SEV guest
iommu/amd: Set default domain to IDENTITY_DOMAIN when running in SEV
guest

drivers/iommu/amd/amd_iommu.h | 31 +++++-
drivers/iommu/amd/amd_iommu_types.h | 28 ++++--
drivers/iommu/amd/init.c | 144 +++++++++++++++-------------
drivers/iommu/amd/iommu.c | 133 +++++++++++++++++++------
drivers/iommu/amd/ppr.c | 22 +++--
5 files changed, 246 insertions(+), 112 deletions(-)

--
2.34.1