On Fri, Jun 04, 2021 at 11:10:53PM +0000, Tian, Kevin wrote: > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Sent: Friday, June 4, 2021 8:09 PM > > > > On Fri, Jun 04, 2021 at 06:37:26AM +0000, Tian, Kevin wrote: > > > > From: Jason Gunthorpe > > > > Sent: Thursday, June 3, 2021 9:05 PM > > > > > > > > > > > > > > > > 3) Device accepts any PASIDs from the guest. No > > > > > > vPASID/pPASID translation is possible. (classic vfio_pci) > > > > > > 4) Device accepts any PASID from the guest and has an > > > > > > internal vPASID/pPASID translation (enhanced vfio_pci) > > > > > > > > > > what is enhanced vfio_pci? In my writing this is for mdev > > > > > which doesn't support ENQCMD > > > > > > > > This is a vfio_pci that mediates some element of the device interface > > > > to communicate the vPASID/pPASID table to the device, using Max's > > > > series for vfio_pci drivers to inject itself into VFIO. > > > > > > > > For instance a device might send a message through the PF that the VF > > > > has a certain vPASID/pPASID translation table. This would be useful > > > > for devices that cannot use ENQCMD but still want to support migration > > > > and thus need vPASID. > > > > > > I still don't quite get. If it's a PCI device why is PASID translation required? > > > Just delegate the per-RID PASID space to user as type-3 then migrating the > > > vPASID space is just straightforward. > > > > This is only possible if we get rid of the global pPASID allocation > > (honestly is my preference as it makes the HW a lot simpler) > > > > In this proposal global vs. per-RID allocation is a per-device policy. > for vfio-pci it can always use per-RID (regardless of whether the > device is partially mediated or not) and no vPASID/pPASID conversion. > Even for mdev if no ENQCMD we can still do per-RID conversion. > only for mdev which has ENQCMD we need global pPASID allocation. > > I think this is the motivation you explained earlier that it's not good > to have one global PASID allocator in the kernel. per-RID vs. global > should be selected per device. I thought we concluded this wasn't possible because the guest could choose to bind the same vPASID to a RID and to a ENQCMD device and then we run into trouble? Are are you saying that a RID device gets a complete dedicated table and can always have a vPASID == pPASID? In any event it needs clear explanation in the next RFC Jason