On Thu, Sep 05, 2024 at 10:10:38AM -0700, Nicolin Chen wrote:
On Thu, Sep 05, 2024 at 12:53:02PM -0300, Jason Gunthorpe wrote:
On Tue, Aug 27, 2024 at 09:59:39AM -0700, Nicolin Chen wrote:
+/**
- struct iommu_viommu_alloc - ioctl(IOMMU_VIOMMU_ALLOC)
- @size: sizeof(struct iommu_viommu_alloc)
- @flags: Must be 0
- @type: Type of the virtual IOMMU. Must be defined in enum iommu_viommu_type
- @dev_id: The device to allocate this virtual IOMMU for
@dev_id: The device's physical IOMMU will be used to back t he vIOMMU
- @hwpt_id: ID of a nesting parent HWPT to associate to
A nesting parent HWPT that will provide translation for an vIOMMU DMA
- @out_viommu_id: Output virtual IOMMU ID for the allocated object
- Allocate a virtual IOMMU object that holds a (shared) nesting parent HWPT
Allocate a virtual IOMMU object that represents the underlying physical IOMMU's virtualization support. The vIOMMU object is a security isolated slice of the physical IOMMU HW that is unique to a specific VM. Operations global to the IOMMU are connected to the vIOMMU, such as:
- Security namespace for guest owned ID, eg guest controlled cache tags
- Virtualization of various platforms IDs like RIDs and others
- direct assigned invalidation queues
- direct assigned interrupts
- non-affiliated event reporting
- Delivery of paravirtualized invalidation
Ack.
Also write something about the HWPT..
Looks like you prefer using "vIOMMU" v.s. "VIOMMU"? I would go through all the patches (QEMU including) to keep that aligned.
Yeah, VIOMMU just for all-caps constants
Jason