On 2/18/25 21:03, Jason Gunthorpe wrote:
On Sat, Feb 15, 2025 at 05:53:13PM +0800, Baolu Lu wrote:
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.
I mean domains attached to PASIDs that need PRI/ATS/etc
Yeah, that's a better solution. The PCI PRI/ATS features are only
enabled when a domain that requires them is attached to it. I will
consider it in the Intel driver later.
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.
Does SVA have the same issue?
One case I can think of is SVA on SR-IOV VFs. Without the in-progress
iopf refcount patch series, enabling and disabling iopf could be
problematic, because all PRI enablement is switched in the PF, it's
possible that enable and disable operations won't be paired correctly.
Another issue is that a failure or invalid page group response may halt
the PRI interface, which would cause SVA on other VFs to stop working.
So, we should probably disable SVA on VFs for now and re-enable it after
all these issues are resolved.
Thanks,
baolu