On Tue, Jun 01, 2021 at 02:56:43PM -0300, Jason Gunthorpe wrote: > On Tue, Jun 01, 2021 at 08:38:00AM +0000, Tian, Kevin wrote: > > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > > Sent: Saturday, May 29, 2021 3:59 AM > > > > > > On Thu, May 27, 2021 at 07:58:12AM +0000, Tian, Kevin wrote: > > > > > > > > 5. Use Cases and Flows > > > > > > > > Here assume VFIO will support a new model where every bound device > > > > is explicitly listed under /dev/vfio thus a device fd can be acquired w/o > > > > going through legacy container/group interface. For illustration purpose > > > > those devices are just called dev[1...N]: > > > > > > > > device_fd[1...N] = open("/dev/vfio/devices/dev[1...N]", mode); > > > > > > > > As explained earlier, one IOASID fd is sufficient for all intended use cases: > > > > > > > > ioasid_fd = open("/dev/ioasid", mode); > > > > > > > > For simplicity below examples are all made for the virtualization story. > > > > They are representative and could be easily adapted to a non-virtualization > > > > scenario. > > > > > > For others, I don't think this is *strictly* necessary, we can > > > probably still get to the device_fd using the group_fd and fit in > > > /dev/ioasid. It does make the rest of this more readable though. > > > > Jason, want to confirm here. Per earlier discussion we remain an > > impression that you want VFIO to be a pure device driver thus > > container/group are used only for legacy application. > > Let me call this a "nice wish". > > If you get to a point where you hard need this, then identify the hard > requirement and let's do it, but I wouldn't bloat this already large > project unnecessarily. > > Similarly I wouldn't depend on the group fd existing in this design > so it could be changed later. I don't think presence or absence of a group fd makes a lot of difference to this design. Having a group fd just means we attach groups to the ioasid instead of individual devices, and we no longer need the bookkeeping of "partial" devices. > > From this comment are you suggesting that VFIO can still keep > > container/ group concepts and user just deprecates the use of vfio > > iommu uAPI (e.g. VFIO_SET_IOMMU) by using /dev/ioasid (which has a > > simple policy that an IOASID will reject cmd if partially-attached > > group exists)? > > I would say no on the container. /dev/ioasid == the container, having > two competing objects at once in a single process is just a mess. Right. I'd assume that for compatibility, creating a container would create a single IOASID under the hood with a compatiblity layer translating the container operations to iosaid operations. > If the group fd can be kept requires charting a path through the > ioctls where the container is not used and /dev/ioasid is sub'd in > using the same device FD specific IOCTLs you show here. Again, I don't think it makes much difference. The model doesn't really change even if you allow both ATTACH_GROUP and ATTACH_DEVICE on the IOASID. Basically ATTACH_GROUP would just be equivalent to attaching all the constituent devices. > I didn't try to chart this out carefully. > > Also, ultimately, something need to be done about compatability with > the vfio container fd. It looks clear enough to me that the the VFIO > container FD is just a single IOASID using a special ioctl interface > so it would be quite rasonable to harmonize these somehow. > > But that is too complicated and far out for me at least to guess on at > this point.. > > > > Still a little unsure why the vPASID is here not on the gva_ioasid. Is > > > there any scenario where we want different vpasid's for the same > > > IOASID? I guess it is OK like this. Hum. > > > > Yes, it's completely sane that the guest links a I/O page table to > > different vpasids on dev1 and dev2. The IOMMU doesn't mandate > > that when multiple devices share an I/O page table they must use > > the same PASID#. > > Ok.. > > Jason > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature