On Mon, 6 Aug 2018 09:34:28 -0700Actually, this is the key problem we concerned. Our logic was: The PASID refer to the connection between the device and the process. So the resource should be allocated only when the process "make use of" the device. This strategy also bring another advantage that the kernel driver can also make use of the resource if no user application open it.
"Raj, Ashok" <ashok.raj@xxxxxxxxx> wrote:
On Mon, Aug 06, 2018 at 09:49:40AM -0600, Alex Williamson wrote:The iommu group is the unit of ownership, a vfio group mirrors an iommu
On Mon, 6 Aug 2018 09:40:04 +0800Can vfio dev's created representing an mdev be shared between several
Kenneth Lee <liguozhu@xxxxxxxxxxxxx> wrote:
1. It supports thousands of processes. Take zip accelerator as an example, anyEach mdev is a device, regardless of whether there are hardware
application need data compression/decompression will need to interact with the
accelerator. To support that, you have to create tens of thousands of mdev for
their usage. I don't think it is a good idea to have so many devices in the
system.
resources committed to the device, so I don't understand this argument.
2. The application does not want to own the mdev for long. It just need anI don't see how the length of the usage plays a role here either. Are
access point for the hardware service. If it has to interact with an management
agent for allocation and release, this makes the problem complex.
you concerned that the time it takes to create and remove an mdev is
significant compared to the usage time? Userspace is certainly welcome
to create a pool of devices, but why should it be the kernel's
responsibility to dynamically assign resources to an mdev? What's the
usage model when resources are unavailable? It seems there's
complexity in either case, but it's generally userspace's responsibility
to impose a policy.
processes? It doesn't need to be exclusive.
The path to hardware is established by the processes binding to SVM and
IOMMU ensuring that the PASID is plummed properly. One can think the
same hardware is shared between several processes, hardware knows the
isolation is via the PASID.
For these cases it isn't required to create a dev per process.
group, therefore a vfio group only allows a single open(2). A group
also represents the minimum isolation set of devices, therefore devices
within a group are not considered isolated and must share the same
address space represented by the vfio container. Beyond that, it is
possible to share devices among processes, but (I think) it generally
implies a hierarchical rather than peer relationship between
processes. Thanks,
Alex