> From: Shenming Lu > Sent: Friday, July 16, 2021 8:20 PM > > On 2021/7/16 9:20, Tian, Kevin wrote: > > To summarize, for vIOMMU we can work with the spec owner to > > define a proper interface to feedback such restriction into the guest > > if necessary. For the kernel part, it's clear that IOMMU fd should > > disallow two devices attached to a single [RID] or [RID, PASID] slot > > in the first place. > > > > Then the next question is how to communicate such restriction > > to the userspace. It sounds like a group, but different in concept. > > An iommu group describes the minimal isolation boundary thus all > > devices in the group can be only assigned to a single user. But this > > case is opposite - the two mdevs (both support ENQCMD submission) > > with the same parent have problem when assigned to a single VM > > (in this case vPASID is vm-wide translated thus a same pPASID will be > > used cross both mdevs) while they instead work pretty well when > > assigned to different VMs (completely different vPASID spaces thus > > different pPASIDs). > > > > One thought is to have vfio device driver deal with it. In this proposal > > it is the vfio device driver to define the PASID virtualization policy and > > report it to userspace via VFIO_DEVICE_GET_INFO. The driver understands > > the restriction thus could just hide the vPASID capability when the user > > calls GET_INFO on the 2nd mdev in above scenario. In this way the > > user even doesn't need to know such restriction at all and both mdevs > > can be assigned to a single VM w/o any problem. > > > > The restriction only probably happens when two mdevs are assigned to one > VM, > how could the vfio device driver get to know this info to accurately hide > the vPASID capability for the 2nd mdev when VFIO_DEVICE_GET_INFO? > There is no > need to do this in other cases. > I suppose the driver can detect it via whether two mdevs are opened by a single process. Thanks Kevin