[PATCH 0/8] Initial support for SMMUv3 nested translation
Mostafa Saleh
smostafa at google.com
Tue Aug 20 01:20:32 PDT 2024
Hi Jason,
On Tue, Aug 06, 2024 at 08:41:13PM -0300, Jason Gunthorpe wrote:
> This brings support for the IOMMFD ioctls:
>
> - IOMMU_GET_HW_INFO
> - IOMMU_HWPT_ALLOC_NEST_PARENT
> - IOMMU_DOMAIN_NESTED
> - ops->enforce_cache_coherency()
>
> This is quite straightforward as the nested STE can just be built in the
> special NESTED domain op and fed through the generic update machinery.
>
> The design allows the user provided STE fragment to control several
> aspects of the translation, including putting the STE into a "virtual
> bypass" or a aborting state. This duplicates functionality available by
> other means, but it allows trivially preserving the VMID in the STE as we
> eventually move towards the VIOMMU owning the VMID.
>
> Nesting support requires the system to either support S2FWB or the
> stronger CANWBS ACPI flag. This is to ensure the VM cannot bypass the
> cache and view incoherent data, currently VFIO lacks any cache flushing
> that would make this safe.
>
> Yan has a series to add some of the needed infrastructure for VFIO cache
> flushing here:
>
> https://lore.kernel.org/linux-iommu/20240507061802.20184-1-yan.y.zhao@intel.com/
>
> Which may someday allow relaxing this further.
>
> Remove VFIO_TYPE1_NESTING_IOMMU since it was never used and superseded by
> this.
>
> This is the first series in what will be several to complete nesting
> support. At least:
> - IOMMU_RESV_SW_MSI related fixups
> - VIOMMU object support to allow ATS invalidations
> - vCMDQ hypervisor support for direct invalidation queue assignment
> - KVM pinned VMID using VIOMMU for vBTM
> - Cross instance S2 sharing
> - Virtual Machine Structure using VIOMMU (for vMPAM?)
> - Fault forwarding support through IOMMUFD's fault fd for vSVA
>
> It is enough to allow significant amounts of qemu work to progress.
>
Are there any qemu patches to tests this?
As I am confused with some of the user space bits and that would help.
Thanks,
Mostafa
> This is on github: https://github.com/jgunthorpe/linux/commits/smmuv3_nesting
>
> Jason Gunthorpe (5):
> vfio: Remove VFIO_TYPE1_NESTING_IOMMU
> iommu/arm-smmu-v3: Use S2FWB when available
> iommu/arm-smmu-v3: Report IOMMU_CAP_ENFORCE_CACHE_COHERENCY for CANWBS
> iommu/arm-smmu-v3: Implement IOMMU_HWPT_ALLOC_NEST_PARENT
> iommu/arm-smmu-v3: Support IOMMU_DOMAIN_NESTED
>
> Nicolin Chen (3):
> ACPI/IORT: Support CANWBS memory access flag
> iommu/arm-smmu-v3: Support IOMMU_GET_HW_INFO via struct
> arm_smmu_hw_info
> iommu/arm-smmu-v3: Add arm_smmu_cache_invalidate_user
>
> drivers/acpi/arm64/iort.c | 13 +
> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 398 ++++++++++++++++++--
> drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 27 ++
> drivers/iommu/arm/arm-smmu/arm-smmu.c | 16 -
> drivers/iommu/io-pgtable-arm.c | 24 +-
> drivers/iommu/iommu.c | 10 -
> drivers/iommu/iommufd/vfio_compat.c | 7 +-
> drivers/vfio/vfio_iommu_type1.c | 12 +-
> include/acpi/actbl2.h | 1 +
> include/linux/io-pgtable.h | 2 +
> include/linux/iommu.h | 54 ++-
> include/uapi/linux/iommufd.h | 79 ++++
> include/uapi/linux/vfio.h | 2 +-
> 13 files changed, 572 insertions(+), 73 deletions(-)
>
>
> base-commit: e5e288d94186b266b062b3e44c82c285dfe68712
> --
> 2.46.0
>
More information about the linux-arm-kernel
mailing list