>> So the driver needs to use flush/drain operations to make sure all
>> the in-flight work has completed before releasing/re-using the PASID.
>> 
> Are you suggesting we should let driver also hold a reference of the
> PASID?

The sequence for bare metal is:

        process is queuing requests to DSA
        process exits (either deliberately, or crashes, or is killed)
        kernel does exit processing
        DSA driver is called as part of tear down of "mm"
                issues drain/flush commands to ensure that all
                queued operations on the PASID for this mm have
                completed
        PASID can be freed

There's a 1:1 map from "mm" to PASID ... so reference counting seems
like overkill. Once the kernel is in the "exit" path, we know that no more
work can be queued using this PASID.

-Tony
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to