Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
iommu/iommufd: Add IOMMU_IOASID_ALLOC/FREE
This patch adds IOASID allocation/free interface per iommufd. When allocating an IOASID, userspace is expected to specify the type and format information for the target I/O page table. This RFC supports only one type (IOMMU_IOASID_TYPE_KERNEL_TYPE1V2), implying a kernel-managed I/O page table with vfio type1v2 mapping semantics. For this type the user should specify the addr_width of the I/O address space and whether the I/O page table is created in an iommu enfore_snoop format. enforce_snoop must be true at this point, as the false setting requires additional contract with KVM on handling WBINVD emulation, which can be added later. Userspace is expected to call IOMMU_CHECK_EXTENSION (see next patch) for what formats can be specified when allocating an IOASID. Open: - Devices on PPC platform currently use a different iommu driver in vfio. Per previous discussion they can also use vfio type1v2 as long as there is a way to claim a specific iova range from a system-wide address space. This requirement doesn't sound PPC specific, as addr_width for pci devices can be also represented by a range [0, 2^addr_width-1]. This RFC hasn't adopted this design yet. We hope to have formal alignment in v1 discussion and then decide how to incorporate it in v2. - Currently ioasid term has already been used in the kernel (drivers/iommu/ ioasid.c) to represent the hardware I/O address space ID in the wire. It covers both PCI PASID (Process Address Space ID) and ARM SSID (Sub-Stream ID). We need find a way to resolve the naming conflict between the hardware ID and software handle. One option is to rename the existing ioasid to be pasid or ssid, given their full names still sound generic. Appreciate more thoughts on this open! Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
- Loading branch information
Showing
3 changed files
with
177 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters