On 2/14/25 20:41, Jason Gunthorpe wrote:
On Fri, Feb 14, 2025 at 01:39:52PM +0800, Baolu Lu wrote:
When the IOMMU is working in scalable mode, PASID and PRI are supported.
ATS will always be enabled, even if the identity domain is attached to
the device, because the PASID might use PRI, which depends on ATS
functionality. This might not be the best choice, but it is the
simplest and functional.
The arm driver keeps track of things and enables ATS when PASIDs are
present
I am not aware of any VT-d hardware implementation that supports
scalable mode but not PASID. If there were one, it would be worthwhile
to add an optimization to avoid enabling ATS during probe if PASID is
not supported.
If any device does not work with the identity domain and ATS enabled,
then we can add a quirk to the driver, as we already have such a
mechanism.
The device should not care, as long as the HW works.. ARM has a weird
quirk where one of the two ways to configure an identity domain does
not work with ATS. If you have something like that as well then you
have to switch ATS off if the IOMMU is in a state where it will not
respond to it.
Otherwise, the HW I'm aware of uses ATS pretty selectively and it may
not make any real difference..
I feel like we should leave "iommu: Move PRI enablement for VF to
iommu driver" out for now, every driver needs this check? AMD
supports SVA and PRI so it needs it too.
Yes, agreed.
Although, I'm wondering now, that check should be on the SVA paths as
well as the iommufd path..
That appears to be a fix.
Thanks,
baolu