On Tue, May 06, 2025 at 02:45:00PM +0530, Vasant Hegde wrote: > > +/** > > + * struct iommu_vqueue_alloc - ioctl(IOMMU_VQUEUE_ALLOC) > > + * @size: sizeof(struct iommu_vqueue_alloc) > > + * @flags: Must be 0 > > + * @viommu_id: Virtual IOMMU ID to associate the virtual queue with > > + * @type: One of enum iommu_vqueue_type > > + * @index: The logical index to the virtual queue per virtual IOMMU, for a > > multi > > + * queue model > > + * @out_vqueue_id: The ID of the new virtual queue > > + * @addr: Base address of the queue memory in the guest physical address > > space > > + * @length: Length of the queue memory in the guest physical address space > > + * > > + * Allocate a virtual queue object for a vIOMMU-specific HW-acceleration > > feature > > + * that allows HW to access a guest queue memory described by @addr and > > @length. > > + * It's suggested for VMM to back the queue memory using a single huge > > page with > > + * a proper alignment for its contiguity in the host physical address > > space. The > > + * call will fail, if the queue memory is not contiguous in the physical > > address > > + * space. Upon success, its underlying physical pages will be pinned to > > prevent > > + * VMM from unmapping them in the IOAS, until the virtual queue gets > > destroyed. > > + * > > + * A vIOMMU can allocate multiple queues, but it must use a different > > @index to > > + * separate each allocation, e.g. VCMDQ0, VCMDQ1, ... > > This will handle multiple queues. But AMD vIOMMU needs to comunicate certain > control bit setting which is not related to buffers like "Completion wait > interrupt". > > How do we handle that? extend iommu_queue_alloc() or have different interface?
Do you need a modify queue operation? Jason