> From: Jacob Pan <jacob.jun.pan@xxxxxxxxxxxxxxx> > Sent: Sunday, February 28, 2021 6:01 AM > > I/O Address Space ID (IOASID) core code was introduced in v5.5 as a generic > kernel allocator service for both PCIe Process Address Space ID (PASID) and > ARM SMMU's Substream ID. IOASIDs are used to associate DMA requests > with > virtual address spaces, including both host and guest. > > In addition to providing basic ID allocation, ioasid_set was defined as a > token that is shared by a group of IOASIDs. This set token can be used > for permission checking, but lack some features to address the following > needs by guest Shared Virtual Address (SVA). > - Manage IOASIDs by group, group ownership, quota, etc. > - State synchronization among IOASID users (e.g. IOMMU driver, KVM, > device > drivers) > - Non-identity guest-host IOASID mapping > - Lifecycle management > > This patchset introduces the following extensions as solutions to the > problems above. > - Redefine and extend IOASID set such that IOASIDs can be managed by > groups/pools. > - Add notifications for IOASID state synchronization > - Extend reference counting for life cycle alignment among multiple users > - Support ioasid_set private IDs, which can be used as guest IOASIDs > - Add a new cgroup controller for resource distribution > > Please refer to Documentation/admin-guide/cgroup-v1/ioasids.rst and > Documentation/driver-api/ioasid.rst in the enclosed patches for more > details. > > Based on discussions on LKML[1], a direction change was made in v4 such > that > the user interfaces for IOASID allocation are extracted from VFIO > subsystem. The proposed IOASID subsystem now consists of three > components: > 1. IOASID core[01-14]: provides APIs for allocation, pool management, > notifications, and refcounting. > 2. IOASID cgroup controller[RFC 15-17]: manage resource distribution[2]. > 3. IOASID user[RFC 18]: provides user allocation interface via /dev/ioasid > > This patchset only included VT-d driver as users of some of the new APIs. > VFIO and KVM patches are coming up to fully utilize the APIs introduced > here. > > [1] https://lore.kernel.org/linux-iommu/1599734733-6431-1-git-send-email- > yi.l.liu@xxxxxxxxx/ > [2] Note that ioasid quota management code can be removed once the > IOASIDs > cgroup is ratified. > > You can find this series, VFIO, KVM, and IOASID user at: > https://github.com/jacobpan/linux.git ioasid_v4 > (VFIO and KVM patches will be available at this branch when published.) VFIO and QEMU series are listed below: VFIO: https://lore.kernel.org/linux-iommu/20210302203545.436623-1-yi.l.liu@xxxxxxxxx/ QEMU: https://lore.kernel.org/qemu-devel/20210302203827.437645-1-yi.l.liu@xxxxxxxxx/T/#t Regards, Yi Liu