Re: [RFC] /dev/ioasid uAPI proposal
From: Jason Gunthorpe <jgg@nvidia.com>
Date: 2021-06-02 16:07:15
Also in:
linux-iommu, lkml
On Wed, Jun 02, 2021 at 04:52:02PM +0800, Jason Wang wrote:
在 2021/6/2 上午4:28, Jason Gunthorpe 写道:quoted
quoted
I summarized five opens here, about: 1) Finalizing the name to replace /dev/ioasid; 2) Whether one device is allowed to bind to multiple IOASID fd's; 3) Carry device information in invalidation/fault reporting uAPI; 4) What should/could be specified when allocating an IOASID; 5) The protocol between vfio group and kvm; For 1), two alternative names are mentioned: /dev/iommu and /dev/ioas. I don't have a strong preference and would like to hear votes from all stakeholders. /dev/iommu is slightly better imho for two reasons. First, per AMD's presentation in last KVM forum they implement vIOMMU in hardware thus need to support user-managed domains. An iommu uAPI notation might make more sense moving forward. Second, it makes later uAPI naming easier as 'IOASID' can be always put as an object, e.g. IOMMU_ALLOC_IOASID instead of IOASID_ALLOC_IOASID.:)I think two years ago I suggested /dev/iommu and it didn't go very far at the time.It looks to me using "/dev/iommu" excludes the possibility of implementing IOASID in a device specific way (e.g through the co-operation with device MMU + platform IOMMU)?
This is intended to be the 'drivers/iommu' subsystem though. I don't want to see pluggabilit here beyoned what drivers/iommu is providing. If someone wants to do a something complicated through this interface then they need to make a drivers/iommu implementation. Or they need to use the mdev-esque "SW TABLE" mode when their driver attaches to the interface. If this is good enough or not for a specific device is an entirely other question though
What's more, ATS spec doesn't forbid the device #PF to be reported via a device specific way.
And if this is done then a kernel function indicating page fault should be triggered on the ioasid handle that the device has. It is still drivers/iommu functionality Jason